Antworten:
Die Datei ibdata1 ist der Systemtabellenbereich für die InnoDB-Infrastruktur.
Es enthält mehrere Informationsklassen, die für InnoDB von entscheidender Bedeutung sind
Klicken Sie hier, um eine bildliche Darstellung zu sehen
Sie können Daten- und Indexseiten von ibdata1 trennen, indem Sie innodb_file_per_table aktivieren . Dadurch speichert jede neu erstellte InnoDB-Tabelle Daten und Indexseiten in einer externen .ibd
Datei.
Beispiel
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
schafft /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
Unabhängig davon, wo die InnoDB-Tabelle gespeichert ist, muss die InnoDB-Funktionalität nach Tabellenmetadaten suchen und MVCC- Informationen speichern und abrufen , um die ACID-Konformität und die Transaktionsisolation zu unterstützen .
Hier sind meine früheren Artikel zum Trennen von Tabellendaten und Indizes von ibdata1
Oct 29, 2010
: Mein ursprünglicher Beitrag in StackOverflowNov 26, 2011
: FEHLER 1114 (HY000) in Zeile 6308 in Datei & Die Tabelle user_analysis ist vollFeb 03, 2012
: Geplante Optimierung von Tabellen in MySQL InnoDBMar 25, 2012
: Warum speichert InnoDB alle Datenbanken in einer Datei?Apr 01, 2012
: Ist innodb_file_per_table ratsam?ib_logfile0
, ib_logfile1
)Wenn Sie wissen möchten, wofür ib_logfile0
und ib_logfile1
sind, sind dies die InnoDB Redo Logs. Sie sollten niemals gelöscht oder in der Größe verändert werden, bis ein vollständiges normales Herunterfahren von mysqld stattgefunden hat . Sollte mysqld jemals abstürzen, starten Sie mysqld einfach. Es liest über ib_logfile0
und ib_logfile1
überprüft, ob Datenänderungen vorliegen, die nicht in den Doppelschreibpuffer von gesendet wurden ibdata1
. Diese Änderungen werden wiederholt (wiederholt). Sobald sie wiedergegeben und gespeichert wurden, ist mysqld bereit für neue DB-Verbindungen.
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd
und innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1
sollte umgekehrt sein, nicht wahr?