Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 16305|Svare: 0

[Kilde] Database master-slave-latens fører til unøyaktig spørringsløsning

[Kopier lenke]
Publisert 2020-4-2020 20:41:03 | | | |
【Forord】

Når dataene når et visst beløp, vil databasen bli flaskehalsen i hele systemet, og optimaliseringsstrategien brukes vanligvis som lese- og skriveskille, og databasen realiserer lese- og skriveseparasjon ved å dele hoveddatabasen fra databasen (skriveforespørselsoperasjon fra hoveddatabasen, leseforespørselsoperasjon fra databasen);

【Ideer for å løse dataforsinkelser】

1. Prinsippet om master-slave-synkronisering (her tar vi det mest populære MySQL som eksempel)

Her er et skjematisk diagram over en klassisk MySQL master-slave datasynkronisering via binlog:



2. Hvordan oppstår problemer?

1. Fra skjemaet ovenfor er det ikke vanskelig å finne at master-slave-synkronisering har en viss forsinkelse, som påvirker forsinkelsesstørrelsen:

(1) Størrelsen på forsinkelsen avhenger av mengden data som genereres fra siste synkronisering til nåtiden

(2) Den nåværende nettverkssituasjonen mellom servere

(3) Presset fra selve master-slave-serveren (CPU, minne, IO, osv.)

2. Siden databasetjenesten vanligvis er i intranettet, og serveren vil være høyere i konfigurasjonen (mer enn det faktiske behovet) når den kjøpes, er synkroniseringen i praksis svært rask, vanligvis i millisekunder;

3. I generelle forretningsscenarier kan millisekundlatens ignoreres;



4. Det finnes generelle og spesielle tilfeller, og noen spesielle situasjoner krever sanntids millisekunds tidsforskjell. Her er vanlige løsninger for disse spesielle situasjonene.

3. Løsninger for dataforsinkelse:

1. Skjema 1: Skriv programdobbel (skriv hoveddatabasen og les databasen samtidig)



2. Skjema 2: Les programmet for å sjekke hoveddatabasen



3. Skjema 3: Skriv hoveddatabasen og skriv cachen (sett en viss utløpstid, vanligvis litt lengre enn maksimal forsinkelse for databasesynkronisering), les programmet, les cachen og les slave-databasen



4. Fordeler og ulemper ved de tre ordningene:

1. Skjema 1: Dobbel skriving vil kreve en viss mengde ytelse, noe som er relativt enkelt å implementere, og ikke egnet for scenarioer med høy samtidig skriving;

2. Skjema 2: Leseprogrammet vil påvirke ytelsen til hovedbiblioteket, som er relativt enkelt å implementere og ikke egnet for scenarioer med høy samtidig lesing.

3. Skjema 3: I de fleste tilfeller krever lesing og skriving mer skriveytelse, noe som er mer komplekst å implementere, og egner seg for både høye samtidige lesinger og skrivinger (cache-lesing og skriving er svært rask);

【Sammendrag】

1. Implementering er viktig, men viktigere er ideen;

2. Mange underliggende prinsipper og ideer er universelle
Original:https://blog.csdn.net/zhanghan18 ... le/details/91638443




Foregående:.net/c# ado.net kjører lagrede prosedyrer med returverdier
Neste:MSSQL MED (NOLOCK) skitten lesing
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com