Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 16305|Svar: 0

[Källa] Databasens master-slave-latens leder till felaktig frågeupplösning

[Kopiera länk]
Publicerad den 2020-4-20 20:41:03 | | | |
【Förord】

När datan når en viss mängd blir databasen flaskhalsen i hela systemet, och optimeringsstrategin används vanligtvis som läs- och skrivseparation, och databasen genomför läs- och skrivseparation genom att dela huvuddatabasen från databasen (skrivförfrågan från huvuddatabasen, läsförfrågan från databasen);

【Idéer för att lösa datafördröjningar】

1. Principen om master-slave-synkronisering (här tar vi det mest populära MySQL som exempel)

Här är ett schematiskt diagram över en klassisk MySQL master-slave datasynkronisering via binlog:



2. Hur uppstår problem?

1. Från ovanstående schema är det inte svårt att hitta att master-slave-synkronisering har en viss fördröjning, vilket påverkar fördröjningsstorleken:

(1) Fördröjningens storlek beror på mängden data som genereras från den senaste synkroniseringen till nutid

(2) Den aktuella nätverkssituationen mellan servrar

(3) Trycket från master-slave-servern själv (CPU, minne, IO, etc.)

2. Eftersom databastjänsten vanligtvis är i intranätet, och servern kommer att vara högre i konfigurationen (mer än det faktiska behovet) när den köps, är synkroniseringen i princip mycket snabb, vanligtvis på millisekunder;

3. I allmänna affärsscenarier kan millisekundlatens ignoreras;



4. Det finns allmänna och speciella fall, och vissa speciella situationer kräver realtidsmillisekunds tidsskillnad. Här är vanliga lösningar för dessa speciella situationer.

3. Lösningar för datalatens:

1. Schema 1: Skriv programdubbeln (skriv huvuddatabasen och läs databasen samtidigt)



2. Schema 2: Läs programmet för att kontrollera huvuddatabasen



3. Schema 3: Skriv huvuddatabasen och skriv cachen (sätt en viss utgångstid, vanligtvis något längre än maximal fördröjning för databassynkronisering), läs programmet, läs cachen och läs slavdatabasen



4. Fördelar och nackdelar med de tre systemen:

1. Schema 1: Dubbelskrivande förbrukar en viss mängd prestanda, vilket är relativt enkelt att implementera och inte lämpligt för scenarier med hög samtidighet i skrivande;

2. Schema 2: Läsprogrammet påverkar huvudbibliotekets prestanda, vilket är relativt enkelt att implementera och inte lämpligt för scenarier med hög samtidiga läsning.

3. Schema 3: I de flesta fall kräver läsning och skrivning mer skrivprestanda, vilket är mer komplext att implementera och passar både höga samtidiga läsningar och skrivningar (cacheläsningar och skrivningar är mycket snabba);

【Sammanfattning】

1. Implementering är viktigt, men viktigare är idén;

2. Många underliggande principer och idéer är universella
Original:https://blog.csdn.net/zhanghan18 ... le/details/91638443




Föregående:.net/c# ado.net kör lagrade procedurer med returvärden
Nästa:MSSQL MED (NOLOCK) dirty reading
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com