У моїй базі даних є кілька таблиць, які не слід кешувати.
Як я можу сказати SQL Server не кешувати сторінки таблиці або як видалити одну таблицю з кешу?
Промивання всього кеша - це не варіант.
Я використовую SQL Server 2008 та SQL Server 2008 R2.
У моїй базі даних є кілька таблиць, які не слід кешувати.
Як я можу сказати SQL Server не кешувати сторінки таблиці або як видалити одну таблицю з кешу?
Промивання всього кеша - це не варіант.
Я використовую SQL Server 2008 та SQL Server 2008 R2.
Відповіді:
Не можна цього зробити.
DBCC DROPCLEANBUFFERS
не приймає жодних параметрів для певної бази даних чи об'єкта. Внутрішньо SQL Server може це робити на рівні бази даних, однак, коли в базі даних AUTO_CLOSE
d всі відповідні сторінки видаляються з кеш-пам'яті буфера.
Також внутрішньо SQL Server може позначати певні сторінки таким чином, що вони будуть першими, яких вигнав ледачий автор. Це використовується в DMV, наприклад, sys.dm_db_index_physical_stats
щоб уникнути промивання пулів буфера, на які згадується в цій статті, але ця функціональність нам не піддається жодним чином (навіть якщо це може бути корисним для того, щоб можна було вказати те саме, якщо робити одноразове сканування. наприклад, великої таблиці).
Ви не можете вказати, що конкретні таблиці не повинні кешуватися. Що змушує вас думати, що вам не потрібно таблиць у кеші?
SQL Server виконує ВСІ свої звичайні операції в буферному пулі, тому, якщо б вам вдалося сказати SQL Server не завантажувати таблицю в кеш, ця таблиця не була б доступною для будь-яких звичайних операцій DML.