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

InnoDB eller MyISAM - Hvorfor ikke begge dele?

Du kan have både MyISAM- og InnoDB-tabeller i den samme database. Hvad du dog vil finde, når du har meget store borde er, at MyISAM vil forårsage problemer med bordlåsning. Hvad dette i sidste ende gør er, at det låser hele bordet for en enkelt transaktion, hvilket er meget dårligt, hvis du har mange brugere, der bruger din hjemmeside. f.eks. hvis du har en bruger, der søger efter noget på dit websted, og forespørgslen tager minutter at fuldføre, kan ingen andre brugere bruge dit websted i den periode, fordi hele tabellen er låst.

InnoDB på den anden side bruger rækkeniveaulåsning, hvilket betyder, at rækken er den eneste række, der er låst fra bordet under en transaktion. InnoDB kan være langsommere ved søgninger, fordi den ikke tilbyder fuldtekstsøgning som MyISAM, men det er ikke et stort problem, når du sammenligner det med tabelniveaulåsning af MyISAM. Hvis du bruger InnoDB, ligesom mange store websteder, kan du bruge en søgemaskine på serversiden som Sphinx for fuldtekstsøgninger. Eller du kan endda bruge en MyISAM-tabel til at søge som f00 foreslået. Jeg havde personligt anbefalet InnoDB primært på grund af låsefunktionen på rækkeniveau, men også fordi du kan implementere fuldtekstsøgning på mange andre måder.

Grundlæggende, hvis du har en opslagstavle-applikation med masser af udvalg, indsættelser såvel som opdateringer, er InnoDB sandsynligvis det generelt passende valg. Men hvis du ikke bygger sådan noget (eller nogen anden ting med registrerede brugere), og du arbejder mest med statisk indhold (eller mere læser end skriver), så kunne du bruge MyISAM.



  1. Indstilling af Django/MySQL-websted til at bruge UTF-8

  2. NUMTOYMINTERVAL() Funktion i Oracle

  3. Hvornår skal man gemme billeder i en database (mySQL) og hvornår ikke? (Linker billede til element i databasen)

  4. Oracle-databasen hænger uendeligt i UPDATE-forespørgsler