Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 16305|Odpověď: 0

[Zdroj] Latence master-slave databáze vede k nepřesnému řešení dotazů

[Kopírovat odkaz]
Zveřejněno 2020-4-2 20:41:03 | | | |
【Předmluva】

Když data dosáhnou určité hodnoty, databáze se stane úzkým hrdlem celého systému a optimalizační strategie se obvykle používá jako oddělení čtení a zápisu, přičemž databáze realizuje oddělení čtení a zápisu oddělením hlavní databáze od databáze (operace zápisu požadavků z hlavní databáze, operace požadavku na čtení z databáze);

【Nápady na řešení datových zpoždění】

1. Princip synchronizace master-slave (zde si vezmeme nejpopulárnější MySQL jako příklad)

Zde je schématický diagram klasické synchronizace MySQL master-slave dat pomocí binlogu:



2. Jak vznikají problémy?

1. Z výše uvedeného schématu není těžké zjistit, že synchronizace master-slave má určité zpoždění, které ovlivňuje velikost zpoždění:

(1) Velikost zpoždění závisí na množství dat generovaných od poslední synchronizace do současnosti

(2) Současná situace v síti mezi servery

(3) Tlak samotného master-slave serveru (CPU, paměť, IO atd.)

2. Protože databázová služba je obvykle v intranetu a server bude při zakoupení výše v konfiguraci (více, než je skutečně potřeba), synchronizace je v zásadě velmi rychlá, obvykle v milisekundách;

3. V obecných obchodních scénářích lze latenci v milisekundách ignorovat;



4. Existují obecné a speciální případy a některé speciální situace vyžadují časový rozdíl v reálném čase o milisekundách. Zde jsou běžná řešení těchto speciálních situací.

3. Řešení latence dat:

1. Schéma 1: Napsat program dvojnásobně (zapsat hlavní databázi a zároveň číst databázi)



2. Schéma 2: Přečtěte si program pro kontrolu hlavní databáze



3. Schéma 3: Zapište hlavní databázi a zapište cache (nastavte určitou dobu expirace, obvykle o něco delší než maximální zpoždění synchronizace databáze), přečtěte program, přečtěte cache a čtěte slave databázi



4. Výhody a nevýhody těchto tří schémat:

1. Schéma 1: Dvojité zápisy spotřebovávají určitou část výkonu, což je relativně jednoduché na implementaci a není vhodné pro scénáře s vysokým souběžným psaním;

2. Schéma 2: Program čtení ovlivní výkon hlavní knihovny, která je relativně jednoduchá na implementaci a není vhodná pro scénáře s vysokým souběžným čtením.

3. Schéma 3: Ve většině případů čtení a zápis spotřebovává více výkonu zápisu, což je složitější na implementaci a je vhodné jak pro vysoké souběžné čtení, tak zápisy (čtení a zápis do cache jsou velmi rychlá);

【Shrnutí】

1. Implementace je důležitá, ale důležitější je myšlenka;

2. Mnoho základních principů a myšlenek je univerzálních
Původní:https://blog.csdn.net/zhanghan18 ... le/details/91638443




Předchozí:.net/c# ado.net vykonává uložené procedury s návratovými hodnotami
Další:MSSQL S (NOLOCK) špinavým čtením
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com