Saya mempunyai jadual MySQL menggunakan enjin storan InnoDB ia mengandungi kira-kira 2M baris data. Apabila saya memadamkan baris data daripada jadual, ia tidak membebaskan ruang cakera yang diperuntukkan. Selepas menjalankan arahan optimize table
, saiz fail ibdata1 juga tidak berkurangan.
Adakah terdapat cara untuk menuntut semula ruang cakera daripada MySQL?
Saya berada dalam situasi yang teruk; apl berjalan di kira-kira 50 lokasi berbeza dan kini saya kehabisan ruang cakera di hampir kesemuanya.
Saya sendiri mengalami masalah yang sama.
Apa yang berlaku ialah walaupun selepas memadamkan pangkalan data, innodb masih tidak mengosongkan ruang cakera. Saya perlu mengeksport, menghentikan mysql, memadam fail secara manual, mulakan mysql, mencipta pangkalan data dan pengguna, kemudian import. Alhamdulillah saya hanya mempunyai 200MB baris tetapi ia menyimpan 250GB fail innodb.
Reka bentuk gagal.
MySQL tidak mengurangkan saiz ibdata1. sekali. Walaupun anda menggunakan
优化表
untuk mengosongkan ruang yang digunakan oleh rekod yang dipadamkan, ia akan menggunakannya semula kemudian.Kaedah lain ialah mengkonfigurasi pelayan untuk menggunakan
innodb_file_per_table
,但这需要备份、删除数据库和恢复。积极的一面是,在优化表格
.