Die Speicher-Engine ARCHIVE dient der
Speicherung großer Datenmengen ohne Indizes mit einem sehr
kleinen Speicherbedarf.
Die Speicher-Engine ARCHIVE ist in den
Binärdistributionen von MySQL enthalten. Wenn Sie MySQL aus der
Quelldistribution bauen, aktivieren Sie diese Speicher-Engine,
indem Sie configure mit der Option
--with-archive-storage-engine aufrufen.
Die Quelle für die ARCHIVE-Engine finden Sie
im Verzeichnis storage/archive der
MySQL-Quelldistribution.
Ob die ARCHIVE-Engine zur Verfügung steht,
prüfen Sie mit folgender Anweisung:
mysql> SHOW VARIABLES LIKE 'have_archive';
Wenn Sie eine ARCHIVE-Tabelle anlegen, erzeugt
der Server eine Tabellen-Formatdatei im Datenbankverzeichnis. Die
Datei beginnt mit dem Tabellennamen und hat die
Erweiterung.frm. Die Speicher-Engine legt
noch weitere Dateien an, deren Namen alle mit dem Tabellennamen
anfangen. Die Datendateien haben die Erweiterung
.ARZ und die Metadatendateien die Erweiterung
.ARM. Eine .ARN-Datei
kann bei Optimierungsoperationen erscheinen.
Die ARCHIVE-Engine unterstützt
INSERT und SELECT, aber
nicht DELETE, REPLACE oder
UPDATE. Sie unterstützt ORDER
BY-Operationen, BLOB-Spalten und im
Grunde alle Datentypen außer den raumbezogenen (Spatial-Daten)
(siehe Abschnitt 18.4.1, „Raumbezogene Datentypen in MySQL“). Außerdem nutzt
ARCHIVE Zeilensperren.
Seit MySQL 5.1.6 unterstützt ARCHIVE das
AUTO_INCREMENT-Spaltenattribut. Die
AUTO_INCREMENT-Spalten können einen
eindeutigen oder einen nicht-eindeutigen Index haben. Der Versuch,
einen Index auf einer anderen Spalte anzulegen, führt zu einem
Fehler. Außerdem unterstützt ARCHIVE die
Tabellenoption AUTO_INCREMENT in
CREATE TABLE- und ALTER
TABLE-Anweisungen. So kann der erste Wert der Folge für
eine neue Tabelle angegeben oder für eine vorhandene Tabelle
zurückgesetzt werden.
Seit MySQL 5.1.6 ignoriert die ARCHIVE-Engine
BLOB-Spalten, wenn diese nicht angefordert
werden, und übergeht sie beim Lesen. Früher bedeuteten die
folgenden beiden Anweisungen denselben Aufwand, doch seit der
Version 5.1.6 ist die zweite viel effizienter als die erste:
SELECT a, b, blob_col FROM archive_table; SELECT a, b FROM archive_table;
Speicherung: Zeilen werden beim
Einfügen komprimiert. ARCHIVE verwendet
verlustfreie zlib-Datenkompression (siehe
http://www.zlib.net/). Mit OPTIMIZE
TABLE können Sie die Tabelle analysieren und in ein
kleineres Format packen (einen Grund zur Verwendung von
OPTIMIZE TABLE finden Sie weiter unten in
diesem Abschnitt). Außerdem unterstützt diese Engine
CHECK TABLE. Mehrere verschiedene Arten von
Einfügungen sind möglich:
Eine INSERT-Anweisung schiebt die Zeilen
einfach in einen Kompressionspuffer, der nach Bedarf auf die
Platte zurückgeschrieben wird. Die Einfügung von Daten in
den Puffer ist durch eine Sperre geschützt. Mit
SELECT wird das Schreiben auf die
Festplatte erzwungen, sofern nicht nur INSERT
DELAYED-Einfügungen vorgekommen waren (diese werden
nur nach Bedarf auf die Platte geschrieben). Siehe
Abschnitt 13.2.4.2, „INSERT DELAYED“.
Eine Massen-Einfügeoperation (bulk insert) wird erst nach
ihrem Abschluss sichtbar, wenn nicht gleichzeitig andere
Einfügungen auftreten: In diesem Fall wird sie teilweise
sichtbar. Ein SELECT hat normalerweise
nicht zur Folge, dass eine Massen-Einfügeoperation auf die
Festplatte geschrieben wird, es sei denn, eine normale
Einfügeoperation tritt auf, während die andere gerade
geladen wird..
Anfragen: Bei Anfragen werden die
Zeilen nach Bedarf dekomprimiert; es gibt keinen Zeilen-Cache.
Eine SELECT-Operation führt einen kompletten
Tabellen-Scan durch: Wenn ein SELECT auftritt,
stellt es fest, wie viele Zeilen gerade zur Verfügung stehen und
liest diese Anzahl Zeilen. SELECT wird als
konsistente Leseoperation durchgeführt. Beachten Sie, dass viele
SELECT-Anweisungen während einer
Einfügeoperation die Datenkompression schwächt, es sei denn, Sie
verwenden nur Massen- oder verzögerte Einfügungen. Eine bessere
Kompression können Sie mit OPTIMIZE TABLE oder
REPAIR TABLE erzielen. Die Anzahl der Zeilen,
die SHOW TABLE STATUS für
ARCHIVE-Tabellen meldet, ist immer korrekt.
Siehe Abschnitt 13.5.2.5, „OPTIMIZE TABLE“,
Abschnitt 13.5.2.6, „REPAIR TABLE“ und
Abschnitt 13.5.4.21, „SHOW TABLE STATUS“.
Ein spezielles Forum zur Speicher-Engine
ARCHIVE finden Sie unter
http://forums.mysql.com/list.php?112.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.
