Menurut Panduan Sertifikasi MySQL:
Pernyataan OPTIMIZE TABLE membersihkan tabel MyISAM dengan men-defragnya. Ini melibatkan reklamasi ruang yang tidak terpakai yang dihasilkan dari penghapusan dan pembaruan, dan penggabungan catatan yang telah dipecah dan disimpan secara tidak berdekatan. MENGOPTIMALKAN TABEL juga mengurutkan halaman indeks jika mereka rusak dan memperbarui statistik indeks
Juga berfungsi untuk tabel InnoDB, tetapi peta ke ALTER TABLE, yang membangun kembali tabel. Ini memperbarui statistik indeks dan membebaskan ruang dalam indeks berkerumun.
Jadi Dalam Kasus InnoDB:
Innodb kompatibel dengan ACID, tabel optimalisasi hanya menyalin semua catatan ke tabel baru
- Jika halaman indeks tidak diurutkan, urutkan,
- Jika statistik tabel tidak mutakhir (dan perbaikan tidak dapat diselesaikan dengan menyortir indeks), perbarui mereka.
- Jika tabel telah dihapus atau dipecah baris, perbaiki tabel.
Dan jika Anda mencoba untuk membunuhnya ketika sedang berjalan Anda tidak akan kehilangan catatan.
Selain itu, untuk kasus InnoDB innodb_defragment=1
, tidak akan ada ROLLBACK yang diperlukan, karena dalam kasus OPTIMIZE TABLE
ini tambahan.