33 lines
1.8 KiB
Markdown
33 lines
1.8 KiB
Markdown
---
|
||
aliases:
|
||
- лаг репликации
|
||
tags:
|
||
- зрелость/🌱
|
||
date:
|
||
- - 2024-06-04
|
||
zero-link:
|
||
- "[[00 Базы Данных]]"
|
||
parents:
|
||
- "[[Репликация БД]]"
|
||
linked:
|
||
---
|
||
|
||
Если SQL запрос достаточно тяжелый, то может возникнуть отставание реплик от мастера. Кажется такое возможно только в MySQL, когда например мы передаем на реплику сам запрос. Но если в PostgreSQL мы передаем не сам запрос, а блоки данных, то отставание по идее должно быть меньше.
|
||
|
||
![](Pasted%20image%2020240219184314.png)
|
||
|
||
В нормальной ситуации отставание достигает 1 секунды.
|
||
|
||
Что может приводить к лагу:
|
||
- Медленные и сложные запросы.
|
||
- Сетевые проблемы.
|
||
- Размер [WAL](Write-Ahead%20Log.md).
|
||
- Проблемы дисковой подсистемы реплики.
|
||
|
||
Рекомендации:
|
||
- Убивайте медленные запросы. Если запрос висит уже 10 секунд, то лучше его прибить.
|
||
- Держать отдельную реплику для медленных запросов.
|
||
- Думайте о кросс-СУБД репликации Репликация из реляционной бд в NoSQL
|
||
- Избегать паттерна запись-чтение ![](Pasted%20image%2020240607211343.png)
|
||
- Свои данные читаем с мастера, чужие с реплики
|
||
- Читаем с других реплик через n секунд после записи. Но ничего не гарантируется |