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

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

我已经阅读了相当多的内容。但找不到可行的解决方案。我有一台有大量 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/

相关文章:

java - 如何保存位图并从缓存中共享?

sql - 将查询从 MS Access 转换为 SQL Server

c# - 从 xpath 创建 SQL 数据库结构

使用索引的 SQL 对象

java - 将缓存放在分布式 Redis 缓存的前面

javascript - Leaflet 标记弹出窗口中的缓存破坏

sql - 根据碎片结果自动重建索引?

java - Hibernate 分离查询作为标准查询的一部分

sql-server - 在临时表上创建全文索引

java - 从servlet执行oracle查询结果错误