InnoDB

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 31. Juli 2012 um 16:33 Uhr durch Hiddentruth (Diskussion | Beiträge) (Tabellenraum). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen
InnoDB
Basisdaten

Entwickler Heikki Tuuri, Innobase Oy Inc. (Oracle Corporation)
Betriebssystem Unix, Linux, Windows, Mac OS X, i5/OS, OpenVMS
Programmier­sprache C
Kategorie Storage-Engine
Lizenz Duales Lizenzsystem (Kommerziell und GNU General Public License)
deutschsprachig nein
innodb.com

InnoDB ist eine freie Storage-Engine für das Datenbankmanagementsystem MySQL. Ihr Hauptvorteil gegenüber anderen Storage-Engines für MySQL ist, dass Transaktionssicherheit und referenzielle Integrität über Fremdschlüssel gewährleistet werden.

Innobase Oy, der Hersteller von InnoDB, wurde im Oktober 2005 von Oracle Systems übernommen.[1]

Die Software ist doppellizenziert: Für Open-Source-Anwendungen steht sie unter der GPL; für Nicht-Open Source-Anwendungen ist daneben eine proprietäre Lizenz erhältlich.[2]

Eigenschaften

Bei MySQL Version 5.0 wird InnoDB bei einer Installation unter Windows als Standard-Engine installiert. Bei einer Installation unter Unix wird MyISAM als Standard-Engine installiert. Seit MySQL 5.5 ist InnoDB die Standard-Speicher-Engine unter allen Systemen.[3]

InnoDB unterstützt Transaktionen, das heißt:

  • Die in der Transaktion erfolgten Schreiboperationen können 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 Datensätze für alle anderen Transaktionen (Row level locking).[4]

Um explizit eine Tabelle mit InnoDB als Engine anzulegen, kann die SQL-Option ENGINE verwendet werden:

CREATE TABLE t (i INT) ENGINE = InnoDB;

(Anmerkung: Ältere Versionen von MySQL verwenden das Schlüsselwort TYPE statt ENGINE (Beispiel: TYPE = INNODB). MySQL 5.0 und 5.1 unterstützen diese Syntax abwärtskompatibel, allerdings wird die Verwendung von ENGINE empfohlen, denn seit MySQL 5.5 wird nur noch das Schlüsselwort ENGINE unterstützt.)[5][6]

Tabellenraum

InnoDB speichert Tabellenstruktur in frm-Dateien, Nutzdaten und Indizes in einem Tabellenraum. Der Tabellenraum wird vor Beginn der Arbeit mit dem Datenbankserver eingestellt und kann sich über eine oder mehrere Dateien erstrecken. Die Dateien des Tabellenraums können auf verschiedene Verzeichnisse verteilt werden. Ähnlich einer Festplattenpartition kann die Konfiguration des Tabellenraums nicht nachträglich angepasst werden, ohne Datenverlust zu riskieren. Nach einer Änderung der Konfiguration des Tabellenraums wird die gesamte Datenbank von einer Sicherungskopie wiederhergestellt.

Mit der Option innodb_file_per_table wird für 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 können mit der Null-Operation aus dem Tabellenraum nachträglich extrahiert werden:

</syntaxhighlight>ALTER TABLE t ENGINE=InnoDB<syntaxhighlight>

Literatur

Einzelnachweise

  1. Oracle verkündet Aufkauf von Innobase, einem Hersteller von Open-Source-Software. Oracle, abgerufen am 9. Juli 2010.
  2. Lizenzierung von MySQL und InnoDB. InnoDB.com, abgerufen am 9. Juli 2010.
  3. http://www.oracle.com/us/corporate/press/195726
  4. siehe z.B. Pachev: Understanding MySQL Internals, Chapter 10: Storage Engines
  5. http://dev.mysql.com/doc/refman/5.1/de/create-table.html
  6. http://dev.mysql.com/doc/refman/5.5/en/create-table.html