InnoDB

InnoDB
Základní data

vývojář Heikki Tuuri, Innobase Oy Inc. ( Oracle Corporation)
operační systém Unix , Linux , Windows , OS X , i5 / OS , OpenVMS
programovací jazyk C.
kategorie Subsystém úložiště
Licence Duální licenční systém ( komerční a GNU General Public License )
Německy mluvící Ne
innodb.com

InnoDB je bezplatný úložný subsystém pro systém správy databází MySQL . Jeho hlavní výhodou oproti jiným úložným subsystémům pro MySQL je, že zabezpečení transakcí a referenční integrita jsou zaručeny pomocí cizích klíčů .

Innobase Oy, výrobce InnoDB, získala společnost Oracle Systems v říjnu 2005 .

Tento software má dvojitou licenci : Pro aplikace s otevřeným zdrojovým kódem spadá pod GPL ; proprietární licence je k dispozici také pro aplikace, které nejsou otevřenými zdroji.

charakteristiky

S MySQL verze 5.0 je InnoDB nainstalován jako standardní úložný subsystém při instalaci na Windows . Při instalaci pod Unixem se MyISAM instaluje jako standardní úložný subsystém. Od MySQL 5.5 je InnoDB standardním úložným subsystémem mezi všemi systémy.

InnoDB podporuje transakce, to znamená:

  • Operace zápisu provedené v transakci lze zrušit ( vrátit zpět ) přerušením transakce .
  • Opakované přístupy pro čtení v rámci transakce nejsou ovlivněny přístupy pro zápis z jiných transakcí ( izolace z ACID ).
  • Výsledkem přístupu pro zápis v transakci je zámek zápisu u příslušných datových záznamů pro všechny ostatní transakce ( uzamčení na úrovni řádků ).

SQL volba ENGINEmůže být použita pro explicitně vytvořit tabulku s InnoDB jako úložného subsystému :

CREATE TABLE t (i INT) ENGINE = InnoDB;

(Poznámka: Starší verze MySQL používají klíčové slovo TYPEmísto ENGINE(Příklad :) TYPE = INNODB. MySQL 5.0 a 5.1 podporují tuto syntaxi zpětně kompatibilní, ale je ENGINEdoporučeno použití, protože od MySQL 5.5 je ENGINEpodporováno pouze klíčové slovo .)

Stolní prostor

InnoDB ukládá strukturu tabulky do souborů frm, uživatelských dat a indexů v tabulkovém prostoru. Tabulkový prostor je nastaven před zahájením práce s databázovým serverem a může zahrnovat jeden nebo více souborů. Soubory v tabulkovém prostoru lze distribuovat do různých adresářů. Podobně jako oddíl na pevném disku nelze konfiguraci tabulkového prostoru následně upravit bez rizika ztráty dat. Pokud se změní konfigurace tabulkového prostoru, obnoví se celá databáze ze záložní kopie.

S touto možností innodb_file_per_tableje pro každou tabulku vytvořen samostatný tabulkový prostor , tj. H. MySQL ukládá uživatelská data a indexy do souboru t.ibd společně se souborem struktury t.frm do adresáře databáze. Data tabulky lze následně extrahovat z tabulkového prostoru pomocí operace null:

ALTER TABLE t ENGINE=InnoDB;

Uvolnění paměti

Po odstranění tabulek InnoDB se uvolní paměť v tabulkovém prostoru. Tato sdílená položka však není předána operačnímu systému, takže velikost souborů tabulkového prostoru není snížena. Náročné uvolnění místa na pevném disku se provádí odstraněním celého tabulkového prostoru a obnovením databáze ze záložní kopie.

Alternativou je tabulkový prostor na tabulku, ve kterém je pro každou tabulku vytvořen samostatný soubor tabulkového prostoru a po odstranění tabulky znovu odstraněn. Nevýhodou tohoto režimu je, že část správy dat z MySQL je přesunuta do operačního systému, který může mít. Někdy se to děje méně efektivně. Před vytvořením a vyplněním velké tabulky lze tabulkový prostor za tabulkou znovu aktivovat a deaktivovat za běhu, aby se později uvolnilo místo na pevném disku pro jednotlivou tabulku.

SHOW VARIABLES LIKE 'innodb_file_per_table'; -- aktuelle Einstellung anzeigen
SET @@global.innodb_file_per_table = TRUE; -- Per-Table-Tablespace aktivieren
CREATE TABLE a (...) ENGINE=InnoDB; -- Eine Tabelle im Per-Table-Tablespace erstellen
ALTER TABLE t ENGINE=InnoDB; -- Eine Tabelle nachträglich in den Per-Table-Tablespace verschieben
SET @@global.innodb_file_per_table = FALSE; -- Per-Table-Tablespace deaktivieren
CREATE TABLE b (...) ENGINE=InnoDB; -- Eine Tabelle im Tablespace erstellen

DROP TABLE a; -- Tabelle löschen und Festplattenspeicher freigeben
DROP TABLE b; -- Tabelle löschen, Festplattenspeicher wird nicht freigegeben

literatura

webové odkazy

Individuální důkazy

  1. Oracle oznamuje akvizici společnosti Innobase, výrobce softwaru s otevřeným zdrojovým kódem . Oracle . Citováno 16. ledna 2015.
  2. Licencování MySQL a InnoDB . InnoDB.com. Citováno 9. července 2010.
  3. http://www.oracle.com/us/corporate/press/195726
  4. viz např. B. Pachev: Porozumění vnitřním podmínkám MySQL, Kapitola 10: Úložné moduly
  5. Archive link ( Memento v originálu od 29. ledna 2012 do internetového archivu ) Info: archiv odkaz se automaticky vloží a dosud nebyl zkontrolován. Zkontrolujte prosím původní a archivovaný odkaz podle pokynů a poté toto oznámení odstraňte.  @ 1@ 2Šablona: Webachiv / IABot / dev.mysql.com
  6. http://dev.mysql.com/doc/refman/5.5/en/create-table.html
  7. Automaticky uvolněte paměť InnoDB . 15. května 2013. Citováno 10. června 2013.