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

Jaký je rozdíl mezi MyISAM a InnoDB?

Hlavní rozdíly mezi InnoDB a MyISAM ("s ohledem na návrh tabulky nebo databáze", na který jste se ptal) jsou v podpoře "referenční integrity" a "transakcí".

Pokud potřebujete, aby databáze vynucovala omezení cizích klíčů, nebo potřebujete, aby databáze podporovala transakce (tj. změny provedené dvěma nebo více operacemi DML, které jsou zpracovány jako jedna jednotka práce, přičemž všechny změny jsou buď použity, nebo všechny změny vráceny) pak byste si vybrali jádro InnoDB, protože tyto funkce v jádru MyISAM chybí.

To jsou dva největší rozdíly. Dalším velkým rozdílem je souběžnost. S MyISAM získá příkaz DML exkluzivní zámek na stole, a když je tento zámek držen, žádná jiná relace nemůže na stole provést operaci SELECT nebo DML.

Tyto dva konkrétní motory, na které jste se ptali (InnoDB a MyISAM), mají různé konstrukční cíle. MySQL má také další úložné stroje s vlastními cíli návrhu.

Takže při výběru mezi InnoDB a MyISAM je prvním krokem určení, zda potřebujete funkce poskytované InnoDB. Pokud ne, pak je na zvážení MyISAM.

Podrobnější diskuse o rozdílech je poněkud nepraktická (v tomto fóru) chybí podrobnější diskuse o problémovém prostoru... jak bude aplikace databázi využívat, kolik tabulek, velikost tabulek, zatížení transakcí, objemy výběru , vkládání, aktualizace, požadavky na souběžnost, funkce replikace atd.

Logický návrh databáze by měl být zaměřen na analýzu dat a požadavky uživatelů; volba použít relační databázi by přišla později a ještě později by volba MySQL jako systému správy relačních databází a pak výběr úložiště pro každou tabulku.



  1. Nesprávné řazení/kompletace/pořadí s mezerami v Postgresql 9.4

  2. Vše, co byste měli vědět o SQL Server JOINS

  3. Implementace vlastního řazení

  4. Vložit všechna data datagridview do databáze najednou