MySQL 8 - optimalkan semua tabel + indeks
Saya memiliki banyak tabel (InnoDB) dalam beberapa database (MySQL 8), yang saya jalankan skrip Kumpulkan Sampah, setiap hari, menghapus catatan basi yang tidak lagi diperlukan. Semua tabel memiliki indeks.
Apakah masuk akal / bermanfaat untuk mengoptimalkan semua tabel, misalnya setiap minggu, untuk meningkatkan kinerja? Jika ya, apakah ada perintah yang baik untuk dijalankan, untuk melakukannya?
Saya mencoba melakukan
sudo mysqlcheck -o --all-databases
Tetapi dapatkan pesan kesalahan berikut:
note : Table does not support optimize, doing recreate + analyze instead
status : OK
Jawaban
Jangan ganggu. InnoDB sebagian besar menangani dirinya sendiri. OPTIMIZEsementara memeras beberapa ruang yang terbuang, tetapi pemborosan baru terjadi saat sisipan / dll terjadi. Manfaat kinerja OPTIMIZEhampir nihil.
Pesan tersebut normal untuk InnoDB. Anda dapat terus melakukannya.
Mesin Penyimpanan InnoDB bekerja OPTIMIZE TABLE mydb.mytable;seperti ini
ALTER TABLE mydb.mytable ENGINE=InnoDB;
ANALYZE TABLE mydb.mytable;
Saya telah menyebutkan ini selama bertahun-tahun:
Sep 27, 2015: Bagaimana cara mendefrag tabel di MySQL?Jun 24, 2015: pedoman untuk memanggil tabel optimasi setelah tabel alter?Feb 27, 2013: Apa perbedaan antara tabel optimasi dan tabel analisis di mysqlAug 04, 2011: Mengoptimalkan pengaturan default InnoDB
Saya merekomendasikan melakukan analisa harian atau mingguan
sudo mysqlcheck --analyze --all-databases
Kemudian lakukan optimasi sebulan sekali atau satu triwulan sekali.