Was ist ein MySQL-Tablespace?

Was ist ein MySQL-Tablespace?

Das Thema, das ich heute mit Ihnen teilen möchte, lautet: „Was genau ist der Tabellenbereich, über den alle oft sprechen? Was genau ist eine Datentabelle?“

Dies ist eigentlich ein konzeptioneller Wissenspunkt, der als Wissenserweiterung betrachtet werden sollte. Sie müssen lediglich die zugrunde liegenden Konzepte verstehen und einen Eindruck von den beteiligten Parametern hinterlassen.

1. Was ist eine Tabelle?

Jeder, der MySQL verwendet hat, weiß intuitiv, dass MySQL-Daten in Datentabellen gespeichert werden.

Beispielsweise ein Update-SQL:

Benutzer aktualisieren, Benutzernamen = „Daydream“ festlegen, wobei ID = 999;

Es ändert die Spalte „Benutzername“ des Datensatzes mit der ID 1 in der Benutzerdatentabelle in „Daydream“.

Der Benutzer ist hier eigentlich eine Datentabelle. Darum geht es natürlich nicht. Ich möchte lediglich darauf hinweisen, dass die Datentabelle eigentlich ein logisches Konzept ist. Der unten besprochene Tabellenraum ist ein physikalisches Konzept.

2. Was ist ein Tablespace?

Ich weiß nicht, ob Sie diesen Satz schon einmal gesehen haben: „In der InnoDB-Speicher-Engine werden Daten gemäß Tablespaces organisiert und gespeichert.“ Tatsächlich gibt es einen Subtext: Der Tablespace ist eine Tablespace-Datei, die eine tatsächliche physische Datei ist.

Sie müssen sich keine Gedanken darüber machen, warum es Tablespace heißt oder warum der Tablespace einer physischen Datei auf der Festplatte entspricht, da MySQL auf diese Weise konzipiert und eingerichtet ist. Akzeptieren Sie das Konzept einfach direkt.

MySQL verfügt über viele Tablespace-Typen. Schauen wir sie uns gemeinsam an.

3. Sys-Tabellenbereich

Sie können Ihren MySQL-Systemtabellenbereich folgendermaßen anzeigen:

Der Wertteil besteht aus: Name:Größe:Attribute

Standardmäßig initialisiert MySQL eine Datei namens ibdata1 mit einer Größe von 12 MB und diese wird automatisch erweitert, wenn die Datenmenge zunimmt.

Diese ibdata1-Datei ist der Systemtabellenbereich, der Standardtabellenbereich, die physische Datei des Standardtabellenbereichs und der legendäre gemeinsam genutzte Tabellenbereich.

Was diesen gemeinsam genutzten Tabellenbereich betrifft, gilt intuitiv: Wenn dieser Tabellenbereich Daten für mehrere Tabellen speichern kann, kann er als gemeinsam genutzter Tabellenbereich bezeichnet werden. Sie können sich den Systemtabellenbereich also als einen gemeinsam genutzten Tabellenbereich vorstellen.

4. Konfigurieren Sie den Sys-Tablespace

Die Anzahl und Größe des Systemtabellenbereichs kann durch den Startparameter festgelegt werden: innodb_data_file_path

# meine.cnf
[mysqld]
innodb_data_file_path=/dir1/ibdata1:2000M;/dir2/ibdata2:2000M:autoextend

5. Datei pro Tabelle Tablespace

Wenn Sie möchten, dass jede Datenbanktabelle eine separate Tablespace-Datei hat, können Sie dies über den Parameter innodb_file_per_table festlegen.

Dieser Parameter ist nur in MySQL 5.6 oder höher verfügbar.

Über die Konfigurationsdatei

[mysqld]
innodb_file_per_table=EIN

Sie können auch den Befehl

mysql> GLOBAL SETZEN innodb_file_per_table=ON; 

Wenn Sie es auf „ON“ setzen, verfügen die von der InnoDB-Speicher-Engine generierten Tabellen über ihre eigenen unabhängigen Tablespace-Dateien.

Unabhängige Benennungsregeln für Tablespace-Dateien: Tabellenname.ibd

Beachten:

In einer unabhängigen Tablespace-Datei werden nur die der Tabelle entsprechenden Daten, der Index und die Einfügepuffer-Bitmap gespeichert.

Die restlichen Informationen, wie z. B. Rückgängig-Informationen, Einfügepuffer-Indexseite, doppelter Schreibpuffer usw., werden weiterhin im Standardtabellenbereich, d. h. im gemeinsam genutzten Tabellenbereich, abgelegt.

Es spielt keine Rolle, wenn Sie nicht verstehen, was Rückgängig-, Einfüge- und Doppelschreibpuffer sind. Gemäß dem groben Zeitplan werde ich den 41. und 42. Artikel mit Ihnen teilen. Hier müssen Sie nur verstehen, dass die Größe des gemeinsam genutzten Tabellenbereichs auch dann weiter zunimmt, wenn Sie innodb_file_per_table=ON festlegen, und dass die Größe des gemeinsam genutzten Tabellenbereichs nicht abnimmt, auch wenn Sie weiterhin Undo zum Zurücksetzen verwenden.

Schauen Sie sich meine Tablespace-Dateien an:

Abschließend wollen wir noch kurz die Vor- und Nachteile dieser Datei pro Tabelle beschreiben:

Vorteil:

  • Verbessern Sie die Fehlertoleranz. Wenn der Tablespace von Tabelle A beschädigt ist, sind andere Tablespaces davon nicht betroffen. S
  • Verwenden Sie MySQL Enterprise Backup, um Tabellen, die in File-per-Table-Table-Tablespaces erstellt wurden, schnell zu sichern oder wiederherzustellen, ohne die Nutzung anderer InnoDB-Tabellen zu unterbrechen.

