Eu tenho algumas tabelas em meu banco de dados que não devem ser armazenadas em cache.
Como digo ao SQL Server para não armazenar em cache as páginas de uma tabela ou como libero uma única tabela do cache?
Descarregar todo o cache não é uma opção.
Estou usando SQL Server 2008 e SQL Server 2008 R2.
Não há como fazer isso.
DBCC DROPCLEANBUFFERS
não aceita nenhum parâmetro para um banco de dados ou objeto específico. Internamente, o SQL Server pode fazer isso em um nível de banco de dados, no entanto, quando um banco de dados éAUTO_CLOSE
d, todas as páginas correspondentes são removidas do cache do buffer.Também internamente, o SQL Server pode marcar certas páginas para que sejam as primeiras a serem expulsas pelo escritor preguiçoso. Isso é usado por DMVs
sys.dm_db_index_physical_stats
para evitar a liberação do buffer pool conforme mencionado neste artigo, mas essa funcionalidade não é exposta de forma alguma para nós (mesmo que possa ser útil especificar o mesmo se estiver fazendo uma verificação única de uma mesa grande, por exemplo).Você não pode especificar que tabelas específicas não devem ser armazenadas em cache. O que faz você pensar que não quer as tabelas em cache?
O SQL Server faz TODAS as suas operações normais no buffer pool, portanto, se você pudesse dizer ao SQL Server para não carregar uma tabela no cache, essa tabela não estaria acessível para nenhuma operação DML normal.