如何从 SQL Server 的缓存中清除表?

Cat*_*ler 10 sql-server-2008 sql-server sql-server-2008-r2

我的数据库中有一些不应缓存的表。

如何告诉 SQL Server 不要缓存表的页面或如何从缓存中刷新单个表?

刷新所有缓存不是一种选择。

我正在使用 SQL Server 2008 和 SQL Server 2008 R2。

Mar*_*ith 12

没有办法做到这一点。

DBCC DROPCLEANBUFFERS不接受特定数据库或对象的任何参数。SQL Server 在内部可以在数据库级别执行此操作,但是当数据库处于AUTO_CLOSEd 状态时,所有相应的页面都会从缓冲区缓存中删除。

同样在内部 SQL Server 可以标记某些页面,以便它们将成为懒惰作者首先踢出的页面。这被 DMV 使用,例如sys.dm_db_index_physical_stats为了避免本文中提到的刷新缓冲池,但此功能不会以任何方式向我们公开(即使在执行一次性扫描时能够指定相同的内容可能很有用)例如一张大桌子)。


mrd*_*nny 7

您不能指定不应缓存特定表。是什么让您认为您不想要缓存中的表?

SQL Server 在缓冲池中执行其所有正常操作,因此如果您能够告诉 SQL Server 不将表加载到缓存中,则任何正常 DML 操作都无法访问该表。