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

Proč je MySQL InnoDB mnohem pomalejší při skenování celé tabulky než MyISAM?

Na mém serveru s vaší konfigurací je můj základní výkon následující:

  • InnoDB:5,71 s
  • MyISAM:2,50 s

To není špatné v mé knize, ale může to vyžadovat určité úpravy.

Váš výkon InnoDB lze zlepšit na několika frontách:

Zvětšete innodb_buffer_pool_size

  • Toto je jediná nejdůležitější konfigurační proměnná InnoDB. V ideálním případě by to mělo být 70–80 % vaší dostupné paměti RAM na serveru vyhrazeném pro MySQL a InnoDB.
  • Zvýšení innodb_buffer_pool_size na mém serveru na 2G (více než dost pro tento test) snížilo čas InnoDB na 4,60 s

Nastavte id jako PRIMÁRNÍ KLÍČ

  • InnoDB shlukuje svá data na základě PRIMÁRNÍHO KLÍČE. Když žádný nedeklarujete, InnoDB implicitně vygeneruje náhodný. Mít sekvenční primární klíč (id) je rychlejší než náhodný.
  • Tím, že se id jako PRIMÁRNÍ KLÍČ na mém serveru snížilo čas InnoDB na 3,80 s

Upgradujte své MySQL/InnoDB

S MySQL 5.1+ podporuje MySQL zásuvná úložiště. Konkrétně nový InnoDB Plugin .

Nový engine InnoDB poskytuje mnoho četných vylepšení výkonu, která mohou mají významný vliv na tento konkrétní typ dotazu.

Poznámka:

  • Od MySQL 5.1.38 je plugin InnoDB součástí MySQL
  • Od verze MySQL 5.1.43 je plugin InnoDB nejen zahrnut, ale je výchozím modulem pro MySQL



  1. Jak mohu INSERT data do dvou tabulek současně v SQL Server?

  2. Problém s instalací mysqlclient přes pip

  3. Jak nastavit varchar, aby měl neomezenou délku?

  4. Kde mám uchovávat přihlašovací údaje k mé databázi?