sql >> Databasteknik >  >> RDS >> Mysql

Vad är skillnaden mellan MyISAM och InnoDB?

De huvudsakliga skillnaderna mellan InnoDB och MyISAM ("med avseende på design av en tabell eller databas" du frågade om) är stöd för "referensintegritet" och "transaktioner".

Om du behöver databasen för att upprätthålla begränsningar för främmande nyckel, eller om du behöver databasen för att stödja transaktioner (d.v.s. ändringar gjorda av två eller flera DML-operationer som hanteras som en enda arbetsenhet, med alla ändringar antingen tillämpade eller alla ändringar återställda) då skulle du välja InnoDB-motorn, eftersom dessa funktioner saknas i MyISAM-motorn.

Det är de två största skillnaderna. En annan stor skillnad är samtidighet. Med MyISAM kommer en DML-sats att få ett exklusivt lås på bordet, och medan låset hålls kan ingen annan session utföra en SELECT- eller en DML-operation på bordet.

De två specifika motorerna du frågade om (InnoDB och MyISAM) har olika designmål. MySQL har också andra lagringsmotorer, med sina egna designmål.

Så när du väljer mellan InnoDB och MyISAM är det första steget att avgöra om du behöver funktionerna som tillhandahålls av InnoDB. Om inte, är MyISAM uppe för övervägande.

En mer detaljerad diskussion om skillnader är ganska opraktisk (i det här forumet) i frånvaron av en mer detaljerad diskussion om problemutrymmet... hur applikationen kommer att använda databasen, hur många tabeller, storleken på tabellerna, transaktionsbelastningen, utvalda volymer , infoga, uppdateringar, samtidighetskrav, replikeringsfunktioner, etc.

Den logiska designen av databasen bör vara centrerad kring dataanalys och användarkrav; valet att använda en relationsdatabas skulle komma senare, och ännu senare skulle valet av MySQL som ett relationsdatabashanteringssystem, och sedan valet av en lagringsmotor för varje tabell.



  1. Inre sammanfogning &yttre sammanfogning; är ordningen på tabellerna i från viktig?

  2. Benchmarking Managed PostgreSQL Cloud Solutions - Del ett:Amazon Aurora

  3. Tillkännager ClusterControl 1.7.2:Förbättrad PostgreSQL Backup &Support för TimescaleDB &MySQL 8.0

  4. 3 sätt att extrahera året från ett datum i SQL Server (T-SQL)