www.wikidata.de-de.nina.az
InnoDB ist ein freies Speichersubsystem fur das Datenbankmanagementsystem MySQL Sein Hauptvorteil gegenuber anderen Speichersubsystemen fur MySQL ist dass Transaktionssicherheit und referenzielle Integritat uber Fremdschlussel gewahrleistet werden InnoDBBasisdatenEntwickler Heikki Tuuri Innobase Oy Inc Oracle Corporation Betriebssystem Unix Linux Windows OS X i5 OS OpenVMSProgrammiersprache CKategorie SpeichersubsystemLizenz Duales Lizenzsystem Kommerziell und GNU General Public License deutschsprachig neininnodb comInnobase Oy der Hersteller von InnoDB wurde im Oktober 2005 von Oracle Systems ubernommen 1 Die Software ist doppellizenziert Fur Open Source Anwendungen steht sie unter der GPL fur Nicht Open Source Anwendungen ist daneben eine proprietare Lizenz erhaltlich 2 Inhaltsverzeichnis 1 Eigenschaften 2 Tabellenraum 3 Speicherfreigabe 4 Literatur 5 Weblinks 6 EinzelnachweiseEigenschaften BearbeitenBei MySQL Version 5 0 wird InnoDB bei einer Installation unter Windows als Standard Speichersubsystem installiert Bei einer Installation unter Unix wird MyISAM als Standard Speichersubsystem installiert Seit MySQL 5 5 ist InnoDB das Standard Speichersubsystem unter allen Systemen 3 InnoDB unterstutzt Transaktionen das heisst Die in der Transaktion erfolgten Schreiboperationen konnen durch einen Transaktionsabbruch abort widerrufen werden rollback Wiederholte Lesezugriffe innerhalb einer Transaktion sind von Schreibzugriffen anderer Transaktionen nicht beeinflusst Isolation aus ACID Schreibzugriffe in einer Transaktion bewirken eine Schreibsperre der betroffenen Datensatze fur alle anderen Transaktionen Row level locking 4 Um explizit eine Tabelle mit InnoDB als Speichersubsystem anzulegen kann die SQL Option ENGINE verwendet werden CREATE TABLE t i INT ENGINE InnoDB Anmerkung Altere Versionen von MySQL verwenden das Schlusselwort TYPE statt ENGINE Beispiel TYPE INNODB MySQL 5 0 und 5 1 unterstutzen diese Syntax abwartskompatibel allerdings wird die Verwendung von ENGINE empfohlen denn seit MySQL 5 5 wird nur noch das Schlusselwort ENGINE unterstutzt 5 6 Tabellenraum BearbeitenInnoDB speichert die Tabellenstruktur in frm Dateien Nutzdaten und Indizes in einem Tabellenraum Der Tabellenraum wird vor Beginn der Arbeit mit dem Datenbankserver eingestellt und kann sich uber eine oder mehrere Dateien erstrecken Die Dateien des Tabellenraums konnen auf verschiedene Verzeichnisse verteilt werden Ahnlich einer Festplattenpartition kann die Konfiguration des Tabellenraums nicht nachtraglich angepasst werden ohne Datenverlust zu riskieren Nach einer Anderung der Konfiguration des Tabellenraums wird die gesamte Datenbank von einer Sicherungskopie wiederhergestellt Mit der Option innodb file per table wird fur jede Tabelle ein eigener Tabellenraum angelegt d h MySQL speichert Nutzdaten und Indizes in der Datei t ibd zusammen mit der Strukturdatei t frm im Datenbankverzeichnis Tabellendaten konnen mit der Null Operation aus dem Tabellenraum nachtraglich extrahiert werden ALTER TABLE t ENGINE InnoDB Speicherfreigabe BearbeitenNach dem Loschen von InnoDB Tabellen wird der Speicher innerhalb des Tabellenraums freigegeben Diese Freigabe wird jedoch nicht an das Betriebssystem weitergegeben sodass die Grosse der Tabellenraumdateien nicht reduziert wird Die aufwandige Freigabe des Festplattenspeichers erfolgt durch Loschen des gesamten Tabellenraums und Wiederherstellung der Datenbank von einer Sicherungskopie Eine Alternative bietet der Per Table Tabellenraum bei dem fur jede Tabelle eine eigene Tabellenraumdatei erzeugt und nach dem Loschen der Tabelle wieder geloscht wird 7 Der Nachteil dieses Modus ist dass man einen Teil der Datenverwaltung von MySQL auf das Betriebssystem verlagert das diese u U weniger effizient erledigt Vor dem Erstellen und Fullen einer grossen Tabelle kann der Per Table Tabellenraum zur Laufzeit aktiviert und wieder deaktiviert werden um spater den Festplattenspeicher fur eine einzelne Tabelle gezielt freizugeben 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 nachtraglich 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 loschen und Festplattenspeicher freigeben DROP TABLE b Tabelle loschen Festplattenspeicher wird nicht freigegebenLiteratur BearbeitenSasha Pachev Understanding MySQL Internals O Reilly 2007 ISBN 978 0 596 00957 1Weblinks BearbeitenEinfuhrung in InnoDB auf MySQL com englisch Einzelnachweise Bearbeiten Oracle verkundet Aufkauf von Innobase einem Hersteller von Open Source Software Oracle abgerufen am 16 Januar 2015 Lizenzierung von MySQL und InnoDB InnoDB com abgerufen am 9 Juli 2010 http www oracle com us corporate press 195726 siehe z B Pachev Understanding MySQL Internals Chapter 10 Storage Engines Archivlink Memento des Originals vom 29 Januar 2012 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot dev mysql com http dev mysql com doc refman 5 5 en create table html InnoDB Speicher automatisch freigeben 15 Mai 2013 abgerufen am 10 Juni 2013 Abgerufen von https de wikipedia org w index php title InnoDB amp oldid 236234627