“启动”SQL Server中的整个数据库以获得首次命中速度

时间:2010-05-04 19:29:45

标签: sql-server caching

对于特定的应用程序,我有一组查询,每次数据库因任何原因重新启动时都会运行(通常是服务器重启)。这些“主要”SQL Server的页面缓存具有数据的通用核心工作集,因此应用程序在用户第一次登录后不会异常缓慢。

该应用程序的一个实例运行在一个过度规划的安排上,其中SQL框的RAM大于数据库的大小(机器中的4Gb,数据库当前低于1.5Gb,并且相对于数据库不太可能增长太多在不久的将来)。是否有一种简洁/简单的方法告诉SQL Server消失并将所有内容加载到RAM中?

通过脚本扫描sysobjects&amp; sysindexes并为找到的每个密钥和索引运行SELECT * FROM <table> WITH(INDEX(<index_name>)) ORDER BY <index_fields>,这应该导致每个使用过的页面至少被读取一次,因此在RAM中,但是有更清洁或更有效的方法吗?数据库服务器停止的所有计划实例都超出了正常工作时间(所有用户最多只有一个时区,而且与我不同,它们都没有在愚蠢的时间工作)所以这样一个过程(直到完成)放慢速度超过工作集的用户根本没有准备就绪不会是一个问题。

1 个答案:

答案 0 :(得分:1)

我使用了调用startup stored proc

sp_updatestats
  1. 无论如何都会使查询受益
  2. 无论如何它已遍历所有内容(你有索引,对吗?)