Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 16305|Odpowiedź: 0

[Źródło] Opóźnienie master-slave bazy danych prowadzi do niedokładnego rozwiązywania zapytań

[Skopiuj link]
Opublikowano 2020-4-2 20:41:03 | | | |
【Przedmowa】

Gdy dane osiągną określoną wartość, baza danych staje się wąskim gardłem całego systemu, a strategia optymalizacji jest zazwyczaj przyjmowana jako rozdzielenie odczytu i zapisu, a baza danych realizuje separację odczytu i zapisu poprzez podział głównej bazy od bazy danych (operacja żądania zapisu z głównej bazy, operacja żądania odczytu z bazy);

【Pomysły na rozwiązanie opóźnień danych】

1. Zasada synchronizacji master-slave (tutaj weźmy najpopularniejszy MySQL jako przykład)

Oto schemat klasycznej synchronizacji danych MySQL master-slave za pomocą binlogu:



2. Jak pojawiają się problemy?

1. Na podstawie powyższego schematu łatwo stwierdzić, że synchronizacja master-slave ma określone opóźnienie, które wpływa na jego rozmiar:

(1) Wielkość opóźnienia zależy od ilości danych wygenerowanych od ostatniej synchronizacji do teraźniejszości

(2) Obecna sytuacja sieciowa między serwerami

(3) Presja samego serwera master-slave (CPU, pamięć, IO itd.)

2. Ponieważ usługa bazy danych zazwyczaj znajduje się w intranecie, a serwer jest wyżej skonfigurowany (powyżej rzeczywistej potrzeby) przy zakupie, synchronizacja jest zasadniczo bardzo szybka, zazwyczaj w milisekundach;

3. W ogólnych scenariuszach biznesowych opóźnienie milisekund można zignorować;



4. Istnieją przypadki ogólne i specjalne, a niektóre specjalne wymagają różnicy czasu milisekundowego w czasie rzeczywistym. Oto typowe rozwiązania dla tych wyjątkowych sytuacji.

3. Rozwiązania opóźnień danych:

1. Schemat 1: Zapisz program podwójnie (zapisz główną bazę danych i odczytaj bazę danych jednocześnie)



2. Schemat 2: Przeczytaj program, aby sprawdzić główną bazę danych



3. Schemat 3: Zapisz główną bazę danych i zapisz pamięć podręczną (ustaw określony czas wygaśnięcia, zazwyczaj nieco dłuższy niż maksymalne opóźnienie synchronizacji bazy danych), odczytaj program, odczytaj pamięć podręczną i odczytaj bazę danych podrzędnych



4. Zalety i wady trzech schematów:

1. Schemat 1: Podwójne zapisywanie zużywa pewną wydajność, co jest stosunkowo proste do wdrożenia i nie nadaje się do scenariuszy o dużym równoległym pisaniu współbieżnym;

2. Schemat 2: Program odczytu wpływa na wydajność głównej biblioteki, która jest stosunkowo prosta do wdrożenia i nie nadaje się do scenariuszy o dużym równoległym odczytie.

3. Schemat 3: W większości przypadków odczyt i zapis zużywają więcej wydajności zapisu, co jest bardziej złożone do implementacji i nadaje się zarówno do wysokich współbieżnych odczytów, jak i zapisów (odczyty i zapisy w pamięci podręcznej są bardzo szybkie);

【Podsumowanie】

1. Wdrożenie jest ważne, ale ważniejsza jest idea;

2. Wiele podstawowych zasad i idei jest uniwersalnych
Oryginał:https://blog.csdn.net/zhanghan18 ... le/details/91638443




Poprzedni:.NET/C# ado.net wykonuje procedury przechowywane z wartościami zwrotnymi
Następny:MSSQL z (nolock) nieuporządkowanym odczytem
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com