Jawaban:
File ibdata1 adalah tablespace sistem untuk infrastruktur InnoDB.
Ini berisi beberapa kelas untuk informasi penting untuk InnoDB
Klik Di Sini untuk melihat Representasi Pictorial
Anda dapat menceraikan Halaman Data dan Indeks dari ibdata1 dengan mengaktifkan innodb_file_per_table . Ini akan menyebabkan tabel InnoDB yang baru dibuat untuk menyimpan data dan mengindeks halaman dalam .ibd
file eksternal .
Contoh
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, menciptakan /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
Di mana pun tabel InnoDB disimpan, fungsionalitas InnoDB mengharuskan mencari metadata tabel dan menyimpan serta mengambil info MVCC untuk mendukung kepatuhan ACID dan Isolasi Transaksi .
Berikut adalah artikel saya sebelumnya tentang memisahkan data tabel dan indeks dari ibdata1
Oct 29, 2010
: Posting Asli Saya di StackOverflowNov 26, 2011
: ERROR 1114 (HY000) pada baris 6308 dalam file & Tabel user_analysis penuhFeb 03, 2012
: Pengoptimalan terjadwal tabel di MySQL InnoDBMar 25, 2012
: Mengapa InnoDB menyimpan semua basis data dalam satu file?Apr 01, 2012
: Apakah innodb_file_per_table disarankan?ib_logfile0
, ib_logfile1
)Jika Anda ingin tahu untuk apa ib_logfile0
dan ib_logfile1
untuk apa, mereka adalah Log Redo InnoDB. Mereka tidak boleh dihapus atau diubah ukurannya sampai mysqld shutdown normal penuh telah terjadi . Jika mysqld pernah mogok, mulai saja mysqld. Ini akan membaca seberang ib_logfile0
dan ib_logfile1
untuk memeriksa perubahan data yang tidak diposting ke buffer tulis ganda di ibdata1
. Itu akan mengulang (mengulang) perubahan itu. Setelah mereka diputar ulang dan disimpan, mysqld menjadi siap untuk Koneksi DB baru.
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd
dan innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1
harus sebaliknya, bukan?