Risposte:
Il file ibdata1 è il tablespace di sistema per l'infrastruttura InnoDB.
Contiene diverse classi per informazioni vitali per InnoDB
Clicca qui per vedere una rappresentazione pittorica
Puoi divorziare da Pagine di dati e indici da ibdata1 abilitando innodb_file_per_table . Ciò farà sì che qualsiasi tabella InnoDB appena creata memorizzi i dati e indicizzi le pagine in un .ibd
file esterno .
Esempio
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, crea /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
Indipendentemente da dove sia archiviata la tabella InnoDB, la funzionalità di InnoDB richiede la ricerca di metadati della tabella e la memorizzazione e il recupero delle informazioni MVCC per supportare la conformità ACID e l' isolamento delle transazioni .
Ecco i miei precedenti articoli sulla separazione dei dati e degli indici delle tabelle da ibdata1
Oct 29, 2010
: Il mio post originale in StackOverflowNov 26, 2011
: ERRORE 1114 (HY000) alla riga 6308 nel file & La tabella user_analysis è pienaFeb 03, 2012
: Ottimizzazione pianificata delle tabelle in MySQL InnoDBMar 25, 2012
: Perché InnoDB memorizza tutti i database in un unico file?Apr 01, 2012
: È consigliabile innodb_file_per_table?ib_logfile0
, ib_logfile1
)Se vuoi sapere a cosa servono ib_logfile0
e ib_logfile1
sono i registri di ripristino di InnoDB. Non dovrebbero mai essere cancellati o ridimensionati fino a quando non si è verificato un arresto normale completo di mysqld . Se mysqld si arresta in modo anomalo, basta avviare mysqld. Leggerà ib_logfile0
e ib_logfile1
verificherà eventuali modifiche ai dati che non sono state registrate nel doppio buffer di scrittura ibdata1
. Ripeterà (ripristinerà) quei cambiamenti. Una volta riprodotti e archiviati, mysqld diventa pronto per le nuove connessioni DB.
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd
e innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1
dovrebbe essere viceversa, no?