Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 16305|Відповідь: 0

[Джерело] Затримка між головним і підлеглим базою даних призводить до неточного розв'язання запитів

[Копіювати посилання]
Опубліковано 2020-4-2 20:41:03 | | | |
【Передмова】

Коли обсяг даних досягає певної кількості, база даних стає вузьким місцем усієї системи, і стратегія оптимізації зазвичай застосовується як розділення читання і запису, а база даних реалізує розділення читання і запису, розділяючи основну базу даних від бази даних (операція запиту на запис з основної бази, операція запиту на читання з бази даних);

【Ідеї для розв'язання затримок даних】

1. Принцип синхронізації майстер-слейв (тут візьмемо найпопулярніший MySQL як приклад)

Ось схематична схема класичної MySQL майстер-слейв синхронізації даних через binlog:



2. Як виникають проблеми?

1. З наведеної вище схеми неважко встановити, що синхронізація майстер-підлеглий має певну затримку, яка впливає на розмір затримки:

(1) Розмір затримки залежить від обсягу даних, отриманих від останньої синхронізації до теперішнього часу

(2) Поточна мережева ситуація між серверами

(3) Тиск на сам сервер майстер-слейв (процесор, пам'ять, вихід тощо)

2. Оскільки сервіс бази даних зазвичай знаходиться в інтранеті, а сервер буде вищим за конфігурацією (більше, ніж фактична потреба) при покупці, синхронізація фактично дуже швидка, зазвичай у мілісекундах;

3. У загальних бізнес-сценаріях мілісекундну затримку можна ігнорувати;



4. Існують загальні та особливі випадки, а деякі особливі ситуації потребують різниці у мілісекундах у реальному часі. Ось поширені рішення для таких особливих ситуацій.

3. Рішення щодо затримки даних:

1. Схема 1: Записувати програму подвійно (одночасно написати основну базу даних і прочитати базу даних)



2. Схема 2: Прочитайте програму, щоб перевірити основну базу даних



3. Схема 3: Записати основну базу даних і записати кеш (встановити певний час закінчення, зазвичай трохи більший за максимальну затримку синхронізації бази даних), прочитати програму, прочитати кеш і прочитати підлеглу базу даних



4. Переваги та недоліки трьох схем:

1. Схема 1: Подвійний запис споживає певний рівень продуктивності, що відносно просто реалізувати і не підходить для сценаріїв з високою кількістю паралельних записів;

2. Схема 2: Програма читання вплине на продуктивність основної бібліотеки, яка відносно проста у реалізації і не підходить для сценаріїв з великим рівнем одночасного читання.

3. Схема 3: У більшості випадків читання та запис потребують більшої продуктивності запису, що складніше реалізувати, і підходить як для високорівних одночасних читань, так і для запису (читання та запис у кеші дуже швидкі);

【Summary】

1. Реалізація важлива, але ще важливіша ідея;

2. Багато основних принципів і ідей є універсальними
Оригінальний:https://blog.csdn.net/zhanghan18 ... le/details/91638443




Попередній:.net/c# ado.net виконує збережені процедури з поверненими значеннями
Наступний:MSSQL З (NOLOCK) брудним читанням
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com