我有一个16 GB的内存服务器,一个SQL实例,最大内存(缓冲池)上限为10 GB。 .net应用执行大量写操作,这些写操作必须快速(而且必须如此)。写入将写入几个已分区且快速增长的表中。该应用程序在用户可以看到数据的地方公开UI,但这是偶然的。读取必须合理地小于2秒。我的问题是我觉得我已经用尽了所有的调整(现在大约是5秒,但这很慢)。我还注意到,缓冲池主要由这两个表的大量数据消耗,也许这就是为什么某些需要其他表的数据的读取速度很慢的原因,因为SQL必须进入磁盘?
围绕这种负载是否存在一种设计模式?大容量写入大表(数百万行),并快速从那些表和其他小容量表中读取数据?
我发现在SQL Server中没有办法控制缓冲池,方法是只将40%的数据分配给大表中的数据,而将60%的数据分配给其他数据以保持其命中率并改善读取。
有想法吗?
答案 0 :(得分:0)
在这种情况下,您应该应用表分区。如果您不读取当前正在磁盘上写入的数据,则映射到不同文件组的分区可能会最小化磁盘IO。