Am 8. Juni 2017 war das Wetter bewölkt. Die Stimmung ist klar.
Ich habe zwei Nächte hintereinander von einem Klassenkameraden geträumt, den ich schon lange nicht mehr kontaktiert hatte um morgens zu arbeiten. Das Mädchen ist derzeit auf Geschäftsreise in Guizhou, einem Ort mit wunderschöner Landschaft. Ich sagte: „Sie führen jetzt ein sehr erfolgreiches Leben.“ Das Mädchen sagte: „Das liegt daran, dass du meine nicht feuchtigkeitsspendende Seite noch nicht gesehen hast.“ Tatsächlich zeigen wir im Leben anderen immer unsere positive Seite und „verkleiden“ unsere unterdrückte Seite.
Gestern stellte mir ein Blogger auf dem Blog eine Frage und nannte mich sogar einen „großen Gott“. Gott“, also musste ich meine Anstrengungen verdoppeln und mich dem Ziel „Größe“ nähern.
Die vom Blogger gestellte Frage bezieht sich auf die MySQL-Datenbank, die die Daten-Engine und die Reparatur und Optimierung der Datentabelle-Anweisungen umfasst Nie zuvor in Betracht gezogen, nie verwendet. Also habe ich nach Informationen gesucht, um es zu verstehen, und jetzt fasse ich die Informationen, die ich gefunden habe, wie folgt zusammen.
1. MySQL-Datenbankspeicher-Engine
Konzept:
Die Speicher-Engine ist eigentlich die Art und Weise, wie Daten gespeichert werden, wie die gespeicherten Daten indiziert werden und wie Methoden zur Aktualisierung, Abfrage von Daten und andere technische Implementierungen. Daten werden in MySQL mithilfe verschiedener Technologien in Dateien (oder im Speicher) gespeichert, die jeweils unterschiedliche Speichermechanismen, Indizierungstechniken und Sperrebenen verwenden und letztendlich eine breite Palette unterschiedlicher Funktionen und Fähigkeiten bieten. In MySQL werden diese verschiedenen Technologien und unterstützenden zugehörigen Funktionen als Speicher-Engines bezeichnet.
(1) innoDB-Speicher-Engine
①Die MySQL-Tabelle der innodb-Speicher-Engine bietet Transaktions-, Rollback- und Systemabsturzreparaturfunktionen sowie Transaktionssicherheit der Parallelitätskontrolle mehrerer Versionen.
②innodb unterstützt Auto-Inkrement-Spalten (auto_increment). Wenn sie leer sind, wie kann sie automatisch beginnen, ausgehend vom vorhandenen Wert zu wachsen? , ist er größer als der aktuelle Wert. Wenn er immer noch groß ist, wird dieser Wert gespeichert.
③Die innodb-Speicher-Engine unterstützt Fremdschlüssel. Die Tabelle, in der sich der Fremdschlüssel befindet, wird als untergeordnete Tabelle (oder Slave-Tabelle) bezeichnet, und die Tabelle, von der er abhängt, wird als übergeordnete Tabelle (oder Haupttabelle) bezeichnet.
④Das Wichtigste an der Innodb-Speicher-Engine ist, dass sie Transaktionen und transaktionsbezogene Funktionen unterstützt.
⑤innodb-Speicher-Engine unterstützt MVCC-Sperren auf Zeilenebene.
⑥Innodb-Speicher-Engine-Index verwendet B+Tree.
(2) MyISAM-Speicher-Engine
1) MyISAM Diese Speicher-Engine unterstützt keine Transaktionen, unterstützt keine Sperren auf Zeilenebene und unterstützt nur gleichzeitig eingefügte Tabellensperren Hochlastauswahl .
2) Die MyISAM-Typtabelle unterstützt drei verschiedene Speicherstrukturen: statisch, dynamisch und komprimiert.
①Statischer Typ: bedeutet, dass die Größe der definierten Tabellenspalte fest ist (d. h. sie enthält keine Datentypen variabler Länge wie xblob, xtext, varchar usw.). ), sodass MySQL automatisch das statische Myisam-Format verwendet.
Die Leistung von Tabellen, die statische Formate verwenden, ist relativ hoch, da der Overhead, der zum Speichern von Daten in einem vorgegebenen Format während der Wartung und beim Zugriff erforderlich ist, sehr gering ist. Diese hohe Leistung wird jedoch im Austausch gegen Platz erhalten, da sie bei der Definition festgelegt ist. Unabhängig davon, wie groß der Wert in der Spalte ist, hat der Maximalwert Vorrang und nimmt den gesamten Platz ein.
②Dynamischer Typ: Wenn die Spalte (auch wenn nur eine Spalte vorhanden ist) als dynamisch definiert ist (xblob, xtext, varchar und andere Datentypen), verwendet myisam automatisch die dynamischer Typ.
Obwohl dynamische Tabellen weniger Platz beanspruchen als statische Tabellen, verringern sie die Leistung, da bei einer Änderung des Inhalts eines Felds dessen Position wahrscheinlich verschoben werden muss, was zur Erzeugung von Fragmenten führt. Wenn sich die Daten stärker ändern, nimmt die Fragmentierung zu und die Datenzugriffsleistung nimmt entsprechend ab.
Es gibt zwei Lösungen, um die Datenzugänglichkeit aufgrund der Fragmentierung zu verringern:
a. Verwenden Sie so viele statische Datentypen wie möglich.
b. Verwenden Sie häufig die Anweisung „Tabelle optimieren“, die die Tabelle defragmentiert und durch Tabellenaktualisierungen und -löschungen verlorenen Speicherplatz wiederherstellt.
Wenn die Speicher-Engine die Optimierungstabelle nicht unterstützt, können Sie die Daten sichern und neu laden, was ebenfalls die Fragmentierung reduzieren kann.
③Komprimierter Typ: Wenn in dieser Datenbank eine Tabelle erstellt wird, die während des gesamten Lebenszyklus schreibgeschützt ist, wird in diesem Fall die komprimierte Tabelle von myisam verwendet, um den Speicherplatzverbrauch zu reduzieren.
3) MyISAM verwendet ebenfalls den B+Tree-Index, unterscheidet sich jedoch in der spezifischen Implementierung geringfügig von Innodb.
(3) MEMORY-Speicher-Engine
①Die Speicher-Engine unterscheidet sich ein wenig von einigen früheren Speicher-Engines. Sie verwendet im Speicher gespeicherte Daten, um Tabellen zu erstellen, und alle Daten werden auch im Speicher gespeichert.
②Jede Tabelle, die auf der Speicher-Engine basiert, entspricht tatsächlich einer Festplattendatei. Der Dateiname und der Tabellenname der Datei sind gleich und der Typ ist .frm. Diese Datei speichert nur die Struktur der Tabelle, und ihre Datendateien werden im Speicher gespeichert, was eine schnelle Datenverarbeitung fördert und die Verarbeitungsfähigkeiten der gesamten Tabelle verbessert.
③Die Speicher-Engine verwendet standardmäßig einen Hash-Index (HASH), der schneller ist als die Verwendung von B+Tree. Wenn Leser B-Tree verwenden möchten, können sie beim Erstellen darauf verweisen.
④Speicher-Engine-Dateidaten werden im Speicher gespeichert. Wenn im mysqld-Prozess eine Ausnahme auftritt, verschwinden diese Daten, wenn die Maschine neu gestartet oder heruntergefahren wird. Daher ist der Lebenszyklus von Tabellen in der Speicher-Engine sehr kurz und wird im Allgemeinen nur einmal verwendet.
(4) BlackHole-Speicher-Engine (Black-Hole-Engine)
unterstützt Transaktionen und unterstützt MVCC-Sperren auf Zeilenebene. Es wird hauptsächlich für die Protokollierung oder synchronisierte Archivierung verwendet Zweck, sonst ist es nicht für den Einsatz geeignet!
2. Tabellen unter MySQL optimieren und reparieren
Beim langfristigen Einsatz von MySQL kann durch die Reparatur der Tabelle der belegte Speicherplatz reduziert und gesichert werden erleichtert.
REPARATURTABELLE „Tabellenname“ Tabelle reparieren. TABELLE „Tabellenname“ OPTIMIEREN. Tabelle optimieren.
REPARATURTABELLE – wird zum Reparieren beschädigter Tabellen verwendet.
TABELLE OPTIMIEREN – Tabelle optimieren, um ungenutzten Datenbankspeicherplatz zurückzugewinnen. Wenn die Datenzeilen in der Tabelle gelöscht werden, wird der belegte Speicherplatz nicht sofort wiederhergestellt. Nach Verwendung des Befehls OPTIMIZE TABLE wird der Speicherplatz wiederhergestellt und die Datenzeilen auf der Festplatte werden neu angeordnet.
Hinweis: Es befindet sich auf der Festplatte, nicht in der Datenbank.
In den meisten Fällen ist es nicht erforderlich, OPTIMIZE TABLE auszuführen. Sie müssen nur regelmäßig (einmal pro Woche oder einmal im Monat) einen Datentabellenoptimierungsvorgang durchführen, nachdem Sie Datenzeilen in Stapeln gelöscht haben, und nur ausführen es auf diesen spezifischen Tabellen.
Das obige ist der detaillierte Inhalt vonZusammenfassung des Wissens über die MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!