BCC DROPCLEANBUFFERS використовується для очищення кешу даних у пам'яті, і зазвичай при налаштуванні продуктивності ми виконуємо DBCC DROP CLEANBUFFERS перед виконанням оператора, щоб полегшити час виконання та фізичне споживання виводу оператора.
Однак цей трюк не завжди дуже ефективний.
Деякі люди могли стикатися з цим явищем,Навіть якщо DBCC DROPCLEANBUFFERS виконується, фізичне зчитування вихідної інформації SSMS все одно не відсутнє, і ця операторська заява залишається даними, зчитуваними з пам'яті (логічне читання)。
Ви будете здивовані: «Хіба буфер у пам'яті не порожній, чому немає фізичного читання?» Чи є це явище недійсним для DBCC DROPCLEANBUFFERS? ”
Ні. DROP CLEANBUFFERS дійсно можна використовувати для очищення кешу даних у пам'яті, але лише сторінки кешу в чистому стані, натомість, якщо ці сторінки є брудними сторінками, тобто сторінками даних у пам'яті, які були модифіковані і не синхронізовані з диском, то їх не можна видалити з кешу — це з міркувань продуктивності.
Тож коли ви стикаєтеся з DROP CLEANBUFFERS «недійсними», спробуйте вручну синхронізувати сторінки даних у пам'яті та диску, виконуючи:
Ви також можете перевірити кількість і розмір чистих і забруднених сторінок у поточній пам'яті, вказавши наступне:
Команда очищення кешу:
Оригінальний:Вхід за гіперпосиланням видно. |