Frage

Es scheint, dass Ibdata1 wie eine Festplattenscheibe ist. In Solaris (UNIX) UFS -Dateisystemen (das gemeinsame vor ZFS) würde man ihre Festplatte C0T0D0 in Scheiben trennen, sagen, ein 10 -GB -Laufwerk würde in drei Abschnitte, 4 GB, 1 GB und 5 GB, geschnitten. Dies wären Dateisysteme mit fester Größe. Der 4 GB für beispielsweise os. 1 GB für Swap und 5 GB für Software und Daten.

Der Swap kann in einer Datei in einem Dateisystem gespeichert werden, aber für die Leistung, die normalerweise in einem eigenen Abschnitt der Festplatte gespeichert ist.

Kann Ibdata1 mit einem eigenen Stück für den Performance -Boost verknüpft werden? Natürlich müsste man sorgfältig nachdenken, bevor man entscheidet, welche feste Größe ideal ist, und sie müssten auch wissen, wie man die Nutzungsstufen überprüfen.

Ein symbolischer Glied kann von platziert werden .../mysql/data/ibdata1 zu /dev/rdsk/c0t0d0s3. MySQL würde es dann als Datei sehen, könnte aber besser abschneiden, da es nicht die Dateisystemschicht durchlaufen muss, sondern direkt in einen bestimmten Abschnitt der Festplatte schreiben würde.

  • Hat jemand das versucht?
  • Glaubt jemand, dass dies eine schlechte Idee ist? (Beachten Sie, dass diese Idee nur für Server nur für InnoDB-Nur-Datenbank datenbank.
  • Würde es funktionieren (Muss InnoDB die Dateilänge überprüfen? Wenn nicht, sollte es funktionieren.)
  • Kann die Verwendung überprüft werden?
War es hilfreich?

Lösung

Was sind die Eingangstypen, die sich in Ibdata1 befinden? Vier (4) Eintrittstypen:

  • Tischmetadaten
  • Tabellendatenseiten
  • Indexdatenseiten
  • MVCC Daten

Immer wenn eine InnoDB -Tabelle DDL, DML oder in einer Transaktion verwendet wird, werden alle vier Einträge entweder gelesen oder geschrieben. Inzwischen, wenn innodb_file_per_table ist deaktiviert, all diese Einstiegstypen leben in Ibdata1. Wenn es aktiviert ist, würden sich nur die Tabellenmetadaten und die MVCC -Daten in IBDATA1 befinden, während sich die Tabellendatenseiten und Indexdatenseiten im Datenbankunterordner als .ibd -Datei befinden würden.

Was würde in Betracht gezogen werden, was passieren würde, wenn Ibdata1 in einen anderen Band gelegt und symliziert würde?

Wie repräsentiert MySQL für den Anfang eine Tabelle unabhängig von der Speichermotor? Als eine .frm -Datei. Wo live .frm -Dateien? Im Datadir. Was stimmt damit nicht ?

Hier ist ein Beispiel:

Verwenden wir eine InnoDB -Tabelle namens mydb.mytable.

Mit innodb_file_per_table deaktiviert würde alles in ibdata1 sitzen (was Sie vorschlagen, um zu symlink und an ein anderes Datenvolumen zu senden). Für die Tabelle mydb.mytable hätte Sie das, was Sie haben würden:

  • /var/lib/mysql/mydb/mytable.frm
  • Alles andere am Tisch lebt in Ibdata1

Bild dies jetzt: Sie greifen auf die Tabelle zu. Dies würde ständig mit jedem Zugang von mydb.mytable passieren. Dieses Hin und Her würde die Dinge irgendwie etwas langsamer machen, und Sie erhalten möglicherweise nicht die Leistung, die Sie erwartet haben, indem Sie Ibdata1 auf ein anderes Datenvolumen verschieben. Tatsächlich wäre der Kaskadierungseffekt nun ein Faktor für die Anzahl der innoDB -Tabellen multipliziert mit zwei (2).

Stellen Sie sich vor, innodb_file_per_table aktiviert zu werden. Jetzt hätten Sie ein etwas anderes Setup:

  • /var/lib/mysql/mydb/mytable.frm
  • /var/lib/mysql/mydb/mytable.ibd
  • MVCC -Daten und Tabellenmetadaten würden sich in Ibdata1 befinden

Diese Kaskadierung wäre etwas schlechter, da die Kaskadierung für den Tabellenzugriff jetzt unter drei Dateien statt zwei auftreten würde.

Hier ist ein weiteres Szenario, an das einige gedacht haben: Anstatt das Ibdata1 auf ein anderes Volumen zu verschieben, wie wäre es mit der Aktivierung von innoDB_File_per_table und das Verschieben der .ibd -Dateien auf ein oder mehrere verschiedene Datenvolumina? Der Kaskadierungseffekt wäre nun ein Faktor für die Anzahl der innoDB -Tabellen multipliziert mit drei (3). Percona hat sehr gute Gründe dafür ausgedrückt, dies nicht zu tun, dass Sie hilfreich sein werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top