sql >> Databáze >  >> RDS >> Mysql

Rychlost INSERT optimalizující MySQL je zpomalena kvůli indexům

Pokud chcete rychlé vkládání, první věc, kterou potřebujete, je správný hardware. To předpokládá dostatečné množství RAM, SSD místo mechanických mechanik a poměrně výkonný CPU.

Protože používáte InnoDB, chcete jej optimalizovat, protože výchozí konfigurace je navržena pro pomalé a staré stroje.

Zde je skvělé čtení o konfiguraci InnoDB

Poté musíte vědět jednu věc – a to, jak si databáze dělají své věci interně, jak fungují pevné disky a tak dále. V následujícím popisu mechanismus zjednoduším:

Transakce je MySQL, která čeká, až pevný disk potvrdí, že zapsal data. To je důvod, proč jsou transakce na mechanických jednotkách pomalé, zvládnou 200-400 vstupně-výstupních operací za sekundu. V překladu to znamená, že můžete získat 200 dotazů na vložení za sekundu pomocí InnoDB na mechanickém disku. Přirozeně toto je zjednodušené vysvětlení , jen abych nastínil, co se děje, nejde o úplný mechanismus transakce .

Vzhledem k tomu, že dotaz, zejména ten, který odpovídá velikosti vaší tabulky, je relativně malý, pokud jde o bajty, efektivně plýtváte drahocennými IOPS na jeden dotaz.

Pokud zabalíte více dotazů (100 nebo 200 nebo více, neexistuje přesný počet, musíte otestovat) do jediné transakce a poté ji odevzdáte – okamžitě dosáhnete více zápisů za sekundu.

Chlapi z Percony dosahují 15 000 vložek za sekundu na relativně levném hardwaru. Ani 5k vložek za sekundu není špatné. Tabulka jako je ta vaše je malá, dělal jsem testy na podobné tabulce (o 3 sloupce víc) a podařilo se mi dostat se na 1 miliardu záznamů bez znatelných problémů pomocí 16gb ram stroje s 240GB SSD (1 disk, žádný RAID, používané pro testovací účely).

TL;DR:- postupujte podle výše uvedeného odkazu, nakonfigurujte svůj server, získejte SSD, zabalte více vložek do 1 transakce a získejte zisk. A nevypínejte a nezapínejte indexování, nelze to použít vždy, protože v určitém okamžiku strávíte čas zpracováním a IO jejich sestavením.



  1. Připojení k serveru SQL někdy funguje

  2. Ukázková schémata na GitHubu

  3. Hostitel 'xxx.xx.xxx.xxx' se nemůže připojit k tomuto serveru MySQL

  4. První písmeno velké. MySQL