Mengoptimumkan Enjin Penyimpanan InnoDB MySQL untuk Pembuangan Data
Masalah: Adakah mungkin untuk mengalih keluar data daripada jadual yang dipadamkan dalam enjin storan MySQL InnoDB tanpa membina semula keseluruhannya pangkalan data?
Jawapan: Ya, ia boleh dilakukan melalui proses pembersihan menyeluruh.
Penjelasan:
InnoDB menyimpan pelbagai jenis data dalam fail ibdata1nya, termasuk data jadual, indeks dan metadata sistem. Apabila jadual dipadamkan, data dan indeksnya kekal dalam ibdata1, walaupun ia tidak lagi boleh diakses. Ini boleh menyebabkan ruang terbuang dan kemerosotan prestasi dari semasa ke semasa.
Proses Pembersihan:
-
Pangkalan Data Buang: Buat pembuangan SQL bagi semua pangkalan data kecuali mysql dan information_schema.
-
Drop Pangkalan Data: Gugurkan semua pangkalan data kecuali mysql dan information_schema.
-
Lumpuhkan Penutupan Pantas: Tetapkan innodb_fast_shutdown kepada 0 untuk membuang perubahan transaksi daripada fail log.
-
Matikan MySQL: Hentikan MySQL pelayan.
-
Ubah suai Konfigurasi: Tambahkan tetapan innodb_file_per_table, innodb_flush_method=O_DIRECT, innodb_log_file_size dan innodb_buffer_pool_size tetapan pada /etc/my.cn>tetapan ibdata
fail:- * Alih keluar semua fail ibdata dan ib_logfile*.Mulakan semula MySQL:
Mulakan MySQL, yang akan mencipta semula ibdata1 dengan hanya metadata.- Import Pangkalan Data Dump:
Pulihkan yang sebelumnya dump SQL yang dieksport.-
Selepas proses ini, ibdata1 akan mengandungi metadata sahaja, manakala jadual individu akan berada dalam fail .ibd mereka sendiri. Ini membolehkan pengoptimuman jadual individu menggunakan OPTIMIZE TABLE, mengurangkan ruang terbuang dan meningkatkan prestasi.
Nota:
Adalah penting untuk memastikan geran pengguna diwujudkan semula dengan betul selepas menjatuhkan pangkalan data.
Atas ialah kandungan terperinci Bolehkah saya Mengalih keluar Data daripada Jadual InnoDB yang Dipadamkan Tanpa Pembinaan Semula Pangkalan Data Penuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!