因此我为 SQL Server 分配了 40GB 的 RAM。
我可以看到,在我第一次对数据库运行查询后,40GB 内存限制将在第一次运行期间很快被填满,但是当我执行完全相同的查询时,性能不会受到影响,SQL 仍然从硬盘而不是 RAM 读取。
整个数据库为 42GB(5500 万行、18 列、1 个表、查询后的平均结果约 80 行(使用 TOP 和 order by 选择接下来的 80 行)),RAM 中的最大分配大小为 40GB。
SQL 服务器 2008 R2、Windows 2008 R2 数据中心...
示例查询:select * from DB..Table where Column A > 333 and Column B > 3333, and column C like '%test%' order by username
如何强制 SQL Server 使用存储在 RAM 中的数据?
也许更好的主意是创建 42GB RAM 磁盘并将整个数据库移到那里???
目前我在 RAID 0 中使用 15k 4x 450GB SAS(RAID10 中的性能不够,而且我每 6 小时备份一次)但似乎其中一个驱动器有问题(~150MBps(正常为 520MBps))所以目前我正在等待 4x SSD 的交付,我想在 RAID 0 中使用它,希望至少达到 1.2GBps(1x SSD 在该数据库中达到 ~ 570MBps)。
我该如何使用这些 RAM,因为看起来 SQL Server 只是在浪费它,而对性能没有任何好处......
这个数据库没有得到很多查询,但每个查询都相当大,并且有很多“哪里”。
CPU 是 2x Xeon E5645,并不是瓶颈(运行查询时几乎总是 10-15% 的使用率)
这是根据另外两个表(每个表超过 1TB 的数据)计算并创建的结果表,预计每天增长约 20GB,最多约 3 亿行,不幸的是我无法实现舒适的性能 :(