Приводит ли PostgreSQL Vacuum к падению коэффициента попаданий в кэш буфера?

Большую часть времени коэффициент попаданий в буферный кэш нашей базы данных PostgreSQL (версия 13.8, AWS Aurora, совместим с PostgreSQL) составлял где-то около 95–98%. Однако мы наблюдали периодическое падение коэффициента попаданий в буферный кеш до 70%-80%. Мне удалось отследить появление этих провалов в работе вакуума. Всякий раз, когда есть вакуумная активность, мы видим, что коэффициент попаданий в буферный кеш падает до 70-80%.

Я не могу найти прямое утверждение в какой-либо документации, в котором говорится: «Да, вакуумная активность вытесняет буфер, и поэтому это приводит к значительному снижению коэффициента попадания в кэш буфера». Лучшее, что мне удалось, это найти объяснение того, как работает очистка, и в псевдокоде говорится, что «он будет сканировать все страницы, чтобы получить мертвые кортежи», что, как я предполагаю, приведет к загрузке этих страниц в буферный кеш. и заполнить его, возможно, не очень релевантными данными, что в конечном итоге приведет к снижению коэффициента попадания.

Я на правильном пути?

Каковы ссылки на эту связь между активностью очистки и коэффициентом попаданий в буферный кеш?

Документация Vacuum в официальной документации PostgreSQL не упоминает о его влиянии на буферный кеш.

Пожалуйста, задайте 1 конкретный исследовательский вопрос, не повторяющийся. Запросы на сторонние ресурсы не по теме. Как задать вопрос Справочный центр Сколько исследований ожидается от пользователей Stack Overflow?

philipxy 20.04.2023 05:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Коэффициент попаданий в кэш падает, когда база данных считывает много страниц, которые не кэшируются. Это именно то, что делает VACUUM, поэтому то, что вы наблюдаете, не очень удивительно. Не волнуйся.

Люди склонны переоценивать значение коэффициента попаданий в кеш. Нет ничего плохого в том, чтобы при необходимости выполнять ввод-вывод.

VACUUM будет использовать стратегию доступа к кольцевому буферу, которая не позволит ему вытеснить очень много других страниц, так как он преимущественно вытесняет свои последние страницы. А вот ВАКУУМУ может самому понадобиться посетить большое количество холодных страниц, которые конечно нужно будет прочитать. Таким образом, VACUUM может привести к падению глобальной частоты попаданий не потому, что другие процессы пропускают страницы, а потому, что у самой очистки есть пропуски страниц.

Другие вопросы по теме