Die Tabellen der MyISAM-Speicher-Engine befinden sich in der Datenbank und jede Tabelle wird als drei physische Dateien gespeichert, die nach dem Tabellennamen benannt sind. Zunächst muss eine .frm-Datei vorhanden sein, die Informationen zur Tabellenstrukturdefinition speichert, was für jede Speicher-Engine unverzichtbar ist. Es gibt auch .MYD- und .MYI-Dateien, die Tabellendaten (.MYD) und Indexdaten (.MYI) speichern ) jeweils. Jede Tabelle verfügt über nur drei Dateien als Speicher für Tabellen des MyISAM-Speichertyps. Das heißt, egal wie viele Indizes die Tabelle hat, sie werden alle in derselben .MYI-Datei gespeichert.
MyISAM unterstützt die folgenden drei Arten von Indizes:
1. B-Tree-Index
B-Tree-Index bedeutet, wie der Name schon sagt, dass alle Indexknoten dem folgen Bilanzbaum Datenstruktur zum Speichern, alle Indexdatenknoten befinden sich in Blattknoten.
2. R-Tree-Index
Die Speichermethode des R-Tree-Index unterscheidet sich etwas von der des B-Tree-Index. Er dient hauptsächlich der Indizierung von Feldern, die Speicherplatz und Multi-Tree-Index speichern. Dimensionsdaten, daher unterstützt die aktuelle MySQL-Version nur Felder vom Typ Geometrie für die Indizierung.
3. Volltextindex
Der Volltextindex ist das, was wir Volltextindex nennen, und seine Speicherstruktur ist ebenfalls B-Tree. Hauptsächlich, um das Ineffizienzproblem zu lösen, wenn wir eine ähnliche Abfrage verwenden müssen.
MyISAM Unter den oben genannten drei Indextypen wird gelegentlich der B-Tree-Index am häufigsten verwendet, in allgemeinen Systemen wird der R-Tree-Index jedoch selten verwendet. Darüber hinaus unterliegt der B-Tree-Index von MyISAM einer größeren Einschränkung, d. h. die Summe der Längen aller an einem Index beteiligten Felder darf 1000 Byte nicht überschreiten.
Obwohl jede MyISAM-Tabelle in einer .MYD-Datei mit demselben Suffixnamen gespeichert ist, ist das Speicherformat jeder Datei möglicherweise nicht genau dasselbe, da das Datenspeicherformat von MyISAM in drei unterteilt ist Formate: statisch (FIXED) mit fester Länge, dynamisch (DYNAMIC) mit variabler Länge und komprimiert (COMPRESSED). Natürlich können wir beim Erstellen der Tabelle zwischen den drei Formaten {COMPRESSED | Bei Nichtkomprimierung hängt die Frage, ob sie statisch oder dynamisch ist, von der Definition eines Felds in unserer Tabelle ab. Solange die Tabelle Felder mit variabler Länge enthält, muss sie im DYNAMISCHEN Format vorliegen. Wenn keine Felder mit variabler Länge vorhanden sind, kann sie natürlich auch mit dem Befehl „Alter Table“ erzwungen werden Tabelle mit Eine DYNAMIC-Tabelle mit Feldern vom Typ VARCHAR wird in FIXED konvertiert, aber das Ergebnis ist, dass der ursprüngliche Feldtyp VARCHAR automatisch in den Typ CHAR konvertiert wird. Im Gegensatz dazu wird bei der Konvertierung von FIXED in DYNAMIC auch das Feld vom Typ CHAR in den Typ VARCHAR konvertiert. Daher müssen Sie bei der manuell erzwungenen Konvertierung vorsichtig sein.
Sind die Tabellen der MyISAM-Speicher-Engine zuverlässig genug? Das MySQL-Benutzerreferenzhandbuch listet die Beschädigung von Tabellendateien auf, die in den folgenden Situationen auftreten können:
1 Wenn mysqld während der Ausführung von Schreibvorgängen beendet wird oder andere Situationen zu einer abnormalen Beendigung führen; . Host-Absturz;
3. Festplatten-Hardwarefehler
4.
Wenn in einer bestimmten Tabellendatei der MyISAM-Speicher-Engine ein Fehler auftritt, betrifft dieser nur die Tabelle und nicht andere Tabellen, geschweige denn andere Datenbanken. Wenn wir während der Ausführung unserer Datenbank ein Problem mit einer MyISAM-Tabelle feststellen, können wir mit dem Befehl „check table“ versuchen, sie online zu überprüfen, und mit dem Befehl „repair table“ versuchen, sie zu reparieren. Wenn die Datenbank geschlossen ist, können wir auch das Tool myisamchk verwenden, um eine (oder mehrere) Tabellen in der Datenbank zu erkennen oder zu reparieren. Es wird jedoch dringend empfohlen, die Tabelle nicht einfach zu reparieren, es sei denn, dies ist unbedingt erforderlich, und vor der Reparatur so viel Backup wie möglich zu erstellen, um unnötige Folgen zu vermeiden.
Darüber hinaus können die Tabellen der MyISAM-Speicher-Engine theoretisch von mehreren Datenbankinstanzen gleichzeitig genutzt und betrieben werden, wir empfehlen dies jedoch nicht und es wird auch im offiziellen MySQL-Benutzerhandbuch erwähnt. Es wird empfohlen, so viel wie möglich auszuprobieren. Teilen Sie MyISAM-Speicherdateien nicht mit mehreren MySQL-Servern.
Das Obige ist die Einführung der MySQL-Speicher-Engine MyISAM-Speicher-Engine. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).