Artikel Verzeechnes
De Späichermotor vun enger Datebanktabell ass wéi de Motor vun engem Auto; d'Ännerung vum Motor ännert direkt d'Leeschtung an d'Charakteristiken. Vill Leit mengen, datt eng Datebank nëmme fir d'Späichere vun Daten do ass, awer wann een tatsächlech ufänkt drun ze schaffen... InnoDB Konvertéieren op MyISAMNëmmen dann entdeckt Dir déi verstoppte Geheimnisser hannendrun.
Firwat soll een vun InnoDB op MyISAM wiesselen?
A ville Szenarie ass MyISAM méi séier, besonnesch fir liesschwéier a schreiffrëndlech Applikatiounen, wéi zum Beispill Log- a Statistikdatenbanken.
Säi Verriegelungsmechanismus op Dëschniveau leeft tatsächlech ganz reibungslos bei gerénger Konkurrenzzäit.
Ausserdeem ass d'Dateispäicherung vu MyISAM méi intuitiv; een .MYD Daten späicheren, een .MYI Indexen späicheren, migréieren a Backups maachen sinn all ganz praktesch.
Wéi och ëmmer, d'Transaktiouns- an d'Ënnerstëtzung fir auslännesch Schlësselen vun InnoDB ass a komplexe Geschäftsszenarien bal eng Noutwennegkeet.
Dofir musst Dir erausfannen, ob Äert Geschäft dës Funktiounen tatsächlech brauch, ier Dir den Iwwergank maacht.
Kärkommando: ALTER TABLE
Fir eng eenzeg Tabelle vun InnoDB op MyISAM ze konvertéieren, braucht Dir nëmmen eng Zeil Code:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Nodeems d'Ausféierung fäerdeg ass, gëtt de Späichermotor vun der Tabelle gewiesselt.
Ass dat net einfach?
Batchkonversioun: Automatesch Skriptgeneratioun
Wann Dir Dosende oder souguer Honnerte vun Tabellen hutt, ass et definitiv net praktesch, se manuell z'änneren.
Op dësem Punkt kann eng eenzeg Ufro benotzt ginn fir automatesch Batchkonversiounsaussoen ze generéieren:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Nom Lafen gëtt eng ganz Rëtsch ... ALTER TABLE ... Ausso.
Kopéiert dës Instruktiounen a féiert se all gläichzäiteg aus, fir d'Batchkonvertéierung op eemol ofzeschléissen.
Dëst ass dat, wat als "automatesch Batchkonversioun" bekannt ass.
Risikobewertung virun der Konversioun

