Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

韦小宝
韦小宝Original
2018-03-14 10:27:081969Durchsuche

In diesem Artikel geht es um die Speicher-Engine der MySQL-Datenbank. Studenten, die nicht viel über die Speicher-Engine der MySQL-Datenbank und unsere Engine wissen, sollten sich diesen Artikel über die Speicher-Engine von ansehen MySQL-Datenbank!

Einführung in die Optimierungsstruktur:

Typ Bedeutung
Speicherebene Speicher-Engine, Feldtypauswahl, Paradigmendesign
Designebene Index
类型 含义
存储层 存储引擎、字段类型选择、范式设计
设计层 索引、缓存、分区(分表)
架构 多个mysql服务器设置,读写分离(主从模式)
sql语句层 多个sql语句都可以达到目的的情况下,要选择性能高、速度快的sql语句
, Cache, Partition (Tabelle)
Architektur Ebene Mehrere MySQL-Servereinstellungen, lesen -Schreibtrennung (Master-Slave-Modus)
SQL-Anweisungsebene Wenn mehrere SQL-Anweisungen den Zweck erreichen können, wählen Sie eine leistungsstarke und schnelle SQL-Anweisung

Storage Engine

Storage Engine: Die von uns verwendeten Daten werden durch bestimmte Technologien in der Datenbank gespeichert. Die Datenbankdaten werden in Form von Dateien auf der Festplatte gespeichert. Es gibt mehr als eine Technologie und jede Technologie hat ihre eigene einzigartige Leistung und Funktionalität. Die Kombination aus Technologie und Funktionalität zum Speichern von Daten wird als „Storage Engine“ bezeichnet.

  • In MySQL häufig verwendete Speicher-Engines: Myisam oder Innodb und so weiter.

  • Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

    Datenbankdaten werden in verschiedenen Speicher-Engines gespeichert und alle Funktionen beziehen sich auf die aktuelle Speicher-Engine. Je nach den Anforderungen und Merkmalen des Projekts müssen verschiedene Speicher-Engines ausgewählt werden.

  • Alle in MySQL unterstützten Speicher-Engines anzeigen:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

innodb

Datenbank Drei Aspekte des Datendesigns Informationen für jede Datentabelle: Tabellenstruktur, Daten, Index

  • Technische Funktionen: Unterstützung von Transaktionen, Sperren auf Zeilenebene, Fremdschlüssel

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

Physische Speicherung von Tabellenstruktur, Daten und Indizes

  • Erstellen Sie eine Innodb-Datentabelle:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Tabellenstrukturdatei:

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

Physischer Dateispeicherort dieser Art von Daten und Index:

  • Die Daten und Indexinformationen aller Innodb-Tabellen werden in den folgenden ibdata1-Dateien

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

für gespeichert Tabellen vom Typ Innodb Die Daten und Indizes erstellen ihren eigenen entsprechenden Speicherplatz:

  • Standardmäßig erstellen die Daten und Indizes jeder Innodb-Tabelle keinen separaten Dateispeicher

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Stellen Sie die -Variable so ein, dass jede Innodb-Tabelle über eindeutige Daten- und Indexspeicherdateien verfügt:

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Erstellen Sie die Datentabelle „order2“ neu:

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Zu diesem Zeitpunkt verfügt die Datentabelle order2 über separate Daten- und Indexspeicherdateien:

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Egal wie Der Einstellungsstatus von innodb_file_per_table ändert sich später, die Daten und der Index von order2 haben unabhängige Speicherorte

Datenspeicherreihenfolge

  • Innodb-Tabelle Daten werden entsprechend dem Primärschlüssel gespeichert. Ordnen Sie alle geschriebenen Daten der Reihe nach an.

Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

Diese Funktion bestimmt, dass der Schreibvorgang dieses Tabellentyps langsamer ist.

Transaktionen und Fremdschlüssel

Diese Art von Datentabelle unterstützt Transaktionen und Fremdschlüssel

  • Transaktionen: http://blog.csdn.net/ change_any_time /article/details/79488020

Fremdschlüssel: zwei Datentabellen A und B. Der Primärschlüssel von Tabelle B ist das gewöhnliche Feld von Tabelle A. Wenn Sie sich dieses gewöhnliche Feld ansehen In Tabelle A ist es der „Fremdschlüssel“ der Tabelle, und die Verwendung des Fremdschlüssels unterliegt „Einschränkungen“.
Einschränkungen: Für die beiden oben genannten Tabellen müssen zuerst die Daten von Tabelle B und dann die Daten von Tabelle A geschrieben werden. Der Fremdschlüsselwert von Tabelle A muss aus dem Primärschlüssel-ID-Wert von Tabelle B stammen und darf dessen Bereich nicht überschreiten .

  • „Fremdschlüssel“ werden aufgrund von Einschränkungen in realen Projekten selten verwendet.

Parallelität

