预热数据库(将整个数据库放入缓存)

时间:2014-05-14 06:17:10

标签: sql sql-server caching sql-server-2012

我已经阅读了相当多的内容。但找不到可行的解决方案。我有一台拥有大量内存和10GB数据库的服务器。我想将整个数据库(包括索引)加载到RAM /缓存中。

此解决方案似乎不起作用:http://sqlsmurf.wordpress.com/2011/05/23/sql-warm-up-script/

有没有办法将所有内容加载到RAM存储中?我可以做SELECT * FROM blah,但是(我相信)不会工作,因为它不会正确加载索引,它也会有点慢。

1 个答案:

答案 0 :(得分:2)

当我需要将某些东西带入缓存时(并且 用例),例如缩短离线索引构建所需的时间,我使用类似这样的东西:

SELECT COUNT_BIG(*)
FROM T WITH (NOLOCK, INDEX(IndexNameHere))
OPTION (MAXDOP 1)

为每个索引运行它。它没有比这更有效率。 NOLOCK用于获取IAM扫描而不是b树顺序扫描。

不过,我想知道你为什么要这样做。在使用DB时,DB将逐渐进入缓存。基本上是首次访问页面缓存页面。那还不够吗?