GNU/Linux >> Znalost Linux >  >> Cent OS

MyISAM vs. InnoDB:Srovnání

Úvod

Výběr správného úložiště je zásadním strategickým rozhodnutím, které ovlivňuje budoucí vývoj. V závislosti na vašem případu použití se rozhodněte mezi dvěma hlavními moduly úložiště pro MySQL – MyISAM nebo InnoDB .

V tomto článku se dozvíte hlavní rozdíly mezi úložnými moduly MyISAM a InnoDB, jak zkontrolovat, který úložný modul používáte, a jak jej převést.

Předpoklady

  • Přístup k terminálu /příkazovému řádku
  • Funkční databáze MySQL
  • phpMyAdmin nainstalován

Co jsou MyISAM a InnoDB

MyISAM a InnoDB jsou úložiště MySQL. Úložné stroje jsou komponenty systému správy databází používané k manipulaci s daty v databázi.

MyISAM

MyISAM je zkratka pro Indexed Sequential Access Method. Do prosince 2009 to byl výchozí modul úložiště pro MySQL. S vydáním MySQL 5.5 byl MyISAM nahrazen InnoDB.

MyISAM je založen na algoritmu ISAM, který rychle zobrazuje informace z velkých souborů dat. Má malou datovou stopu a je nejvhodnější pro datové sklady a webové aplikace.

InnoDB

InnoDB je výchozím úložištěm pro MySQL od vydání MySQL 5.5. Nejlépe se hodí pro velké databáze, které obsahují relační data.

InnoDB se zaměřuje na vysokou spolehlivost a výkon, díky čemuž je skvělý pro systémy pro správu obsahu. Jedním z nejznámějších použití InnoDB je software MediaWiki, který pohání Wikipedii.

Hlavní rozdíly mezi MyISAM a InnoDB

Pojďme se podívat na hlavní rozdíly mezi MyISAM a InnoDB.

Funkce MyISAM InnoDB
Typ Netransakční Transakční
Zamykání Zamykání stolu Zamykání na úrovni řádků
Cizí klíče Ne Ano
Ukládání tabulek, indexů a dat Tři samostatné soubory (.frm, .myd a .myi) Tabulkový prostor
Navrženo pro Rychlost Výkon
KYSELINA Ne Ano

Typ úložiště

V závislosti na metodě vrácení zpět existují dva typy úložišť:

  • Netransakční – možnosti zápisu je třeba vrátit zpět ručně.
  • Transakční – Pokud se možnosti zápisu nedokončí, automaticky se vrátí zpět.

Shrnutí: MyISAM je netransakční, zatímco InnoDB je transakční typ úložiště.

Zamykání

Uzamčení v MySQL je možnost, která zabraňuje dvěma nebo více uživatelům upravovat data současně. Když je aktivována možnost zamykání, uživatel nemůže měnit data. Tato funkce zachovává platnost všech dat.

MyISAM používá uzamykání tabulky jako výchozí způsob zamykání. Umožňuje jediné relaci upravovat tabulky najednou. Stoly jsou vždy uzamčeny ve stejném pořadí. Metoda zamykání tabulky je nejvhodnější pro databáze pouze pro čtení, které nevyžadují mnoho paměti.

Příklad uzamčení tabulky:

Dotazy Sloupec 1 Sloupec 2 Sloupec 3
Dotaz 1 (aktualizace) Psaní Data Data
Dotaz 2 (čekejte) Data Data Data
Dotaz 3 (čekejte) Data Data Data

InnoDB používá uzamykání na úrovni řádků jako výchozí způsob zamykání. Podporuje více relací na vybraných řádcích tím, že pouze zamyká řádky v procesu úpravy. Zamykání řádků je nejvhodnější pro databáze, které mají více uživatelů. Nevýhodou je, že vyžaduje hodně paměti a zabere více času dotazování a úpravy dat.

Příklad zamykání na úrovni řádku:

Dotazy Sloupec 1 Sloupec 2 Sloupec 3
Dotaz 1 (aktualizace) Psaní Data Data
Dotaz 2 (vyberte) Čtení Data Čtení
Dotaz 3 (aktualizace) Data Psaní Data

Shrnutí: MyISAM používá zamykání tabulky, zatímco InnoDB používá jako výchozí metodu zamykání na úrovni řádků.

Zahraniční klíče

Cizí klíč je sloupec (nebo kolekce sloupců) v jedné tabulce, který se propojuje se sloupcem (nebo kolekcí sloupců) v jiné tabulce. Zabraňuje akcím, které ničí propojení mezi tabulkami a možnosti vkládání neplatných dat.

Shrnutí: MyISAM nepodporuje možnost cizího klíče, zatímco InnoDB ano.

Tabulka, index a úložiště dat

Tyto dva moduly úložiště se liší podle toho, jak ukládají soubory.

MyISAM ukládá tabulky, index a data do tří samostatných souborů:

  • .frm – Formát tabulky obsahující strukturu tabulky nebo definici tabulky.
  • .myi – Indexový soubor s indexy pro každou tabulku.
  • .myd – Datový soubor, který obsahuje data každé tabulky.

InnoDB ukládá strukturu tabulky do .frm a má tabulkový prostor kde ukládá indexy a data.

Shrnutí: MyISAM ukládá data do tří samostatných souborů, zatímco InnoDB ukládá data do jednoho souboru.

Podpora ACID

KYSELINA odkazuje na vlastnosti databázových transakcí:atomicita , konzistence , izolace a trvanlivost . Zaručuje dokončení transakce v případě chyby nebo selhání systému.

Další informace o modelech databázových transakcí naleznete v našem článku ACID vs. Base.

