2009-04-12 44 views
0

我们正在构建一个应用程序,每个表格需要每天插入大约150万行数据。我们有16张桌子。 我们追踪包括当日数据在内的3日历史数据。在插入的运行时查询数据:我们可以使用缓存吗?

该应用程序使用C#完成;在服务器端,我们运行一个在市场营业时间(4.5小时)内填充数据表的exe文件,并且我们每5秒更新一次16个表。

在客户端,应用程序获取需要最近插入的数据(在最近5秒内)的用户查询以及可能是今天或之前的历史点,并以某种方式绘制它们。

我们有一些严重的性能问题,因为一个查询可能需要1秒或更多,这太多了。问题是,对于当今在运行时插入的数据,我们是否可以利用缓存,而不是在每次我们想从当前数据中获取某些内容时访问数据库?这会更有效率吗?如果是这样,我们该怎么做? P.S一天的数据大约为300 MB,并且我们有足够的RAM

回答

0

保留数据的副本以及用于检索数据的日期时间。下次只检索新数据,这会最大限度地减少通过线路发送的数据量。

如果是所有查询在操作中运行达1秒,那么您可能遇到的问题是UI冻结。如果是这样的话,不要在UI线程上做。

Upate(基于评论):您在控件的事件处理程序运行的代码,运行在UI线程,这是什么原因造成的UI冻结。没有一种方法可以在单独的线程中运行它,因此我建议在此方案中使用BackGroundWorker。最后看社区提供的示例。

+0

感谢您的回答..经过一些优化后,查询时间现在为0秒。但是,我们正在查询512个VPN连接,并且UI冻结。我没有得到你真正想要解决的问题!你能再详细一点吗? – mustafabar 2009-04-14 10:32:52

+0

@mustafabar添加了关于它的更新。 – eglasius 2009-04-14 17:01:46

相关问题