Auslännesch Schlësselbeschränkungen
InnoDB ënnerstëtzt auslännesch Schlësselen, während MyISAM se guer net ënnerstëtzt.
Nodeems se konvertéiert goufen, ginn d'Aschränkungen vun den auslännesche Schlësselen direkt ewechgehäit.
Wann Äert Geschäft op kaskadéierend Läschen oder Aktualiséierunge baséiert, wäert d'Logik no der Konversioun komplett ausfalen.
Transaktiounsënnerstëtzung
InnoDB huet Transaktiounen an ënnerstëtzt se. COMMIT an ROLLBACK.
MyISAM huet keng Transaktiounen, nëmme Spären op Tabellenniveau.
Nom Konvertéieren gëtt all transaktiounsbezunnen Code ongëlteg, an e Rollback ass am Fall vun enger Ausnam onméiglech.
Gläichzäiteg Leeschtung
InnoDB benotzt Sperrung op Zeilenniveau, während MyISAM Sperrung op Tabellenniveau benotzt.
A Szenarie mat héijer Konkurrenzzäit spärt MyISAM dacks Tabellen, wat zu Performance-Engpässe féiert.
Indexfunktiounen
an MySQL Virun der Versioun 5.6 hat MyISAM säin eegene Volltextindex.
Mä awer MySQL Volltextindexéierung gëtt schonn an de Versioune 5.6 an 10+ vu MariaDB an InnoDB ënnerstëtzt.
Dofir, ausser Dir benotzt eng méi al Versioun, braucht Dir net op MyISAM fir Volltextindexéierung ze wiesselen.
Best Practice Prozess
Backup-Daten Ier Dir konvertéiert, gitt sécher datt Dir exportéiert.
.sqlDateie ginn esou gespäichert, datt se zu all Moment restauréiert kënne ginn.Struktur vun der Checklëscht Benotzt de folgende Kommando fir ze kontrolléieren ob et e friemen Schlëssel gëtt:
SHOW CREATE TABLE `你的表名`;Konversioun ausféieren benotzt
ALTER TABLEAlternativ kënnen Batch-Skripte benotzt ginn fir d'Konversioun ofzeschléissen.Gesondheetszoustand kontrolléieren Nodeems d'Konversioun fäerdeg ass, fuert aus:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Dëst bestätegt, datt d'Tabell richteg funktionéiert a stellt d'Fragmenter fräi.
Method vun der Réckwärtserhuelung
Wann no der Konversioun eng Leeschtungsverschlechterung oder Problemer mat der Geschäftslogik festgestallt ginn, kënnt Dir zu all Moment zréck op InnoDB wiesselen:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Dëst ass déi sougenannte "reversibel Operatioun", déi Iech en Auswee gëtt.
Autoritär Meenungen, déi zitéiert goufen
laut Offiziell MySQL Dokumentatioun Erklärung:
"Auslännesch Schlësselkonstruktioun"aints ginn nëmme vun InnoDB ënnerstëtzt. Wann Dir eng Tabelle a MyISAM konvertéiert, ginn all auslännesch Schlësselen ignoréiert.
——MySQL Referenzhandbuch, Kapitel 14.6.6 Friemschlësselbeschränkungen
Dës Ausso seet eis kloer, datt auslännesch Schlësselen am MyISAM komplett ongëlteg sinn.
an Offiziell Dokumentatioun vu MariaDB Et gouf och betount, datt:
"MyISAM ënnerstëtzt keng Transaktiounen. Applikatiounen, déi sech op transaktionell Integritéit verloossen, sollten MyISAM net benotzen."
——MariaDB Wëssensbasis, Späichermotoren
Dofir musst Dir zweemol nodenken, ier Dir e Wiessel maacht.
Meng Meenung a Schlussfolgerung
InnoDB op MyISAM ëmzewandelen ass wéi de Motor vun engem Luxusauto duerch e Camionsmotor z'ersetzen.
Et kann lafen, awer et leeft op eng komplett aner Manéier.
Wann Äert Geschäft liicht statistesch Ufroen involvéiert, kéint d'Geschwindegkeet a Einfachheet vu MyISAM méi gëeegent sinn.
Wann Äert System awer op Transaktiounen a Friemschlësselen baséiert, ass et wéi wann Dir den Airbag eraushuelt, wann Dir se iwwerhaapt konvertéiert.
Dofir läit déi richteg Wäisheet net doran, blann Geschwindegkeet ze verfollegen, mä doran, Stabilitéit a Leeschtung am Gläichgewiicht ze halen.
D'Wiel vun der Datebank bestëmmt d'Séil vum System.
D'Meeschterschaft vun de Fäegkeeten beim Schalten vu Späichermotoren ass net nëmmen eng Demonstratioun vun techneschem Kompetenz, mä och eng Verbesserung vum architektoneschen Denken.
Wann Dir eng Massekonversioun iwwerleet, maacht w.e.g. als éischt eng ëmfaassend Risikobewertung.
Fiert d'Testumgebung eemol aus, fir richteg Geschäftsszenarien ze simuléieren.
Nodeems Dir bestätegt hutt, datt alles richteg ass, musst Dir et an der Produktiounsëmfeld ausféieren.
Datebanke sinn keng Spillsaachen; si sinn d'Häerz vun den Entreprisedaten.
An du bass deen, deen de Rhythmus vun dengem Häerz kontrolléiert.
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ Den Artikel "Wéi konvertéiert een InnoDB-Tabellen a MyISAM-Tabellen a MySQL/MariaDB-Datebanken am Batch?", deen hei gedeelt gëtt, kéint Iech hëllefräich sinn.
Wëllkomm de Link vun dësem Artikel ze deelen:https://www.chenweiliang.com/cwl-34157.html
