我有一个非常有限的数据库编程经验,我的应用程序访问数据库是简单的:)。 到现在为止:(我需要创build一个中等大小的桌面应用程序(它被称为富客户端?),它将使用networking上的数据库来共享多个用户之间的数据,很可能我会使用C#和MSSQL / MySQL / SQLite。
我进行了一些驱动器testing,发现在低质量networking上数据库访问并不那么顺利。 在一家公司的局域网中,大量的数据通过networking传输,服务器负载不断,因此,一个简单的INSERT或SELECT SQL查询需要1-2分钟,甚至出现超时/networking错误。
处理这种情况是否有最佳做法? 当然,我可以将我的应用程序分成GUI线程和数据库线程,这样networking问题不会导致冻结的GUI。 但如何处理大量的networking错误? 向用户显示他们往往不会很好:(我正在考虑在我的应用程序运行的每台计算机上自动创build数据库的本地副本:首先更新本地数据库并在后台同步它,然后简单地重试networking错误。如果networking有很大的滞后/问题,这将允许应用程序运行事件。
任何提示和stream行语什么我可以看看? 也许这是一些已经可用的最佳实践,我不知道:)
您可能实际上想要检查内部networking运行如此缓慢的原因。 如果一个简单的select语句需要1-2分钟才能完成,听起来好像networkingconfiguration有严重问题。
就你的最佳实践而言,数据库服务器上的马力将是一件好事。 处理器速度越快,处理数据的工作量越多,内存就越多。 大多数数据库将运行一次查询,然后在那之后将其存储在同一查询的执行计划中,这样每个人都会更快。
如果您对networkingconfiguration无能为力,您可以始终在断开连接的环境中工作 。 如果要进行大量的数据处理,可能不是最好的办法。 从数据库中取出数据后,使用DataSets来保存数据。
这是很多的信息,希望它有助于一些。
如果你有
数据库编程经验非常有限
这是一个
常见的情况是,一个简单的INSERT或SELECT SQL查询将花费1-2分钟,甚至因超时/networking错误而失败。
那么你的问题可能不是networking。 在networking问题出现之前,我会考虑在数据库工作,查询优化和编码实践方面获得更多的经验。 恕我直言,它是一个合理的networking(很less或没有经验),然后将其与数据库访问一起工作的程序一起破解是更容易。