sql >> Databasteknik >  >> RDS >> Mysql

MyISAM- och InnoDB-tabeller i en databas

Nuförtiden använder jag alltid InnoDB som standard, speciellt på de skrivintensiva tabellerna du nämner där MyISAM lider av fullbordslåsning. Här är en direkt jämförelse.

Skäl att använda MyISAM:

  • Tabell är riktigt snabba för utvalda tunga laster
  • Tabellnivålås begränsar deras skalbarhet för skrivintensiva fleranvändarmiljöer.
  • Minsta diskutrymmesförbrukning
  • Fulltextindex
  • Sammanslagna och komprimerade tabeller.

Skäl att använda InnoDB:

  • ACID-transaktioner
  • Låsning på radnivå
  • Konsekventa läsningar – gör att du kan nå utmärkt lässkrivning samtidigt.
  • Primär nyckelklustring – ger utmärkt prestanda i vissa fall.
  • Stöd för främmande nyckel.
  • Både index- och datasidor kan cachelagras.
  • Automatisk kraschåterställning - om MySQL-avstängningen var oren kommer InnoDB-tabeller fortfarande - återställas till det konsekventa tillståndet - Ingen kontroll/reparation som MyISAM kan kräva.
  • Alla uppdateringar måste passera transaktionsmotorn i InnoDB, som ofta minskar - prestanda jämfört med icke-transaktionella lagringsmotorer.

Ovanstående är hämtat från denna webbplats , som inte längre verkar fungera.




  1. Hämta kolumnnamn och typer av en lagrad procedur?

  2. SQL Server sp_msforeachtable användning för att välja endast de tabeller som uppfyller något villkor

  3. Exportera SQLite-databas till en CSV-fil

  4. MySQL:Ogiltig GIS-data tillhandahålls för funktionen st_geometryfromtext