Yang ibdata1tidak menyusut adalah fitur MySQL yang sangat mengganggu. The ibdata1file tidak dapat benar-benar akan menyusut kecuali Anda menghapus semua database, menghapus file dan kembali dump.
Tetapi Anda dapat mengkonfigurasi MySQL sehingga setiap tabel, termasuk indeksnya, disimpan sebagai file terpisah. Dengan cara ibdata1itu tidak akan tumbuh besar. Menurut komentar Bill Karwin, ini diaktifkan secara default pada versi 5.6.6 dari MySQL.
Beberapa waktu yang lalu saya melakukan ini. Namun, untuk mengatur server Anda untuk menggunakan file terpisah untuk setiap tabel Anda perlu mengubah my.cnfuntuk mengaktifkan ini:
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
Karena Anda ingin mendapatkan kembali ruang dari ibdata1Anda sebenarnya harus menghapus file:
- Lakukan
mysqldumpdari semua basis data, prosedur, pemicu dll kecuali mysqldan performance_schemabasis data
- Hapus semua basis data kecuali 2 basis data di atas
- Hentikan mysql
- Hapus
ibdata1dan ib_logfile
- Mulai mysql
- Kembalikan dari dump
Ketika Anda memulai MySQL pada langkah 5 ibdata1dan ib_logfile akan dibuat kembali.
Sekarang Anda siap untuk pergi. Saat Anda membuat database baru untuk analisis, tabel akan ditempatkan di ibd*file terpisah , bukan di ibdata1. Karena Anda biasanya menjatuhkan basis data segera setelahnya, ibd*file - file tersebut akan dihapus.
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
Anda mungkin telah melihat ini:
http://bugs.mysql.com/bug.php?id=1341
Dengan menggunakan perintah ALTER TABLE <tablename> ENGINE=innodbatau OPTIMIZE TABLE <tablename>satu dapat mengekstrak data dan indeks halaman dari ibdata1 ke file terpisah. Namun, ibdata1 tidak akan menyusut kecuali Anda melakukan langkah-langkah di atas.
Mengenai itu information_schema, itu tidak perlu atau tidak mungkin untuk jatuh. Ini sebenarnya hanya sekelompok tampilan read-only, bukan tabel. Dan tidak ada file yang terkait dengan mereka, bahkan direktori basis data. The informations_schemamenggunakan memori db-mesin dan dijatuhkan dan regenerasi pada stop / restart mysqld. Lihat https://dev.mysql.com/doc/refman/5.7/en/information-schema.html .