Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membersih dan Mengecilkan Enjin Storan MySQL InnoDB Saya?

Bagaimanakah Saya Boleh Membersih dan Mengecilkan Enjin Storan MySQL InnoDB Saya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 22:09:17209semak imbas

How Can I Clean Up and Shrink My MySQL InnoDB Storage Engine?

Pembersihan Enjin Storan MySQL InnoDB

Untuk membersihkan enjin storan MySQL InnoDB dan mengalih keluar data daripada jadual yang dipadam, ikuti langkah berikut:

Memahami InnoDB Seni Bina

InnoDB menyimpan enam jenis maklumat dalam fail ibdata1:

  • Data Jadual
  • Indeks Jadual
  • MVCC (Multiversioning Concurrency Kawalan) Data
  • Metadata Jadual (Data Kamus)
  • Double Write Buffer
  • Insert Buffer

Bolehkah Anda Menjalankan OPTIMIZE TABLE?

Menggunakan OPTIMIZE TABLE pada jadual InnoDB yang disimpan dalam ibdata1 mempunyai dua kesan:

  • Ia menjadikan data jadual dan indeks bersebelahan dalam fail.
  • Ia menjadikan ibdata1 berkembang dengan menambahkan data dan indeks yang diubah suai.

Bolehkah Anda Menjalankan OPTIMIZE TABLE dengan innodb_file_per_table?

Dengan pilihan ini didayakan, OPTIMIZE TABLE mencipta fail .ibd yang berasingan untuk setiap jadual InnoDB. Walaupun pengasingan ini memisahkan data dan indeks daripada ibdata1, ia tidak mengalih keluar masukan kamus data daripada ibdata1.

Pembersihan Infrastruktur InnoDB

Untuk mengecilkan ibdata1 dan mengalih keluar data yang tidak diperlukan:

  1. Buang semua pangkalan data ke dalam teks SQL fail (SQLData.sql).
  2. Lepaskan semua pangkalan data kecuali mysql dan information_schema. Kekalkan geran pengguna.
  3. Tetapkan innodb_fast_shutdown kepada 0 untuk mengepam perubahan transaksi.
  4. Tutup MySQL.
  5. Ubah suai my.cnf (atau my.ini) dengan ini tetapan:

    • innodb_file_per_table
    • innodb_flush_method=O_DIRECT
    • innodb_log_file_size=1G (pastikan 25% daripada innodb_buffer_pool_size)
  6. Padam fail ibdata dan ib_logfile.
  7. Mulakan MySQL.
  8. Import SQLData.sql><.>
  9. Selepas ini proses, ibdata1 akan mengandungi hanya metadata jadual, dan jadual InnoDB individu akan disimpan dalam fail berasingan dengan sambungan .frm dan .ibd. OPTIMIZE TABLE kemudiannya boleh digunakan untuk mengecilkan fail .ibd jadual.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membersih dan Mengecilkan Enjin Storan MySQL InnoDB Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn