Odpowiedzi:
Plik ibdata1 to systemowy obszar tabel dla infrastruktury InnoDB.
Zawiera kilka klas informacji istotnych dla InnoDB
Kliknij tutaj, aby zobaczyć reprezentację obrazkową
Możesz rozwodzić się z danymi i stronami indeksu z ibdata1, włączając opcję innodb_file_per_table . Spowoduje to, że każda nowo utworzona tabela InnoDB będzie przechowywać dane i strony indeksowe w .ibd
pliku zewnętrznym .
Przykład
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, tworzy /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
Niezależnie od tego, gdzie przechowywana jest tabela InnoDB, funkcjonalność InnoDB wymaga szukania metadanych tabeli oraz przechowywania i pobierania informacji MVCC w celu obsługi zgodności z ACID i izolacji transakcji .
Oto moje poprzednie artykuły na temat oddzielania danych tabeli i indeksów od ibdata1
Oct 29, 2010
: Mój oryginalny post w StackOverflowNov 26, 2011
: BŁĄD 1114 (HY000) w wierszu 6308 w pliku i tabela analiza_użytkownika jest pełnaFeb 03, 2012
: Zaplanowana optymalizacja tabel w MySQL InnoDBMar 25, 2012
: Dlaczego InnoDB przechowuje wszystkie bazy danych w jednym pliku?Apr 01, 2012
: Czy zaleca się innodb_file_per_table?ib_logfile0
, ib_logfile1
)Jeśli chcesz wiedzieć, do czego służą ib_logfile0
i ib_logfile1
są, są to dzienniki ponawiania InnoDB. Nigdy nie należy ich usuwać ani zmieniać ich rozmiaru, dopóki nie nastąpi pełne normalne zamknięcie mysqld . Jeśli mysqld kiedykolwiek się zawiesi, po prostu uruchom mysqld. Odczyta ib_logfile0
i ib_logfile1
przejrzy zmiany danych, które nie zostały opublikowane w podwójnym buforze zapisu ibdata1
. Powtórzy (ponownie) te zmiany. Po ich odtworzeniu i zapisaniu mysqld jest gotowy na nowe połączenia DB.
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd
i innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1
powinno być odwrotnie, prawda?