sql >> Databasteknik >  >> RDS >> Mysql

InnoDB eller MyISAM - Varför inte båda?

Du kan ha både MyISAM- och InnoDB-tabeller i samma databas. Vad du dock kommer att upptäcka när du har mycket stora bord är att MyISAM skulle orsaka problem med bordslåsning. Vad detta i slutändan gör är att det låser hela bordet för en enda transaktion, vilket är mycket dåligt om du har många användare som använder din webbplats. t.ex. om du har en användare som söker efter något på din webbplats och frågan tar minuter att slutföra, kan inga andra användare använda din webbplats under den perioden eftersom hela tabellen är låst.

InnoDB å andra sidan använder radnivålåsning, vilket innebär att raden är den enda raden som är låst från tabellen under en transaktion. InnoDB kan vara långsammare vid sökningar eftersom den inte erbjuder fulltextsökning som MyISAM, men det är inte ett stort problem när du jämför det med tabellnivålåsning av MyISAM. Om du använder InnoDB, som många stora webbplatser, kan du använda en sökmotor på serversidan som Sphinx för fulltextsökningar. Eller så kan du till och med använda en MyISAM-tabell för att göra sökningen som f00 föreslog. Jag hade personligen rekommenderat InnoDB främst på grund av låsningsfunktionen på radnivå, men också för att du kan implementera fulltextsökning på många andra sätt.

I grund och botten, om du har en anslagstavla-applikation med många val, inlägg och uppdateringar, är InnoDB förmodligen det generellt lämpliga valet. Men om du inte bygger något sådant (eller någon annan sak med registrerade användare) och ditt arbete mestadels med statiskt innehåll (eller mer läser än skriv), då kan du använda MyISAM.



  1. Varför flyter MySQL round mycket mer än förväntat?

  2. Hur man tar bort alla dubbletter i PHP/Mysql

  3. MySQL:Välj flera rader som innehåller värden från en kolumn

  4. Finns det en visning i all (set division?) operation inbyggd i MySQL?