Directori d'articles
El motor d'emmagatzematge d'una taula de base de dades és com el motor d'un cotxe; canviar el motor canvia immediatament el rendiment i les característiques. Molta gent pensa que una base de dades només serveix per emmagatzemar dades, però quan realment comences a treballar-hi... InnoDB 转成 MyISAMNomés així descobriràs els secrets que s'amaguen darrere.
Per què algú voldria canviar d'InnoDB a MyISAM?
En molts escenaris, MyISAM és més ràpid, especialment per a aplicacions amb molta lectura i poca escriptura, com ara bases de dades de registre i estadístiques.
El seu mecanisme de bloqueig a nivell de taula funciona molt bé amb baixa concurrència.
A més, l'emmagatzematge de fitxers de MyISAM és més intuïtiu; un .MYD Emmagatzemar dades, una .MYI Emmagatzemar índexs, migrar i fer còpies de seguretat són molt pràctics.
Tanmateix, el suport de transaccions i claus externes d'InnoDB és gairebé una necessitat en escenaris empresarials complexos.
Per tant, heu d'esbrinar si la vostra empresa realment necessita aquestes funcions abans de fer la transició.
Ordre principal: ALTER TABLE
Per convertir una sola taula d'InnoDB a MyISAM, només necessiteu una línia de codi:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Un cop finalitzada l'execució, es canviarà el motor d'emmagatzematge de la taula.
No és senzill?
Conversió per lots: generació automàtica de scripts
Si teniu desenes o fins i tot centenars de taules, modificar-les manualment definitivament no és pràctic.
En aquest punt, es pot utilitzar una sola consulta per generar automàticament sentències de conversió per lots:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Després d'executar-se, generarà un munt de... ALTER TABLE ... Declaració.
Copieu aquestes instruccions i executeu-les totes alhora per completar la conversió per lots d'una sola vegada.
Això és el que es coneix com a "conversió per lots automatitzada".
Avaluació de riscos abans de la conversió

Restriccions de clau externa
InnoDB admet claus externes, mentre que MyISAM no les admet en absolut.
Un cop finalitzada la conversió, es descartaran les restriccions de clau externa.
Si la vostra empresa depèn d'eliminacions o actualitzacions en cascada, la lògica fallarà completament després de la conversió.
Suport de transaccions
InnoDB té transaccions i les admet. COMMIT 和 ROLLBACK.
MyISAM no té transaccions, només bloquejos a nivell de taula.
Després de la conversió, tot el codi relacionat amb la transacció esdevindrà invàlid i la reversió serà impossible en cas d'una excepció.
Rendiment de concurrència
InnoDB utilitza bloqueig a nivell de fila, mentre que MyISAM utilitza bloqueig a nivell de taula.
En escenaris d'alta concurrència, MyISAM bloqueja sovint les taules, cosa que provoca colls d'ampolla de rendiment.
Funcions de l'índex
在 MySQL Abans de la versió 5.6, MyISAM tenia el seu propi índex de text complet.
Però dins MySQL La indexació de text complet ja és compatible amb les versions 5.6 i 10+ de MariaDB i InnoDB.
Per tant, tret que utilitzeu una versió anterior, no cal canviar a MyISAM per a la indexació de text complet.
Procés de bones pràctiques
Còpia de seguretat de dades Abans de convertir, assegureu-vos d'exportar.
.sqlEls fitxers s'emmagatzemen per garantir que es puguin restaurar en qualsevol moment.Estructura de la llista de comprovació Feu servir l'ordre següent per comprovar si existeix una clau externa:
SHOW CREATE TABLE `你的表名`;Realitza la conversió 使用
ALTER TABLEAlternativament, es poden utilitzar scripts per lots per completar la conversió.Comprovar l'estat de salut Un cop finalitzada la conversió, executeu:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Això confirma que la taula funciona correctament i allibera fragments.
Mètode de recuperació inversa
Si observeu problemes de degradació del rendiment o de lògica empresarial després de la conversió, podeu tornar a InnoDB en qualsevol moment:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Això és el que s'anomena "operació reversible", que et dóna una sortida.
Punts de vista autoritzats citats
Segons Documentació oficial de MySQL Explicació:
"Construcció de clau externa"aiEls nts només són compatibles amb InnoDB. Si convertiu una taula a MyISAM, s'ignoraran totes les claus externes.
——Manual de referència de MySQL, capítol 14.6.6 Restriccions de clau externa
Aquesta afirmació ens indica clarament que les claus externes són completament invàlides a MyISAM.
i Documentació oficial de MariaDB També es va emfatitzar que:
"MyISAM no admet transaccions. Les aplicacions que depenen de la integritat transaccional no haurien d'utilitzar MyISAM."
——Base de coneixements de MariaDB, Motors d'emmagatzematge
Per això cal pensar-s'ho dues vegades abans de fer un canvi.
El meu punt de vista i conclusió
Convertir InnoDB a MyISAM és com substituir el motor d'un cotxe de luxe pel motor d'un camió.
Pot funcionar, però funciona d'una manera completament diferent.
Si el vostre negoci implica consultes estadístiques lleugeres, la velocitat i la simplicitat de MyISAM poden ser més adequades.
Tanmateix, si el vostre sistema depèn de transaccions i claus externes, convertir-les precipitadament és com treure el coixí de seguretat.
Per tant, la veritable saviesa no rau en perseguir cegament la velocitat, sinó en equilibrar l'estabilitat i el rendiment.
L'elecció de la base de dades determina l'ànima del sistema.
Dominar les habilitats de commutació de motors d'emmagatzematge no només és una demostració d'habilitat tècnica, sinó també una elevació del pensament arquitectònic.
Si esteu considerant una conversió massiva, primer feu una avaluació de riscos exhaustiva.
Executeu l'entorn de prova una vegada per simular escenaris empresarials reals.
Després de confirmar que tot és correcte, executeu-ho a l'entorn de producció.
Les bases de dades no són joguines; són el cor de les dades empresarials.
I tu ets qui controla el ritme del teu cor.
Bloc d'Hope Chen Weiliang ( https://www.chenweiliang.com/ L'article "Com convertir per lots taules InnoDB a taules MyISAM a bases de dades MySQL/MariaDB?" compartit aquí us pot ser útil.
Benvingut a compartir l'enllaç d'aquest article:https://www.chenweiliang.com/cwl-34157.html
