首页 > 解决方案 > 高写入,偶尔读取(两者都必须很快),任何食谱?

问题描述

我有一个 16 GB 的内存服务器,单个 SQL 实例,最大内存(缓冲池)上限为 10 GB。.net 应用程序执行大量写入,必须快速(而且确实如此)。写入进入几个已分区且快速增长的表。该应用程序公开了用户可以在其中查看数据的 UI,但这是偶尔的。读取必须合理地呈现 < 2 秒。我的问题是我觉得我已经用尽了微调读取(现在大约 5 秒,但这很慢)。我还注意到缓冲池主要被这两个表的大容量数据消耗,也许这就是为什么一些需要其他表数据的读取速度很慢的原因,因为 SQL 必须进入磁盘?

是否有围绕这种负载的设计模式?大量写入大表(数百万行),并从这些表和其他低容量表中快速读取?

我发现在 SQL Server 中无法通过将 40% 分配给大表中的数据来控制缓冲池,而将 60% 用于其他数据以保持其高命中率并改善读取。

想法?

标签: performancetsqldatabase-performance

解决方案


在这种情况下,您应该对表进行分区。如果您不读取当前正在写入磁盘的数据,则映射到不同文件组的分区可能会最小化磁盘 IO。


推荐阅读