Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 16305|Отговор: 0

[Източник] Латентността между главния и подчинен база данни води до неточно разрешаване на заявки

[Копирай линк]
Публикувано на 2020-4-2 20:41:03 | | | |
【Предговор】

Когато данните достигнат определено количество, базата данни се превръща в тесно място на цялата система, а стратегията за оптимизация обикновено се приема като разделяне между четене и запис, а базата данни реализира разделяне между четене и запис чрез разделяне на основната база данни от базата данни (операция за заявка за запис от основната база данни, операция за заявка за четене от базата данни);

【Идеи за решаване на забавяния в данни】

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

Ето схематична диаграма на класическа MySQL мастър-слейв синхронизация на данни чрез binlog:



2. Как възникват проблемите?

1. От горната схема не е трудно да се установи, че синхронизацията между майстор и подчинен има определено забавяне, което влияе на размера на закъснението:

(1) Размерът на забавянето зависи от количеството данни, генерирани от последната синхронизация до настоящето

(2) Текущата мрежова ситуация между сървърите

(3) Натискът от самия master-slave сървър (CPU, памет, вход и др.)

2. Тъй като услугата за база данни обикновено е в интранет, а сървърът ще бъде по-висок в конфигурацията (повече от реалната нужда) при покупка, синхронизацията е по същество много бърза, обикновено в милисекунди;

3. В общи бизнес ситуации милисекундната латентност може да бъде игнорирана;



4. Има общи и специални случаи, а някои специални ситуации изискват реална милисекундна разлика във времето. Ето често срещани решения за тези специални ситуации.

3. Решения за латентност на данните:

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



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



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



4. Предимства и недостатъци на трите схеми:

1. Схема 1: Двойното писане ще изисква определено количество производителност, което е сравнително лесно за реализиране и не е подходящо за сценарии на писане с висока честота на едновременно писане;

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

3. Схема 3: В повечето случаи четенето и записването изискват повече производителност при запис, което е по-сложно за реализиране и е подходящо както за често едновременно четене, така и за запис (четенията и записите в кеша са много бързи);

【Резюме】

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