aasahMedlem sedan mars 20034 471 inlägg Jag står i begrepp att definiera om min databasstruktur för min hobbysite. Numera har jag tillgång till flera olika lagringsmetoder, speciellt till både MyISAM och InnnoDB. Genom att läsa i dokumentationen har jag hittat en del skillnader mellan dessa båda:
InnnoDB
+ Har Transaktionshantering
+ Har FOREIGN KEYS
- Tar mer plats
- Tar mer tid
MyISAM
- Saknar Transaktionshantering
- Saknar FOREIGN KEYS
+ Tar mindre plats
+ Snabbare
Är det någon som vet hur stora skillnaderna är i plats och snabbhet? Är de så stora att de motiverar fortsatt användning av MyISAM, trots att FOREIGN KEY saknas? Transaktionshanteringen som sådan är visserligen trevlig men inte jätteviktig för min hobbysite. Foreign keys skulle jag däremot bra gärna vilja ha.
Finns det fler skillnader?
Vilket system använder ni och varför?
PaceMedlem sedan juni 20019 024 inlägg Har du en hobbysajt kan du lika gärna köra med transaktioner. Det är väl just det hobby är till för, att testa saker.
emissionMedlem sedan dec. 19996 721 inlägg Varken prestandan eller storleken lär bli några faktiska problem, så kör på det som är säkrast.
stevenetMedlem sedan juni 20001 251 inlägg Det beror helt på användningsområdet. Inget som hindrar dig ifrån att ha olika lagringsmetoder för olika tabeller.
Personligen väljer jag MyISAM när jag vill använda mig av fulltextsökningar, http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html, göra beräkningar live med COUNT(*) (dödssynd i InnoDB).
Annars blir det InnoDB för hela slanten.
aasahMedlem sedan mars 20034 471 inlägg
stevenet skrev:
Personligen väljer jag MyISAM när jag vill använda mig av fulltextsökningar, http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html, göra beräkningar live med COUNT(*) (dödssynd i InnoDB)...
Varför är det besvärligt för InnoDB att räkna antalet rader i en tabell? :q
stevenetMedlem sedan juni 20001 251 inlägg MyISAM kan hämta antalet rader ifrån den inbyggda radräknaren, medan InnoDB måste göra en full tabellsökning/full indexsökning. Detta gäller dock endast SELECT COUNT(*) FROM table. Inte radräkningar med WHERE, dessa hanteras på liknande sätt i båda lagringsmotorerna.
Counter-tabeller brukar avhjälpa problemet för InnoDB, fast det är kanske inte alltför skojigt att trixa med på sin leksajt. :)