InnoDB of MyISAM
Momenteel ben ik bezig met een klantensysteem met daarin klant, project, taakmanagement en tijdschrijven en facturatie. Nu is mijn vraag welke engine kan ik het beste gebruiken InnoDB of MyISAM??
Er zal dus redelijk veel informatie worden toegevoegt, gewijzigt en verwijderd. In dit geval zal MyISAM dus sneller werken.
Maar met alle gegevens opvragen zal dat weer InnoDB
Gewijzigd op 01/01/1970 01:00:00 door Jeroen Spaans
Jeroen Spaans schreef op 05.04.2009 00:55:
En wat heb je aan een snelle corrupte database? Niets, null, noppes, nada.Er zal dus redelijk veel informatie worden toegevoegt, gewijzigt en verwijderd. In dit geval zal MyISAM dus sneller werken.
MyISAM is geen relationele database, het is niet mogelijk om relaties te leggen en te onderhouden. Wil je dus een relationele database ja of nee?
Jaa inprincipe wel,, dus is de keuze snel gemaakt:P
wacht maar lekker tot Drizzle uitkomt dan :)
Maak je in je systeem echter veel gebruik van (INNER/LEFT/RIGHT) JOIN's dan is MyISAM hier volgens mij ook minder voor geschikt qua performance (maar nooit uitgetest hoe groot die verschillen precies zijn).
Mak je gebruik van een simpele database structuur (geen zinnige samenhang/relaties tussen tabellen), met eenvoudige queries dan is MyISAM de snellere engine.
Pholeron schreef op 05.04.2009 09:25:
Knappe jongen die dit gaat lukken, het is technisch onmogelijk. Waarom denk je dat het MySQL nog steeds niet is gelukt om relaties af te dwingen in MyISAM? Omdat het een klusje is van een paar dagen? Lijk me sterk.Als je via de database bepaalde relaties wilt kunnen afdwingen, dan zal je dit met MyISAM niet lukken. Vind je het voldoende om deze relaties via PHP te waarborgen dan hoeft dat geen argument meer te zijn.
Quote:
Ik heb het ook nooit getest, maar wanneer dit het geval zou zijn, dan staat MyISAM wederom in "performancehemd" Maak je in je systeem echter veel gebruik van (INNER/LEFT/RIGHT) JOIN's dan is MyISAM hier volgens mij ook minder voor geschikt qua performance (maar nooit uitgetest hoe groot die verschillen precies zijn).
Quote:
Ga maar regelmatig updates uitvoeren, dan vliegen de table locks je om de oren en is iedere snelheid van MyISAM verdwenen. innoDB is dan een heel stuk sneller, die gebruikt row locks. Als bonus krijg je dan ook nog eens dat de data 100x betrouwbaarder is.Mak je gebruik van een simpele database structuur (geen zinnige samenhang/relaties tussen tabellen), met eenvoudige queries dan is MyISAM de snellere engine.
En niet vergeten, er bestaan betere databases dan MySQL. En die kunnen ook (veel?) sneller zijn dan MySQL, de performance kroon is MySQL een aantal jaar geleden al kwijtgeraakt.
@Terence: Doel je soms op Shizzle? ;)
deze, maar die is ook al uit.
Wil Falcon eigenlijk wel proberen. Binnenkort maar eens op een andere poort installeren.
Ik dacht meer aan Falcon, de nieuwe engine van MySQL (versie 6 is nu in beta). Maar misschien bedoelt hij Wil Falcon eigenlijk wel proberen. Binnenkort maar eens op een andere poort installeren.
Wat wordt onder relationele database verstaan dan? Met MyISAM kan je toch ook gewoon Joins uitvoeren etc?
2 voorbeeldjes:
Voorbeeld 1
Tabel users: id INT, username VARCHAR
Tabel interesses: id INT, interesse VARCHAR
Tabel user_interesses: interesse_id INT, user_id INT
Je kan dan een relatie leggen tussen users:id en user_interesses:user_id. Als je nu dan de user verwijdert, worden automatisch ook alle interesses van die user verwijdert.
Voorbeeld 2
Kan zo snel niet een echte situatie bedenken, maar soms heb je 2 gegevens die met elkaar een relatie hebben (zoals net met user en interesse), maar dat de een niet zomaar verwijdert mag worden, omdat het andere gegeven nog van belang is. Je kan dan een RESTRICT opleggen. Het gegeven uit de eerst tabel kan dan niet verwijdert worden, zolang er nog relaties zijn naar een andere tabel.
Toch even een voorbeeld, wat alleen beetje krom is:
Een tabel gebruikers en een tabel forumberichten. Het zou kunnen dat je niet wil dat een gebruiker verwijdert kan worden als er forumberichten van hem aanwezig zijn (geen idee waarom, maar theoretisch ;))
Dus jij zou wel willen dat je een user met gegevens kan verwijderen in een forum en meteen ook al zijn berichten kwijt bent? De berichten moeten blijven staan, evenals de username van diegene die de berichten heeft gepost. Het account komt dus op "non-actief" te staan.
Ik zou meer voor een ander voorbeeld gaan. Bijvoorbeeld een menu met parents en children. Children kunnen niet op zich zelf aanwezig zijn, ze horen bij een parent. Als je dan een relatie legt tussen de children en de parent, dan kun je ervoor zorgen dat bij ON DELETE van de parent ook de children mee gaan.
Robert_Deiman schreef op 06.04.2009 07:30:
Zoals er naar mijn idee vrij duidelijk bij staat :S Ik kon zo snel geen goed voorbeeld bedenken toen, dus probeerde de werking duidelijk te maken. Er staat notabene achter: 'Geen idee waarom, maar theoretisch gezien'@WillemJan Z
Dus jij zou wel willen dat je een user met gegevens kan verwijderen in een forum en meteen ook al zijn berichten kwijt bent? De berichten moeten blijven staan, evenals de username van diegene die de berichten heeft gepost. Het account komt dus op "non-actief" te staan.
Dus jij zou wel willen dat je een user met gegevens kan verwijderen in een forum en meteen ook al zijn berichten kwijt bent? De berichten moeten blijven staan, evenals de username van diegene die de berichten heeft gepost. Het account komt dus op "non-actief" te staan.
edit: GaMer, daar heb ik aan zitten denken, maar hangt weer van situatie af. Soms wil je juist ook de children verwijderen, waardoor het bij het eerst voorbeeld hoort.
edit2: En ik moet eerst je complete bericht lezen, je had het ook over het 1e voorbeeld.
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Kleine test omgevingen maken die het echte systeem simuleren en dan kijken wat beter, sneller en handiger presteert.