BCC DROPCLEANBUFFERS используется для очистки кэша данных в памяти, и обычно при наладке производительности мы запускаем DBCC DROP CLEANBUFFERS перед выполнением оператора, чтобы облегчить время выполнения и физическое потребление IO.
Однако этот трюк не всегда оказывается очень эффективным.
Некоторые люди могли сталкиваться с этим явлением,Даже если DBCC DROPCLEANBUFFERS выполняются, физическое чтение выходной информации SSMS всё равно отсутствует, и этот оператор остаётся данными, читаемыми из памяти (логическим чтением)。
Вы удивитесь: «Разве буфер памяти не опустошён, почему нет физического чтения?» Является ли это явление некорректным для DBCC DROPCLEANBUFFERS? ”
Нет. DROP CLEANBUFFERS действительно можно использовать для очистки кэша данных в памяти, но только страницы кэша в чистом состоянии; если эти страницы — грязные страницы, то есть страницы данных в памяти, которые были изменены и не синхронизированы с диском, то их нельзя очистить из кэша — это связано с соображением производительности.
Поэтому, когда вы столкнётесь, что DROP CLEANBUFFERS «невалидны», попробуйте вручную синхронизировать страницы данных в памяти и диске, выполняя:
Вы также можете проверить количество и размер чистых и грязных страниц в текущей памяти, указав следующее:
Команда очистки кэша:
Исходный текст:Вход по гиперссылке виден. |