Die Parallelität dieser Art von Tabelle ist sehr hoch. Um die Datentabelle zu bedienen, ist die Dateninhalte werden nicht zufällig geändert, Informationen müssen „gesperrt“ sein
Die Sperrstufe dieses Typs ist: Zeilensperre. Nur der aktuell bearbeitete Datensatz ist gesperrt.

Myisam

Die Struktur, Daten und Indizes werden unabhängig voneinander gespeichert. Diese Art von Datentabelle verfügt über unabhängige Speicherdateien für die Tabellenstruktur, Daten und Indizes:

  • Myisam-Datentabelle erstellen
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Struktur, Daten und Index jeder Myisam-Datentabelle verfügen über unabhängige Speicherdateien
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

Tabelle>

Funktionen: Unabhängige Speicherdateien können separat gesichert und wiederhergestellt werden.

Reihenfolge der Datenspeicherung

  • Die Speicherung der Myisam-Tabellendaten besteht darin, alle geschriebenen Daten in natürlicher Reihenfolge anzuordnen.
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

    Diese Funktion bestimmt, dass der Schreibvorgang dieses Tabellentyps schneller ist.

Parallelität

Diese Funktion bestimmt, dass der Schreibvorgang dieses Tabellentyps schneller ist.

Komprimierungsmechanismus

Wenn eine Datentabelle viele Daten enthält, muss die Tabelle komprimiert werden, um Speicherplatz zu sparen.

  • Kopieren Sie die Daten der aktuellen Datentabelle:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Durch kontinuierliches Kopieren werden die Daten der Datentabelle order3 mehr als 2 Millionen Artikel:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Die entsprechende physische Größe der Datei, in der die 2 Millionen Informationen gespeichert sind, beträgt mehr als 40 Megabyte:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

Starten Sie die Komprimierung der Daten der Datentabelle „order3“

  • Komprimierungstool: myisampack.exe Tabellenname
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Index neu erstellen: myisamchk.exe -rq Tabellenname
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Dekomprimierungstool: myisamchk.exe –Tabellenname entpacken
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • 60 % des Speicherplatzes, in dem die Tabelleninformationen von order3 komprimiert sind:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Die order3 Die Datentabelle ist komprimiert, aber der Index ist weg:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Erstellen Sie den Index neu:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Der Index wird tatsächlich neu erstellt:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Datentabelle aktualisieren: Tabellenname leeren
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Vorkommen: Die komprimierte Datentabelle ist schreibgeschützt. Tabelle, Informationen können nicht geschrieben werden:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

Komprimierte Datentabellen haben Eigenschaften: häufige Schreibvorgänge sind nicht möglich, aber Datentabellen mit festem Inhalt können beispielsweise komprimiert werden (Datentabellen, die nationale und regionale Informationen usw. speichern)
Wenn Sie Daten schreiben müssen: Dekomprimieren Sie die Datentabelle, schreiben Sie die Daten und komprimieren Sie dann

  • . Dekomprimieren Sie die Order3-Datentabelle, damit Daten geschrieben werden können: (Dekomprimieren und gleichzeitig indizieren automatische Rekonstruktion)
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Datendekomprimierung abgeschlossen:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Spülvorgang durchführen und die dekomprimierten Daten aktualisieren Daten: flush table  表名; Dieser Vorgang löscht auch die komprimierte Sicherungsdatei von order3.MYD.00996D46.deleted
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

  • Zu diesem Zeitpunkt kann der Vorgang fortgesetzt werden Daten auf Bestellung schreiben3:
    Detaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank

innodb-Speicher-Engine: geeignet zum Ändern und Löschen
Myisam-Speicher-Engine: Geeignet zum Abfragen und Schreiben

Archivieren

Innodb-Speicher-Engine: Geeignet zum Ändern und Löschen
Myisam-Speicher-Engine: Geeignet zum Abfragen und Schreiben von

Speicher-Engine. Die Betriebsgeschwindigkeit ist sehr hoch und eignet sich besser zum Speichern temporärer Informationen Die Daten zur Speicher-Engine gehen sofort verloren.

Auswahl der Speicher-Engine

Myisam und innodb

  1. In den meisten Fällen verfügt die Website über viele „Lese- und Schreib“-Vorgänge, daher ist die Auswahl geeignet der Myisam-Typ (zum Beispiel: dedecms, phpcms Content Management System (Nachrichten-Website), Discuz-Forum)

  2. Die Website stellt bestimmte Anforderungen an die Geschäftslogik (Büro-Website, Einkaufszentrum), it eignet sich zur Auswahl von innodb (die Standardspeicher-Engine von MySQL5.5 ist innodb)



Tabellendateityp Bedeutung
*.frm Tabellenstrukturdatei
*.MYD Tabellendatendatei
*.MYI
表文件类型 含义
*.frm 表结构文件
*.MYD 表数据文件
*.MYI

表索引文件

Tabellenindexdatei

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Speicher-Engine der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn