Apakah saya dapat dengan aman membunuh OPTIMASI MEJA pada tabel InnoDB?


9

Dokumentasi MySQL untuk kill memperingatkan :

Peringatan

Membunuh REPAIR TABLEatau OPTIMIZE TABLEoperasi pada MyISAMtabel menghasilkan tabel yang rusak dan tidak dapat digunakan. Setiap membaca atau menulis ke tabel seperti itu gagal sampai Anda mengoptimalkan atau memperbaikinya lagi (tanpa gangguan).

Itu untuk MyISAM.

Apakah tidak aman untuk membunuh OPTIMIZE TABLEproses yang berjalan terhadap tabel InnoDB?

Jawaban:


8

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

  1. Jika halaman indeks tidak diurutkan, urutkan,
  2. Jika statistik tabel tidak mutakhir (dan perbaikan tidak dapat diselesaikan dengan menyortir indeks), perbarui mereka.
  3. 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 TABLEini tambahan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.