Diréktori Tulisan
Mesin panyimpen tabel database téh siga mesin mobil; ngarobah mesin langsung ngarobah kinerja sareng karakteristikna. Seueur jalmi anu nganggap yén database ngan ukur kanggo nyimpen data, tapi nalika anjeun leres-leres ngamimitian damel dina éta... InnoDB 转成 MyISAMNgan harita anjeun bakal mendakan rusiah anu disumputkeun di balikna.
Naha aya anu hoyong ngalih tina InnoDB ka MyISAM?
Dina seueur skenario, MyISAM langkung gancang, khususna pikeun aplikasi anu beurat dibaca sareng anu hampang ditulis sapertos database log sareng statistik.
Mékanisme konci tingkat méja na sabenerna jalan kalawan lancar pisan dina konkurénsi anu handap.
Leuwih ti éta, panyimpenan file MyISAM langkung intuitif; hiji .MYD Nyimpen data, hiji .MYI Nyimpen indéks, migrasi, sareng cadangan sadayana merenah pisan.
Nanging, dukungan transaksi sareng konci asing InnoDB ampir janten kabutuhan dina skenario bisnis anu rumit.
Ku kituna, anjeun kedah nangtoskeun naha bisnis anjeun leres-leres peryogi fitur-fitur ieu sateuacan ngalakukeun transisi.
Paréntah inti: ALTER TABLE
Pikeun ngarobah hiji tabel tina InnoDB ka MyISAM, anjeun ngan ukur peryogi hiji baris kode:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Saatos palaksanaan réngsé, mesin panyimpenan tabel bakal dialihkeun.
Naha éta téh teu lugas?
Konvérsi sacara batch: Pembuatan skrip otomatis
Upami anjeun gaduh puluhan atanapi bahkan ratusan tabel, ngarobihna sacara manual pasti henteu praktis.
Dina tahap ieu, hiji pamundut tiasa dianggo pikeun sacara otomatis ngahasilkeun pernyataan konvérsi angkatan:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Saatos dijalankeun, éta bakal ngaluarkeun sababaraha... ALTER TABLE ... Pernyataan.
Salin pernyataan ieu sareng laksanakeun sadayana sakaligus pikeun ngalengkepan konvérsi angkatan sakaligus.
Ieu anu katelah "konvérsi bets otomatis".
Penilaian résiko sateuacan konvérsi

Kendala konci asing
InnoDB ngadukung konci asing, sedengkeun MyISAM henteu ngadukungna pisan.
Sakali dirobah, kendala konci asing bakal langsung dipiceun.
Upami bisnis anjeun ngandelkeun ngahapus atanapi apdet sacara bertahap, logika na bakal gagal total saatos konvérsi.
Dukungan transaksi
InnoDB gaduh transaksi sareng ngadukungna. COMMIT 和 ROLLBACK.
MyISAM teu gaduh transaksi, ngan ukur konci tingkat tabel.
Saatos konvérsi, sadaya kode anu aya hubunganana sareng transaksi bakal janten teu sah, sareng rollback moal mungkin upami aya pengecualian.
Kinerja konkurénsi
InnoDB nganggo konci tingkat baris, sedengkeun MyISAM nganggo konci tingkat tabel.
Dina skenario konkurénsi anu luhur, MyISAM sering ngonci tabel, anu ngabalukarkeun hambatan kinerja.
Fitur indéks
在 MySQL Sateuacan vérsi 5.6, MyISAM gaduh indéks téks lengkepna nyalira.
Tapi dina MySQL Indéks téks lengkep parantos dirojong dina vérsi 5.6 sareng 10+ MariaDB sareng InnoDB.
Ku kituna, kajaba anjeun nganggo vérsi anu langkung lami, teu kedah ngalih ka MyISAM pikeun indéks téks lengkep.
Prosés Praktik Pangsaéna
Data cadangan Sateuacan ngarobah, pastikeun tos diékspor.
.sqlPayil disimpen supados tiasa dibalikeun deui iraha waé.Struktur Daptar Pariksa Anggo paréntah ieu pikeun mariksa naha aya konci asing:
SHOW CREATE TABLE `你的表名`;Laksanakeun konvérsi 使用
ALTER TABLEAlternatipna, skrip batch tiasa dianggo pikeun ngalengkepan konvérsi.Pariksa status kaséhatan Saatos konvérsi réngsé, jalankeun:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Ieu mastikeun yén tabel fungsina leres sareng ngaleupaskeun fragmen.
Métode pamulihan tibalik
Upami aya penurunan kinerja atanapi masalah logika bisnis anu dititénan saatos konvérsi, anjeun tiasa uih deui ka InnoDB iraha waé:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Ieu anu disebut "operasi anu tiasa dibalikkeun," masihan anjeun jalan kaluar.
Sudut pandang otoritatif anu disebatkeun
Numutkeun Dokuméntasi Resmi MySQL Katerangan:
"Konstr konci asing"aints ngan ukur dirojong ku InnoDB. Upami anjeun ngarobih tabel ka MyISAM, sadaya konci asing bakal dipaliré.
——Manual Réferénsi MySQL, Bab 14.6.6 Kendala Konci Asing
Pernyataan ieu sacara jelas nunjukkeun yén konci asing teu valid pisan dina MyISAM.
jeung Dokuméntasi Resmi MariaDB Ogé ditegeskeun yén:
"MyISAM henteu ngadukung transaksi. Aplikasi anu ngandelkeun integritas transaksional henteu kedah nganggo MyISAM."
——Basis Pangaweruh MariaDB, Mesin Panyimpenan
Éta sababna anjeun kedah mikir dua kali sateuacan ngarobih.
Sudut Pandang sareng Kacindekan Abdi
Ngarobah InnoDB ka MyISAM téh kawas ngaganti mesin mobil méwah ku mesin treuk.
Éta tiasa dijalankeun, tapi jalanna béda pisan.
Upami bisnis anjeun ngalibatkeun pamundut statistik anu hampang, kecepatan sareng kesederhanaan MyISAM panginten langkung cocog.
Nanging, upami sistem anjeun ngandelkeun transaksi sareng konci asing, ngarobihna sacara buru-buru sapertos nyabut airbag.
Ku kituna, hikmah sajati téh lain dina ngudag kecepatan sacara buta, tapi dina ngimbangan stabilitas jeung kinerja.
Pilihan basis data nangtukeun jiwa sistem.
Nguasaan kamampuan ngaganti mesin panyimpenan teu ngan ukur nunjukkeun kamampuan téknis, tapi ogé ningkatkeun pamikiran arsitéktur.
Upami anjeun badé ngarencanakeun konvérsi massal, mangga laksanakeun penilaian résiko anu lengkep heula.
Jalankeun lingkungan uji sakali pikeun ngasimulasikeun skenario bisnis nyata.
Saatos mastikeun yén sadayana leres, jalankeun paréntah dina lingkungan produksi.
Basis data lain cocooan; éta téh jantung data perusahaan.
Jeung anjeun nu ngatur ritme jantung anjeun.
Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ Artikel "Kumaha Cara Ngonversi Tabel InnoDB kana Tabel MyISAM sacara Batch dina Database MySQL/MariaDB?" anu dibagikeun di dieu tiasa ngabantosan anjeun.
Wilujeng ngabagikeun tautan artikel ieu:https://www.chenweiliang.com/cwl-34157.html
