丰富的数据库前端 - 如何正确处理低质量网络?

丰富的数据库前端 - 如何正确处理低质量网络?

我对数据库编程的经验非常有限,而且我访问数据库的应用程序都很简单 :)。直到现在 :(。我需要创建一个中型桌面应用程序(它被称为富客户端?),它将使用网络上的数据库在多个用户之间共享数据。我可能会使用 C# 和 MSSQL/MySQL/SQLite。

我进行了一些路测,发现在低质量的网络上,数据库访问并不那么顺畅。在一家公司的局域网中,网络上传输的数据很多,服务器负载恒定,因此,一个简单的 INSERT 或 SELECT SQL 查询需要 1-2 分钟,甚至会因超时/网络错误而失败,这种情况很常见。

有没有处理这种情况的最佳实践?当然,我可以将我的应用程序拆分为 GUI 线程和 DB 线程,这样网络问题就不会导致 GUI 冻结。但是如果出现大量网络错误该怎么办?过于频繁地向用户显示它们不是很好 :(。我正在考虑在运行我的应用程序的每台计算机上自动创建数据库的本地副本:首先更新本地数据库并在后台同步它,在网络错误时简单重试。这将允许应用程序在网络出现严重滞后/问题时正常运行。

有什么提示和流行语可以让我参考吗?也许是一些我不知道的最佳实践 :)

答案1

您可能真的想检查一下内部网络运行如此缓慢的原因。如果一个简单的 select 语句需要 1-2 分钟才能完成,那么听起来网络配置存在严重问题。

就最佳实践而言,数据库服务器的马力将是一件好事。处理器越快,内存越多,处理数据的工作量就越大。大多数数据库将运行一次查询,然后存储该查询的执行计划,因此对于之后的所有人来说,它都会更快。

如果你无法对网络配置做任何事情,你总是可以在断开连接环境。如果要进行大量数据操作,这可能不是最好的选择。考虑使用数据集用于在数据从数据库中提取后保存它。

这是很多信息,希望可以帮助到一些人。

答案2

如果你有

数据库编程经验非常有限

这是一个

常见的情况是,一个简单的 INSERT 或 SELECT SQL 查询将需要 1-2 分钟,甚至因超时/网络错误而失败。

那么你的问题可能不是网络。在遇到网络问题之前,我会考虑在数据库工作、查询优化和编码实践方面获得更多经验。在我看来,破解一个相当完善的网络(几乎没有经验)要比破解一个可以访问数据库的工作程序容易得多。

相关内容