digital-garden/_inbox/Отставание реплики в БД.md

2.1 KiB
Raw Blame History

aliases tags date zero-link parents linked
лаг репликации
зрелость/🌱
2024-06-04
00 Базы Данных
Репликация БД

Если SQL запрос достаточно тяжелый, то может возникнуть отставание реплик от мастера. Кажется такое возможно только в MySQL, когда например мы передаем на реплику сам запрос. Но если в PostgreSQL мы передаем не сам запрос, а блоки данных, то отставание по идее должно быть меньше.

В нормальной ситуации отставание достигает 1 секунды.

Что может приводить к лагу:

  • Медленные и сложные запросы.
  • Сетевые проблемы.
  • Размер WAL.
  • Проблемы дисковой подсистемы реплики.

Рекомендации:

  • Убивайте медленные запросы. Если запрос висит уже 10 секунд, то лучше его прибить.
  • Держать отдельную реплику для медленных запросов.
  • Думайте о кросс-СУБД репликации Репликация из реляционной бд в NoSQL
  • Избегать паттерна запись-чтение
    • Свои данные читаем с мастера, чужие с реплики
    • Читаем с других реплик через n секунд после записи. Но ничего не гарантируется
  • Выделить отдельный жесткий диск под Журнал БД, чтобы обеспечить эксклюзивный доступ к ресурсам диска, тем самым улучшая производительность. Менее актуально для SSD.