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.