Mangel:

Es ist nicht benutzerfreundlich für den Systemaufruf fsync. Wenn Sie eine Tablespace-Datei verwenden, kann ein einziger Systemaufruf die Datenlöschung abschließen, aber wenn Sie die Tablespace-Datei in mehrere aufteilen. Das ursprüngliche Fsync kann zu einem Fsync werden, das für alle beteiligten Tablespace-Dateien ausgeführt wird, wodurch sich die Anzahl der Fsyncs erhöht.

6. Temporärer Tabellenbereich

Der temporäre Tabellenbereich wird zum Speichern von von Benutzern erstellten temporären Tabellen und internen temporären Tabellen auf der Festplatte verwendet.

Der Parameter innodb_temp_data_file_path definiert einige der Namens-, Größen- und Spezifikationsattribute des temporären Tablespace wie unten gezeigt:

Zeigen Sie das Verzeichnis an, in dem temporäre Tablespace-Dateien gespeichert sind

7. Tablespace rückgängig machen

Ich glaube, Sie haben bestimmt schon von Undolog gehört. Wenn Ihr Programm eine Transaktion rückgängig machen möchte, hilft Ihnen das zugrunde liegende MySQL tatsächlich dabei, diese Undo-Informationen zu nutzen.

In den MySQL-Einstellungen gibt es einen Tabellenbereich, der speziell zum Speichern von Undolog-Protokolldateien verwendet werden kann.

In den MySQL-Einstellungen wird Undolog jedoch standardmäßig im Systemtabellenbereich platziert.

Wenn Ihr MySQL neu installiert ist, können Sie die Nutzung Ihres MySQL-Undo-Tablespace anzeigen, indem Sie den folgenden Befehl ausführen:

Wie Sie sehen, habe ich zwei Undo-Log-Tablespaces für MySQL.

Das heißt, mein Undo wird vom Standardsystem-Tabellenbereich in den dedizierten Tabellenbereich für das Undo-Protokoll übertragen.

Sollte das Undo-Protokoll also mit der Standardkonfiguration im Systemtabellenbereich platziert werden? Oder sollte es im Undo-Tabellenbereich platziert werden?

Dies hängt tatsächlich von der Art der vom Server verwendeten Speichervolumes ab.

Wenn SSD-Speicher verwendet wird, wird empfohlen, Undo-Informationen im Undo-Tablespace zu speichern.

Oben finden Sie detaillierte Informationen zum MySQL-Tablespace. Weitere Informationen zum MySQL-Tablespace finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detailliertes Beispiel zum Beheben der Tablespace-Fragmentierung in MySQL
  • Analysieren Sie die Ursachen und beseitigen Sie die Fragmentierung in MySQL-Tabellen.
  • Analyse der Prinzipien von MySQL Dirty Page Flush und Shrinking Table Space
  • Ausführliche Erläuterung zum Beispiel der MySQL InnoDB-Tablespace-Verschlüsselung
  • Mysql Online-Wiederherstellung des Undo-Tabellenbereichs tatsächlicher Kampfdatensätze
  • Detaillierte Analyse des temporären MySQL 5.7-Tablespace
  • So verwenden Sie das Entladen, Migrieren und Laden von MySQL InnoDB-Tablespaces
  • SQL-Anweisung zum Abfragen des von allen Datenbanken belegten Speicherplatzes und der Größe aller Tabellen in einer einzelnen Datenbank in MySQL
  • Das Konzept der MySQL-Tablespace-Fragmentierung und Lösungen für damit verbundene Probleme

<<:  Umfassendes Verständnis der Überwachung von HTML-Formulareingaben

>>:  So verwenden Sie async await elegant in JS

Artikel empfehlen

Bedeutung der Hintergrundfarbdeklaration beim Schreiben von Stilen

Wie der Titel schon sagt, kann andernfalls bei ein...

Abkürzung für HTML DOCTYPE

Wenn Ihr DOCTYPE wie folgt ist: Code kopieren Der ...

HTML verwendet Canvas, um die Bullet-Screen-Funktion zu implementieren

Einführung Kürzlich musste ich für einen großen A...

Funktionsprinzip und Beispielanalyse des Linux-NFS-Mechanismus

Was ist NFS? Netzwerkdateisystem Eine Methode ode...

Erstellen Sie Schritt für Schritt ein Dateiverwaltungssystem mit nginx+FastDFS

Inhaltsverzeichnis 1. Einführung in FastDFS 1. Ei...

24 praktische Tipps zur JavaScript-Entwicklung

Inhaltsverzeichnis 1. Initialisieren Sie das Arra...

Einfaches Setup von VMware ESXi6.7 (mit Bildern und Text)

1. Einführung in VMware vSphere VMware vSphere is...

Beispielcode zum Erstellen eines Dropdown-Menüs mit reinem CSS

Einführung: Als ich mir in letzter Zeit die Frage...

Automatische Zeilenumbrüche in HTML-Pre-Tags

Zu diesem Zeitpunkt können Sie overflow:auto; verw...

Beispiel für eine einfache Operation einer MySQL-Abfrageanweisung

Dieser Artikel veranschaulicht anhand von Beispie...

SQL IDENTITY_INSERT-Fallstudie

Wenn eine Spalte in einer Datentabelle einmal als...

Sehr detaillierte Anleitung zum Upgrade der MySQL-Version

Inhaltsverzeichnis 1. Einleitung 2. Sichern Sie d...

Manuelles Implementieren des Eingabefelds für den js-SMS-Bestätigungscode

Vorwort Dieser Artikel beschreibt eine allgemeine...