Як очистити таблицю з кешу SQL Server?


10

У моїй базі даних є кілька таблиць, які не слід кешувати.

Як я можу сказати SQL Server не кешувати сторінки таблиці або як видалити одну таблицю з кешу?

Промивання всього кеша - це не варіант.

Я використовую SQL Server 2008 та SQL Server 2008 R2.


4
На якій підставі ви вирішили, що таблиці не слід кешувати?

3
Якщо ваші таблиці кешуються, вони запитуються. Якщо до них звертаються нечасто, менеджер пам’яті SQL Server буде вимивати їх на відміну від інших об’єктів у потрібний час. Яка ваша мета тут?
Джон Сансон

4
@John - Не маю уявлення, яка мета ОП, але бувають випадки, коли це було б корисно. наприклад, одноразове сканування на великій таблиці, не змиваючи пул буфера.

3
Деякі з причин: таблиця з низьким пріоритетом, iis / rs на тій же машині, що і сервер sql, енергоспоживання тощо. Найголовніше полягає в тому, що деякі таблиці є таблицями з низьким пріоритетом з точки зору продуктивності програми та їх можна безпечно читати з диска кожного разу, коли до них звертаються. Зберігаючи ці таблиці поза буферним пулом, аналіз пам'яті стає дещо простішим.
Каталін Адлер

1
@ user973156: Чи хороший ваш код та дизайн , що тепер ви можете лише здогадуватися про SQL Server, щоб покращити ситуацію?
gbn

Відповіді:


12

Не можна цього зробити.

DBCC DROPCLEANBUFFERSне приймає жодних параметрів для певної бази даних чи об'єкта. Внутрішньо SQL Server може це робити на рівні бази даних, однак, коли в базі даних AUTO_CLOSEd всі відповідні сторінки видаляються з кеш-пам'яті буфера.

Також внутрішньо SQL Server може позначати певні сторінки таким чином, що вони будуть першими, яких вигнав ледачий автор. Це використовується в DMV, наприклад, sys.dm_db_index_physical_statsщоб уникнути промивання пулів буфера, на які згадується в цій статті, але ця функціональність нам не піддається жодним чином (навіть якщо це може бути корисним для того, щоб можна було вказати те саме, якщо робити одноразове сканування. наприклад, великої таблиці).


7

Ви не можете вказати, що конкретні таблиці не повинні кешуватися. Що змушує вас думати, що вам не потрібно таблиць у кеші?

SQL Server виконує ВСІ свої звичайні операції в буферному пулі, тому, якщо б вам вдалося сказати SQL Server не завантажувати таблицю в кеш, ця таблиця не була б доступною для будь-яких звичайних операцій DML.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.