Replica lag — це затримка, з якою зміни з основної бази даних потрапляють до її копії — репліки.
Уявімо, що ми розробляємо інтернет-магазин і використовуємо дві бази:
- Основна база (primary) — приймає зміни: нові замовлення, оновлення цін та інші записи.
- Репліка (read replica) — отримує копію цих даних і обслуговує запити на читання, щоб зменшити навантаження на основну базу.
Користувач змінює адресу доставки й одразу оновлює сторінку. Нову адресу вже збережено в основній базі, але запит на читання потрапляє на репліку, яка ще не отримала цю зміну.
У результаті користувач бачить стару адресу, хоча збереження пройшло успішно. Через деякий час репліка наздожене основну базу, і адреса стане актуальною.
Чому виникає затримка?
При асинхронній реплікації основна база підтверджує збереження, не чекаючи, поки репліка застосує зміни. Їх передавання та обробка потребують часу. Через повільну мережу або високе навантаження затримка може збільшуватися.
Як із цим працювати?
Якщо важливо одразу побачити щойно збережені дані, такий запит можна направити в основну базу. Наприклад, після зміни адреси чи створення замовлення.
Важливий нюанс: replica lag не обов’язково означає втрату даних. Репліка просто може тимчасово повертати застарілу інформацію, і це потрібно враховувати під час розробки.