TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.81K subscribers
Post #2130 1.79K
Буферизация страниц данных MySQL и Postgres

Движок InnoDB в MySQL использует подход, обеспечивающий больший контроль: с помощью innodb_flush_method='O_DIRECT' он может обойти большую часть накладных расходов на кэш страниц ОС, предпочитая управление самостоятельно. innodb_buffer_pool_size определяет объём оперативной памяти, используемый для этого кэша. На выделенных серверах баз данных этот размер часто составляет 70 %+ от общего объёма оперативной памяти.
Он делит это пространство на несколько подэкземпляров буфера, каждый из которых поддерживает двухчастный список LRU-страниц: список новых страниц и список старых страниц. Новые страницы попадают в старый список и должны сохраняться без вытеснения в течение определённого времени (innodb_old_blocks_time), прежде чем им будет разрешено попасть в список новых страниц. Это предотвращает перегрузку при массовых операциях, таких как сканирование таблиц.

Postgres применяет подход, реализующий относительно более простой кэш, полагаясь при этом на кэш страниц ОС для управления загрузкой и извлечением страниц из оперативной памяти. Структура shared_buffers управляет размером и часто устанавливается на уровне ~30% от доступной оперативной памяти, оставляя достаточно места для кэша страниц ОС.
Postgres использует алгоритм «часовой очистки» для вытеснения. Каждая страница в shared_buffers ведёт счётчик, который увеличивается при использовании (до определённого предела) и уменьшается при заполнении. Когда счётчик ссылок достигает нуля, страница может быть заменена другой страницей.
Telegram METANIT.COM Иллюстрация к предыдущему посту
  • ❤ 8
  • 🔥 1
  • 👏 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →