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