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 .ibdpliku zewnętrznym .
Przykład
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;, tworzy /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibdNiezależ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_logfile0i ib_logfile1są, 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_logfile0i ib_logfile1przejrzy 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.ibdi innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1powinno być odwrotnie, prawda?