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

Výkon MySQL Insert klesá na velkém stole

Neřekl jste, zda se jedná o testovací systém nebo výrobu; Předpokládám, že jde o produkci.

Je pravděpodobné, že jste dostali tabulku do velikosti, kdy se její indexy (nebo celá řada) již nevejdou do paměti.

To znamená, že InnoDB musí číst stránky během vkládání (v závislosti na distribuci hodnot indexu vašich nových řádků). Čtení stránek (náhodné čtení) je opravdu pomalé a je třeba se mu pokud možno vyhnout.

Rozdělení se zdá jako nejzřejmější řešení, ale rozdělení MySQL nemusí vyhovovat vašemu případu použití.

Určitě byste měli zvážit všechny možné možnosti – přeneste tabulku na testovací server ve vaší laboratoři, abyste viděli, jak se chová.

Váš primární klíč mi připadá, jako by možná nebyl vyžadován (máte jiný jedinečný index), takže je to jedna z možností.

Zvažte také plugin innodb a kompresi, díky tomu půjde váš innodb_buffer_pool dále.

Opravdu musíte analyzovat své případy použití, abyste se rozhodli, zda skutečně potřebujete uchovávat všechna tato data a zda je rozdělení na oddíly rozumné řešení.

Provádění jakýchkoli změn v této aplikaci pravděpodobně způsobí vašim uživatelům nové problémy s výkonem, takže zde musíte být opravdu opatrní. Pokud najdete způsob, jak zlepšit výkon vkládání, je možné, že to sníží výkon vyhledávání nebo výkon jiných operací. Před vydáním takové změny budete muset provést důkladný test výkonu na produkčním hardwaru.



  1. Transakce Mysql:potvrzení a vrácení zpět

  2. Jak mohu při provádění MERGE v Oracle SQL aktualizovat řádky, které se neshodují ve SOURCE?

  3. Obnovení tabulky MySQL zpět do databáze

  4. Upgradováno na Ubuntu 16.04, nyní jsou přerušeny závislosti MySQL-python