Bagaimana cara mengkonfigurasi basis data MySQL/MariaDB untuk mengkonversi tabel InnoDB ke tabel MyISAM secara massal?

Mesin penyimpanan tabel basis data itu seperti mesin mobil; mengganti mesin akan langsung mengubah performa dan karakteristiknya. Banyak orang berpikir bahwa basis data hanya untuk menyimpan data, tetapi ketika Anda benar-benar mulai mengerjakannya... InnoDB 转成 MyISAMHanya dengan cara itulah Anda akan menemukan rahasia tersembunyi di baliknya.

Mengapa seseorang ingin beralih dari InnoDB ke MyISAM?

Dalam banyak skenario, MyISAM lebih cepat, terutama untuk aplikasi yang banyak melakukan operasi baca dan sedikit operasi tulis, seperti basis data log dan statistik.

Mekanisme penguncian tingkat tabelnya sebenarnya berjalan sangat lancar bahkan dalam kondisi konkurensi rendah.

Selain itu, penyimpanan file MyISAM lebih intuitif; satu .MYD Simpan data, satu .MYI Menyimpan indeks, melakukan migrasi, dan membuat cadangan semuanya sangat mudah.

Namun, dukungan transaksi dan kunci asing InnoDB hampir menjadi kebutuhan dalam skenario bisnis yang kompleks.

Oleh karena itu, Anda harus mencari tahu apakah bisnis Anda benar-benar membutuhkan fitur-fitur ini sebelum melakukan transisi.

Perintah inti: ALTER TABLE

Untuk mengkonversi satu tabel dari InnoDB ke MyISAM, Anda hanya memerlukan satu baris kode:

ALTER TABLE `你的表名` ENGINE = MyISAM;

Setelah eksekusi selesai, mesin penyimpanan tabel akan diganti.

Bukankah itu mudah dipahami?

Konversi batch: Pembuatan skrip otomatis

Jika Anda memiliki puluhan atau bahkan ratusan tabel, memodifikasinya secara manual jelas tidak praktis.

Pada tahap ini, satu kueri dapat digunakan untuk secara otomatis menghasilkan pernyataan konversi batch:

SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;') 
FROM information_schema.tables 
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';

Setelah dijalankan, program akan menampilkan sejumlah... ALTER TABLE ... Penyataan.

Salin pernyataan-pernyataan ini dan jalankan semuanya sekaligus untuk menyelesaikan konversi batch dalam satu kali proses.

Inilah yang dikenal sebagai "konversi batch otomatis".

Penilaian risiko sebelum konversi

Bagaimana cara mengkonfigurasi basis data MySQL/MariaDB untuk mengkonversi tabel InnoDB ke tabel MyISAM secara massal?

Batasan tombol asing

InnoDB mendukung foreign key, sedangkan MyISAM sama sekali tidak mendukungnya.

Setelah dikonversi, batasan foreign key akan langsung dibuang.

Jika bisnis Anda bergantung pada penghapusan atau pembaruan berantai, logika tersebut akan sepenuhnya gagal setelah konversi.

Dukungan transaksi

InnoDB memiliki transaksi dan mendukungnya. COMMITROLLBACK.

MyISAM tidak memiliki transaksi, hanya penguncian tingkat tabel.

Setelah konversi, semua kode yang terkait dengan transaksi akan menjadi tidak valid, dan pengembalian (rollback) tidak akan mungkin dilakukan jika terjadi pengecualian.

Kinerja konkurensi

InnoDB menggunakan penguncian tingkat baris, sedangkan MyISAM menggunakan penguncian tingkat tabel.

Dalam skenario konkurensi tinggi, MyISAM sering mengunci tabel, yang menyebabkan hambatan kinerja.

Fitur indeks

MySQL Sebelum versi 5.6, MyISAM memiliki indeks teks lengkapnya sendiri.

Tapi di MySQL Pengindeksan teks lengkap sudah didukung di versi 5.6 dan 10+ dari MariaDB dan InnoDB.

Oleh karena itu, kecuali Anda menggunakan versi yang lebih lama, tidak perlu beralih ke MyISAM untuk pengindeksan teks lengkap.

