如何将覆盖的索引预加载到缓冲池(数据缓存)?

时间:2011-07-07 22:15:55

标签: sql-server-2005

我们的应用程序有一个非常庞大的事务数据表。我们有一个“核心”覆盖索引,用于对该表执行的90%SELECT查询。当此索引保留在缓冲池(数据缓存)中时,我们的应用程序执行得非常好。如果其他数据页将索引的页面推出数据缓存,那么我们的应用程序会大大减慢。

所以我的挑战是:我有一些隔夜批处理过程来管理交易数据。他们以与白天应用程序不同的方式在桌面上工作。我可以创建其他覆盖索引,以帮助我的批处理进程更快地运行。但是,当我部署了额外的覆盖索引时,我们发现“核心”覆盖索引会超出缓存。

我计划在隔夜批处理过程的开始和结束时创建和删除我的附加索引。

如果在批处理过程结束时,我可以将“核心”覆盖索引拉入缓冲池(数据缓存),那将是非常好的。

我不想使用“pin table”或其他类似的东西。我只想在批处理结束时读取“核心”覆盖索引的所有页面,这样当白天开始时,“核心”覆盖索引已经在内存中。

1 个答案:

答案 0 :(得分:0)

DBCC PINTABLE是一个无操作。你可以运行它,但它什么都不做。我相信你可以想出一些脚本,它们会在夜间进程之后显着查询日间数据,以便它接管缓冲池,但是你考虑过更便宜的选择:添加内存吗?