ibdata1 . itu tidak menyusut adalah fitur MySQL yang sangat mengganggu. ibdata1 file tidak dapat benar-benar menyusut kecuali Anda menghapus semua database, menghapus file, dan memuat ulang dump.
Tetapi Anda dapat mengonfigurasi MySQL sehingga setiap tabel, termasuk indeksnya, disimpan sebagai file terpisah. Dengan cara itu ibdata1 tidak akan tumbuh besar. Menurut komentar Bill Karwin ini diaktifkan secara default pada MySQL versi 5.6.6.
Itu beberapa waktu yang lalu saya melakukan ini. Namun, untuk menyiapkan server Anda agar menggunakan file terpisah untuk setiap tabel, Anda perlu mengubah my.cnf untuk mengaktifkan ini:
[mysqld]
innodb_file_per_table=1
https://dev.mysql .com/doc/refman/5.6/en/innodb-file-per-table-tablespaces.html
Saat Anda ingin merebut kembali ruang dari ibdata1 Anda benar-benar harus menghapus file:
- Lakukan
mysqldumpdari semua database, prosedur, pemicu dll kecualimysqldanperformance_schemabasis data - Hapus semua database kecuali 2 database di atas
- Hentikan mysql
- Hapus
ibdata1danib_logfile - Mulai mysql
- Pulihkan dari dump
Saat Anda memulai MySQL pada langkah 5 ibdata1 dan ib_log file akan dibuat ulang.
Sekarang Anda siap untuk pergi. Saat Anda membuat database baru untuk analisis, tabel akan ditempatkan di ibd* separate yang terpisah file, bukan di ibdata1 . Seperti biasanya Anda segera menghapus database, ibd* file akan dihapus.
https://dev.mysql.com/doc/refman /5.1/en/drop-database.html
Anda mungkin pernah melihat ini:
https://bugs.mysql.com /bug.php?id=1341
Dengan menggunakan perintah ALTER TABLE <tablename> ENGINE=innodb atau OPTIMIZE TABLE <tablename> seseorang dapat mengekstrak halaman data dan indeks dari ibdata1 untuk memisahkan file. Namun, ibdata1 tidak akan menyusut kecuali Anda melakukan langkah-langkah di atas.
Mengenai information_schema , yang tidak perlu atau tidak mungkin untuk dijatuhkan. Ini sebenarnya hanya sekumpulan tampilan read-only, bukan tabel. Dan tidak ada file yang terkait dengannya, bahkan direktori database pun tidak. informations_schema menggunakan memori db-engine dan dijatuhkan dan dibuat ulang saat stop/restart mysqld. Lihat https://dev.mysql.com/doc/ refman/5.7/en/information-schema.html
.