W mojej bazie danych jest kilka tabel, których nie należy buforować.
Jak powiedzieć SQL Serverowi, aby nie buforował stron tabeli lub jak wyczyścić pojedynczą tabelę z bufora?
Opróżnianie całej pamięci podręcznej nie jest opcją.
Używam SQL Server 2008 i SQL Server 2008 R2.
sql-server
sql-server-2008
sql-server-2008-r2
Catalin Adler
źródło
źródło
Odpowiedzi:
Nie da się tego zrobić.
DBCC DROPCLEANBUFFERS
nie akceptuje żadnych parametrów dla konkretnej bazy danych lub obiektu. Wewnętrznie SQL Server może to zrobić na poziomie bazy danych, jednak tak jak w przypadku bazy danychAUTO_CLOSE
d wszystkie odpowiednie strony są usuwane z bufora bufora.Również wewnętrznie SQL Server może oznaczać niektóre strony tak, że będą one pierwszymi wyrzuconymi przez leniwego pisarza. Jest to wykorzystywane przez DMV, takie jak
sys.dm_db_index_physical_stats
unikanie opróżniania puli buforów, jak wspomniano w tym artykule, ale ta funkcja nie jest nam w żaden sposób ujawniona (nawet jeśli może być przydatne określenie tego samego, jeśli wykonujesz jednorazowy skan na przykład dużego stołu).źródło
Nie można określić, że określone tabele nie powinny być buforowane. Co sprawia, że myślisz, że nie chcesz tabel w pamięci podręcznej?
SQL Server wykonuje WSZYSTKIE swoje normalne operacje w puli buforów, więc jeśli byłeś w stanie powiedzieć SQL Serverowi, aby nie ładował tabeli do pamięci podręcznej, ta tabela nie byłaby dostępna dla żadnych normalnych operacji DML.
źródło