Proses Praktik Terbaik

  1. Data cadangan Sebelum mengonversi, pastikan untuk mengekspor terlebih dahulu. .sql File disimpan untuk memastikan file tersebut dapat dipulihkan kapan saja.

  2. Struktur Daftar Periksa Gunakan perintah berikut untuk memeriksa apakah kunci asing ada:

    SHOW CREATE TABLE `你的表名`;
    
  3. Lakukan konversi 使用 ALTER TABLE Alternatifnya, skrip batch dapat digunakan untuk menyelesaikan konversi.

  4. Periksa status kesehatan Setelah konversi selesai, jalankan:

    CHECK TABLE `你的表名`;
    OPTIMIZE TABLE `你的表名`;
    

    Ini memastikan bahwa tabel berfungsi dengan benar dan melepaskan fragmen.

Metode pemulihan terbalik

Jika terjadi penurunan kinerja atau masalah logika bisnis setelah konversi, Anda dapat beralih kembali ke InnoDB kapan saja:

ALTER TABLE `你的表名` ENGINE = InnoDB;

Inilah yang disebut "operasi reversibel," yang memberi Anda jalan keluar.

Pandangan-pandangan otoritatif yang dikutip

Menurut Dokumentasi Resmi MySQL Penjelasan:

"Konstruksi kunci asing"aints hanya didukung oleh InnoDB. Jika Anda mengkonversi tabel ke MyISAM, semua foreign key akan diabaikan.”
——Manual Referensi MySQL, Bab 14.6.6 Batasan Kunci Asing

Pernyataan ini dengan jelas menunjukkan bahwa foreign key sama sekali tidak valid di MyISAM.

Dokumentasi Resmi MariaDB Selain itu, juga ditekankan bahwa:

"MyISAM tidak mendukung transaksi. Aplikasi yang bergantung pada integritas transaksional sebaiknya tidak menggunakan MyISAM."
——Basis Pengetahuan MariaDB, Mesin Penyimpanan

Itulah mengapa Anda harus berpikir dua kali sebelum melakukan peralihan.

Sudut Pandang dan Kesimpulan Saya

Mengonversi InnoDB ke MyISAM itu seperti mengganti mesin mobil mewah dengan mesin truk.

Ia bisa berjalan, tetapi berjalan dengan cara yang sama sekali berbeda.

Jika bisnis Anda melibatkan kueri statistik ringan, kecepatan dan kesederhanaan MyISAM mungkin lebih cocok.

Namun, jika sistem Anda bergantung pada transaksi dan kunci asing, mengonversinya secara terburu-buru sama seperti melepas kantung udara.

Oleh karena itu, kebijaksanaan sejati bukanlah terletak pada mengejar kecepatan secara membabi buta, melainkan pada menyeimbangkan stabilitas dan kinerja.

Pilihan basis data menentukan jiwa dari sistem tersebut.

Menguasai keterampilan dalam mengganti mesin penyimpanan bukan hanya demonstrasi kemampuan teknis, tetapi juga peningkatan pemikiran arsitektur.

Jika Anda mempertimbangkan konversi massal, harap lakukan penilaian risiko komprehensif terlebih dahulu.

Jalankan lingkungan pengujian sekali untuk mensimulasikan skenario bisnis nyata.

Setelah memastikan semuanya benar, jalankan di lingkungan produksi.

Basis data bukanlah mainan; basis data adalah jantung dari data perusahaan.

Dan kamulah yang mengendalikan irama jantungmu.

Harapan Chen Weiliang Blog ( https://www.chenweiliang.com/ Artikel "Bagaimana Cara Mengonversi Tabel InnoDB ke Tabel MyISAM Secara Massal di Database MySQL/MariaDB?" yang dibagikan di sini mungkin bermanfaat bagi Anda.

Selamat datang untuk membagikan tautan artikel ini:https://www.chenweiliang.com/cwl-34157.html

Untuk mengungkap lebih banyak trik tersembunyi🔑, selamat datang untuk bergabung di saluran Telegram kami!

Bagikan dan sukai jika Anda menyukainya! Bagikan dan suka Anda adalah motivasi kami yang berkelanjutan!

 

发表 评论

Alamat email Anda tidak akan dipublikasikan. 必填 项 已 用 * 标注

Direktori Artikel
Gulir ke Atas