我已经阅读了相当多的内容。但找不到可行的解决方案。我有一台拥有大量内存和10GB数据库的服务器。我想将整个数据库(包括索引)加载到RAM /缓存中。
此解决方案似乎不起作用:http://sqlsmurf.wordpress.com/2011/05/23/sql-warm-up-script/
有没有办法将所有内容加载到RAM存储中?我可以做SELECT * FROM blah
,但是(我相信)不会工作,因为它不会正确加载索引,它也会有点慢。
答案 0 :(得分:2)
当我需要将某些东西带入缓存时(并且 用例),例如缩短离线索引构建所需的时间,我使用类似这样的东西:
SELECT COUNT_BIG(*)
FROM T WITH (NOLOCK, INDEX(IndexNameHere))
OPTION (MAXDOP 1)
为每个索引运行它。它没有比这更有效率。 NOLOCK
用于获取IAM扫描而不是b树顺序扫描。
不过,我想知道你为什么要这样做。在使用DB时,DB将逐渐进入缓存。基本上是首次访问页面缓存页面。那还不够吗?