[ Вопрос дня ] Будет ли удалена или обновлена страница данных в буферном кэше при изменении данных для СУБД MS-SQL?

Доброго дня, коллеги!

При изучении операторов плана запроса в рамках курса Ускорение и оптимизация систем на 1С:Предприятие 8.3 + подготовка на 1С:Эксперт у слушателя возник вопрос по поводу кэширования данных страницы для СУБД MS-SQL. Вопрос уровня 1С-Эксперт. Попробуем разобраться!

Вопрос

Здравствуйте. Вопрос следующий: страница данных считана и помещена в буферный кэш, позже данные на этой странице изменены (например, UPDATE). Что произойдет со страницей в кэше? Она будет удалена, обновлена? Или ничего не произойдет, а актуальность страницы в кэше проверяется при обращении к ней?

Ответ

Добрый день! После завершения транзакции ссылка на эту страницу будет поставлена в очередь записи. Из буферного кэша удаляться по факту записи она не будет.

Комментарий слушателя

Если, как Вы говорите, страница из кэша по факту записи удаляться не будет, то каким образом обеспечивается актуальность данных ранее прочитанной с диска в кэш страницы? Выходит, при следующем запросе к этим же данным (или к данным на этой же странице) страница будет считываться с диска и будет помещена в кэш? А старая страница из кэша (считанная в кэш с диска до изменений) так и останется в кэше или будет удалена при помещении в кэш “новой версии” страницы?

Ответ

Не так. Страница будет записана на диск, после чего данные в памяти и на диске будут совпадать. Нет смысла удалять из памяти те данные, которые только что были использованы – в этом смысл буферного кеша. На самом деле все ещё немного сложнее, большинство серверов реляционных БД (в т.ч. и MS-SQL и Postgres) работают в режиме WAL (Write Ahead Log) – сначала пишется лог, потом страница с данными сбрасывается на диск (не удаляясь из памяти, пока в ней есть необходимость и пока настройки использования памяти позволяют). По логам можно откатиться на какой-то момент назад. Частично эти вопросы рассматриваются в этом курсе.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.