sql >> Database teknologi >  >> RDS >> Mysql

Hvad er forskellen mellem MyISAM og InnoDB?

De vigtigste forskelle mellem InnoDB og MyISAM ("med hensyn til design af en tabel eller database", du spurgte om) er understøttelse af "henvisningsintegritet" og "transaktioner".

Hvis du har brug for databasen til at håndhæve begrænsninger for fremmednøgle, eller du har brug for databasen til at understøtte transaktioner (dvs. ændringer foretaget af to eller flere DML-operationer, der håndteres som en enkelt arbejdsenhed, med alle ændringerne enten anvendt, eller alle ændringerne er ført tilbage) så ville du vælge InnoDB-motoren, da disse funktioner er fraværende i MyISAM-motoren.

Det er de to største forskelle. En anden stor forskel er samtidighed. Med MyISAM vil en DML-sætning få en eksklusiv lås på bordet, og mens låsen holdes, kan ingen anden session udføre en SELECT- eller en DML-handling på bordet.

De to specifikke motorer, du spurgte om (InnoDB og MyISAM), har forskellige designmål. MySQL har også andre lagringsmotorer med deres egne designmål.

Så når du vælger mellem InnoDB og MyISAM, er det første trin at afgøre, om du har brug for funktionerne fra InnoDB. Hvis ikke, så er MyISAM til overvejelse.

En mere detaljeret diskussion af forskelle er temmelig upraktisk (i dette forum) uden en mere detaljeret diskussion af problemrummet... hvordan applikationen vil bruge databasen, hvor mange tabeller, størrelsen af ​​tabellerne, transaktionsbelastningen, mængder af udvalgte , indsæt, opdateringer, samtidighedskrav, replikeringsfunktioner osv.

Det logiske design af databasen bør være centreret omkring dataanalyse og brugerkrav; valget om at bruge en relationsdatabase ville komme senere, og endnu senere ville valget af MySQL som et relationelt databasestyringssystem og derefter valget af en storage-motor for hver tabel.



  1. MariaDB Backup &PostgreSQL i skyen - ClusterControl Release 1.6.1

  2. Hierarkisk SQL-spørgsmål

  3. SET NULL:Angiv en streng, der skal returneres, når der forekommer en nulværdi i SQLcl / SQL*Plus

  4. Kontroller, at tabellen eksisterer eller ej, før du opretter den i Oracle