2010-05-24 182 views
2

我在其中一个客户端应用程序中使用了SQL Server CE 3.5 SP1。当用户加载程序并开始使用它时,性能很好。如果用户让程序闲置一段时间,程序需要花费相当长的时间(10秒或更长时间)才能响应。每次用户请求一个新屏幕时,都会调用SQL CE数据库来获取该屏幕的数据。看起来硬盘可能会休眠,然后当访问数据库时,硬盘必须唤醒。是否有可能将整个数据库加载到内存中并从中工作?对于如何提高性能还有其他建议吗?SQL Server Compact Edition 3.5性能

+1

我建议你所拥有的只不过是一种预感;在你付出很多努力之前,我会确保你确切地理解问题的原因。 – overslacked 2010-05-24 16:57:07

回答

1

我很怀疑问题是SqlCE。这是一个非常快速的数据库。正在处理中。此外,我已经加载了数十万条记录,并且如果使用SQL Express,我将获得相同的性能。

你能加载整个数据库吗?当然,这就是ADO.NET的用途。不要这样做。

我怀疑你有其他问题。例如,您是在加载表单之前预处理数据,例如设置数据集关系,将表达式列添加到数据表等等。用户的计算机也可能没有足够的内存,而且您所遇到的是Windows页面错误。你认为SqlCe访问数据库,可能是Windows在写入分页文件后将应用程序交换回内存。

+0

在实际做更多研究之前(我对此感到羞耻),我发布了这个问题太快了。你是对的。我为几个不同的视图加载了数百条记录,它似乎是导致性能问题的Windows分页。 – awilinsk 2010-06-08 13:01:22

0

请确保在应用程序期间保持与数据库的连接处于打开状态。打开一个SqlCeConnection是一个昂贵的操作。

+0

它不是十秒的昂贵。 – AMissico 2010-06-05 10:29:03

+0

那么,我在Windows服务应用程序中遇到了使用SqlServerCE作为缓存数据库的性能问题。我使用分析器来确定性能损失的原因。我发现SqlServerCe连接关闭是原因。打开连接非常耗时,但关闭连接需要8倍的时间! 这是关于性能:http://stackoverflow.com/questions/386223/sqlce-connections-keep-them-open-or-let-them-close。 – 2010-09-01 11:27:34

相关问题