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

Klíče pro zakázání a povolení MySQL

Určitě si musíte vybrat svůj přístup na základě typu motoru... optimalizace pro MyISAM nebo pro InnoDB .

Nedávno jsme provedli benchmark, který porovnával různé způsoby vkládání dat a měřil čas před vložením až do úplného obnovení všech indexů. Bylo to na prázdném stole, ale použili jsme až 10 milionů řádků.

MyISAM s LOAD DATA INFILE a ALTER TABLE ... ENABLE/DISABLE KEYS zvítězil v našem testu (na systému Windows 7, MySQL 5.5.27 – nyní to zkoušíme na systému Linux).

ENABLE a DISABLE KEYS nefunguje pro InnoDB, je to pouze MyISAM. Pro InnoDB použijte SET AUTOCOMMIT = 0; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0; pokud jste si jisti, že vaše data neobsahují duplikáty (nezapomeňte je nastavit na 1 po dokončení nahrávání).

Nemyslím si, že potřebujete OPTIMIZE TABLE po hromadném vložení - Řádky MySQL jsou seřazeny vložením a index se stejně přestaví. Hromadným vkládáním nedochází k žádné „další fragmentaci“.

Neváhejte se vyjádřit, pokud jsem udělal faktické chyby.

AKTUALIZACE: Podle našich novějších a úplných výsledků testů je rada pro klávesy DISABLE / ENABLE nesprávná.

Spolupracovník nechal program spustit několik různých testů – tabulku s předvyplněnou a prázdnou InnoDB / MyISAM, rychlost výběru a vkládání pomocí LOAD DATA LOCAL , INSERT INTO , REPLACE INTO a UPDATE , na "husté" a "fragmentované" tabulky (nejsem si úplně jistý jak, myslím, že to bylo ve smyslu DELETE FROM ... ORDER BY RAND() LIMIT ... s pevným výchozím bodem, takže je stále srovnatelný) a povolenými a deaktivovanými indexy.

Testovali jsme to s mnoha různými verzemi MySQL (5.0.27, 5.0.96, 5.1.something, 5.5.27, 5.6.2) na Windows a Linux (ne však stejné verze na obou OS). MyISAM vyhrál pouze tehdy, když byl stůl prázdný. InnoDB byl rychlejší, když už byla k dispozici data, a obecně fungoval lépe (kromě hdd-space – MyISAM je na disku menší).

Přesto, abyste z toho měli skutečný užitek, musíte si to sami otestovat – s různými verzemi, různými nastaveními konfigurace a velkou trpělivostí – zejména s ohledem na podivné nekonzistence (5.0.97 bylo mnohem rychlejší než 5.5.27 se stejnou konfigurací – my stále hledám příčinu). To, co jsme našli, bylo že DISABLE KEYS a ENABLE KEYS jsou téměř bezcenné a někdy škodlivé, pokud nezačnete s prázdnou tabulkou.



  1. „Je to tajné? Je to bezpečné?" Zpracování citlivých dat při modelování dat

  2. Chyba 508 – Bylo dosaženo limitu zdrojů (web php+mysql+jquery)

  3. Účastníte se PASS Summit v Charlotte?

  4. Jak propojit databázi s Amazon VPC