Ketika sebuah tabel MySQL berisi sejumlah besar data, menggunakan pernyataan DELETE untuk membersihkan data tidak langsung melepaskan ruang disk. Data hanya ditandai sebagai dapat digunakan kembali. Untuk benar-benar mereklaim ruang tabel dan mengurangi penggunaan disk, gunakan OPTIMIZE TABLE.
Prasyarat
Hanya mesin InnoDB dan MyISAM yang mendukung pernyataan
OPTIMIZE TABLE.Ruang disk tersisa pada instans harus lebih besar dari atau sama dengan ruang tabel yang akan dilepaskan.
CatatanJika ruang disk tersisa tidak mencukupi, Anda harus terlebih dahulu meningkatkan ruang disk. Setelah operasi selesai, Anda dapat menurunkan ruang disk sesuai kebutuhan, dan sistem akan mengembalikan selisih harga.
Pertimbangan
Hapus sejumlah besar data terlebih dahulu: Jika Anda tidak menghapus sejumlah besar data menggunakan
DELETE, menjalankanOPTIMIZE TABLEsecara langsung tidak akan efektif dalam mengurangi penggunaan ruang tabel.Peningkatan Sementara Penggunaan Disk: Saat menjalankan
OPTIMIZE TABLE, MySQL membuat tabel sementara untuk menyimpan data yang telah diorganisir ulang, sehingga meningkatkan penggunaan disk sementara. Setelah operasi selesai, tabel sementara dihapus, dan penggunaan disk kembali normal.Dampak Kinerja dan Risiko Periode Puncak: Di RDS MySQL 5.7 dan 8.0,
OPTIMIZE TABLEdijalankan menggunakan DDL Online, yang mendukung operasi DML bersamaan. Namun, menjalankan operasi ini pada tabel besar dapat menyebabkan konsumsi tiba-tiba IO dan Buffer, dengan risiko penguncian tabel atau konflik sumber daya. Selama periode puncak bisnis, hal ini bahkan dapat menyebabkan instans menjadi tidak tersedia atau pemantauan terganggu. Oleh karena itu, disarankan untuk menjalankan operasi ini selama jam-jam non-puncak bisnis untuk menghindari mempengaruhi operasi bisnis normal.
Gunakan CLI untuk melepaskan tablespace
Gunakan pernyataan
DELETEuntuk membersihkan data yang tidak diinginkan sesuai kebutuhan.Jalankan perintah
OPTIMIZE TABLEuntuk melepaskan ruang tabel.OPTIMIZE TABLE <$Database1>.<Table1>,<$Database2>.<Table2>;Catatan<$Database1> dan <$Database2> adalah nama database, <Table1> dan <Table2> adalah nama tabel.
Saat menjalankan pernyataan
OPTIMIZE TABLEpada mesin InnoDB, Anda akan melihat pesan berikut. Ini adalah hasil eksekusi normal yang dapat Anda abaikan. Pastikan bahwa hasilnya mengembalikan "ok". Untuk informasi lebih lanjut, lihat Pernyataan OPTIMIZE TABLE.Tabel tidak mendukung optimasi, melakukan recreate + analyze sebagai gantinya
Gunakan DMS untuk melepaskan tablespace
Di panel sisi kiri, pilih ID instans dari instans target, lalu klik dua kali database target, klik kanan nama tabel apa pun, dan pilih Batch Operations.
Pilih tabel tempat Anda ingin melepaskan ruang, lalu pilih .

Di kotak dialog yang muncul, konfirmasikan bahwa informasi perubahan sudah benar, lalu klik Confirm.