查询性能慢

时间:2014-05-30 17:24:53

标签: oledb sql-server-ce-4

我在几台不同的计算机上运行了一些非常大的数据库(500 MB和300 MB)。

从硬件角度来看,这些机器配置相同。

我使用SQL Server CE 4.0作为我的DBMS。

已对性能关键型查询编制索引以提高其性能。

问题是在[仅]其中一台机器上,我观察到的查询性能极其缓慢。这通常发生在长时间不活动之后(从查询角度来看)。在我做了几个(大约7到8个)查询之后,缓慢的性能消失了。

奇怪的是,这个初始的慢查询性能不会发生在另一台机器上。

两台机器之间的唯一区别是数据库中包含的数据。

我怀疑慢速计算机上的数据分发在某种程度上降低了索引的有效性,并且SQL Server CE必须以比其他更快的计算机更重要的方式重新平衡索引。

我注意到的一点是,当查询非常慢时,磁盘活动会显着增加,与读取数据库相对应的进程会显示读取字节的峰值。

在其他机器上不会发生这种情况。

是否有人知道我如何解决这个问题?

我的代码是用C ++编写的,并使用ATL / OLEDB API来操作数据库。

更新:我的性能分析活动表明查询本身并不慢 - 它是返回的行集的处理需要一段时间。对于返回的每一行,我查询另一个数据库以获取相关数据。我知道这不是正确的方法,但性能问题只发生在一台机器上。我注意到的一件事是,当我在其他线程中的同一个数据库上发生其他不相关的查询时,不相关的查询将停止表现出性能问题的查询。

0 个答案:

没有答案