【问题标题】:SQL Server Compact Edition 3.5 performanceSQL Server Compact Edition 3.5 性能
【发布时间】:2010-05-24 15:49:11
【问题描述】:

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

【问题讨论】:

  • 我建议你所拥有的不过是一种预感;在您竭尽全力之前,我会确保您完全了解问题的原因。

标签: .net sql-server-ce


【解决方案1】:

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

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

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

【讨论】:

  • 我在实际做更多研究之前太快地发布了这个问题(我感到羞耻)。你是对的。我正在为几个不同的视图加载数百条记录,这似乎是导致性能问题的 windows 分页。
【解决方案2】:

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

【讨论】:

  • 这不是十秒钟的昂贵。
  • 好吧,我在 Windows 服务应用程序中使用 SqlServerCE 作为缓存数据库时遇到了性能问题。我使用分析器来确定性能下降的原因。我发现 SqlServerCe 连接关闭是原因。打开连接很耗时,但关闭连接大约需要 8 倍的时间!这是关于性能的:stackoverflow.com/questions/386223/….
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多