Shrnutí: MyISAM nepodporuje ACID, zatímco InnoDB plně vyhovuje ACID.

Jak zkontrolovat, zda používáte MyISAM nebo InnoDB

Pro manipulaci s daty je nezbytné použití správného úložiště. Nesprávný modul úložiště může vést k chybám v dotazování a snížení rychlosti a výkonu. Proto je zásadní zkontrolovat, zda jsou MyISAM nebo InnoDB nastaveny jako výchozí úložiště.

Poznámka: Ladění výkonu MySQL vyžaduje vyhodnocení mnoha faktorů. Pro nejlepší výkon doporučujeme používat InnoDB místo MyISAM.

Zkontrolujte pomocí příkazového řádku

Vyhledejte informace o výchozím modulu úložiště podle níže uvedených kroků.

1. Otevřete terminál a přihlaste se do prostředí MySQL. Poté zobrazte seznam databází:

SHOW DATABASES;

2. Najděte preferovanou databázi ze seznamu a vyberte ji:

USE database_name;

Terminál zobrazí potvrzovací zprávu o změně databáze.


3. Dále použijte SHOW CREATE TABLE příkaz pro zobrazení informací o tabulce a úložišti:

SHOW CREATE TABLE database_name.table_name;

V níže uvedeném příkladu výstup uvádí InnoDB jako výchozí úložiště.

Poznámka: Nahraďte database_name a table_name s názvem vaší databáze a tabulky.

Zkontrolujte pomocí phpMyAdmin

Existují dva způsoby, jak zkontrolovat výchozí úložiště v phpMyAdmin:

  • Ze seznamu tabulek.
  • Spuštěním dotazu.

Ze seznamu tabulek

Pomocí seznamu tabulek můžete zjistit, které tabulky používají MyISAM nebo InnoDB jako výchozí úložiště.

1. Otevřete phpMyAdmin a vyberte preferovanou databázi ze seznamu.

2. V Seznamu tabulek , vyhledejte Typ ve sloupci zobrazíte typy úložných strojů. V našem příkladu Zákazníci tabulka používá MyISAM jako výchozí úložiště.

Spuštění dotazu

Dalším způsobem, jak zobrazit výchozí modul úložiště, je spustit dotaz.

1. Přihlaste se do phpMyAdmin a vyberte preferovanou databázi ze seznamu databází.

2. Vyberte SQL pro přístup k možnostem dotazu.

3. Zadáním následujícího příkazu zobrazíte všechny tabulky používající MyISAM jako úložiště:

SELECT TABLE_NAME, ENGINE FROM information_schema. TABLES WHERE TABLE_SCHEMA = 'database_name' and ENGINE = 'myISAM'

4. Klikněte na Přejít spustit dotaz.

Poznámka: Nahraďte database_name s názvem vaší databáze.

Výstup zobrazí seznam všech tabulek obsahujících úložiště MyISAM.

Stejný příkaz můžete použít k vyhledání databází pomocí úložiště InnoDB. Upravte dotaz nahrazením ENGINE = 'myISAM' s ENGINE = 'InnoDB' .

Jak převést MyISAM a InnoDB

Problémy mohou nastat, pokud používáte InnoDB v každodenních procesech, zatímco starší tabulka používá MyISAM. Proto je nezbytné vědět, jak převádět tabulky.

Převést Storage Engine přes terminál

Spusťte ALTER TABLE příkaz v prostředí MySQL pro převod úložiště z MyISAM na InnoDB a naopak.

  • Chcete-li převést InnoDB na MyISAM, spusťte:
ALTER TABLE database_name.table_name ENGINE=MyISAM;
  • Chcete-li převést MyISAM na InnoDB, spusťte:
ALTER TABLE database_name.table_name ENGINE=InnoDB;

Terminál vytiskne potvrzovací zprávu.

Převést Storage Engine pomocí phpMyAdmin

Existují dva způsoby, jak převést modul úložiště v phpMyAdmin:

  • Pomocí Tabulkových operací menu.
  • Spuštění dotazu.

Použití nabídky operací

1. Vyberte preferovanou databázi z nabídky databáze.

2. Vyberte tabulku, pro kterou chcete upravit modul úložiště, a vyberte Další rozevírací nabídky.

3. Klikněte na Operace pro přístup k nabídce.


4. Vyhledejte Storage Engine nastavení v tabulce možnosti a kliknutím na modul úložiště načtěte rozevírací nabídku obsahující různé moduly úložiště. Vyberte InnoDB ze seznamu a klikněte na PŘEJÍT pro uložení změny.

Spuštění dotazu

1. Otevřete SQL příkazové centrum pro preferovanou databázi.

2. Spusťte ALTER TABLE příkaz v prostředí MySQL pro převod modulu úložiště.

Chcete-li převést na MyISAM, spusťte:

ALTER TABLE table_name ENGINE=MyISAM;

Chcete-li převést na InnoDB, spusťte:

ALTER TABLE.table_name ENGINE=InnoDB;

3. Klikněte na tlačítko PŘEJÍT tlačítko pro spuštění dotazu.

Úspěšně jste převedli modul úložiště.


Cent OS
  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. MySQL – Převod na data podle tabulky pro InnoDB

  3. Inkrementální zálohování MySQL – bodové zálohování a obnova databází InnoDB a MyIsam

  1. Hadoop vs Spark – podrobné srovnání

  2. Jak vytvořit Keyspace v Cassandře

  3. Prometheus vs Zabbix:Srovnání nástrojů pro monitorování sítě

  1. MySQL datové typy

  2. Co je vícemodelová databáze?

  3. Co je to databáze dokumentů?