InnoDB of MyISAM

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Spaans

Jeroen Spaans

05/04/2009 00:55:00
Quote Anchor link
Hallo,,

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
 
PHP hulp

PHP hulp

19/04/2024 23:09:42
 
Frank -

Frank -

05/04/2009 01:02:00
Quote Anchor link
Jeroen Spaans schreef op 05.04.2009 00:55:
Er zal dus redelijk veel informatie worden toegevoegt, gewijzigt en verwijderd. In dit geval zal MyISAM dus sneller werken.
En wat heb je aan een snelle corrupte database? Niets, null, noppes, nada.

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?
 
Jeroen Spaans

Jeroen Spaans

05/04/2009 01:05:00
Quote Anchor link
Jaa inprincipe wel,, dus is de keuze snel gemaakt:P
 
Terence Hersbach

Terence Hersbach

05/04/2009 03:59:00
Quote Anchor link
wacht maar lekker tot Drizzle uitkomt dan :)
 
Martijn Wieringa

Martijn Wieringa

05/04/2009 09:25:00
Quote Anchor link
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.

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.
 
Frank -

Frank -

05/04/2009 09:51:00
Quote Anchor link
Pholeron schreef op 05.04.2009 09:25:
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.
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.

Quote:
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).
Ik heb het ook nooit getest, maar wanneer dit het geval zou zijn, dan staat MyISAM wederom in "performancehemd"

Quote:
Mak je gebruik van een simpele database structuur (geen zinnige samenhang/relaties tussen tabellen), met eenvoudige queries dan is MyISAM de snellere engine.
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.

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? ;)
 
Willem Jan Z

Willem Jan Z

05/04/2009 22:54:00
Quote Anchor link
Ik dacht meer aan Falcon, de nieuwe engine van MySQL (versie 6 is nu in beta). Maar misschien bedoelt hij deze, maar die is ook al uit.

Wil Falcon eigenlijk wel proberen. Binnenkort maar eens op een andere poort installeren.
 
Kay Kay

Kay Kay

05/04/2009 23:32:00
Quote Anchor link
Wat wordt onder relationele database verstaan dan? Met MyISAM kan je toch ook gewoon Joins uitvoeren etc?
 
Willem Jan Z

Willem Jan Z

06/04/2009 00:06:00
Quote Anchor link
Met een relationele database, kan je relaties maken tussen tabellen.

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 ;))
 
Robert Deiman

Robert Deiman

06/04/2009 07:30:00
Quote Anchor link
@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.
 
GaMer B

GaMer B

06/04/2009 09:34:00
Quote Anchor link
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.
 
Willem Jan Z

Willem Jan Z

06/04/2009 13:15:00
Quote Anchor link
Robert_Deiman schreef op 06.04.2009 07:30:
@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.
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'

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
 
GaMer B

GaMer B

06/04/2009 13:27:00
Quote Anchor link
Klopt ja. Het hangt helemaal van de situatie af en eigelijk kan je niet zomaar een voorbeeld geven, zonder de hele situatie te omschrijven. Eigelijk zo je zulke relationele dingen gewoon met trial & error moeten uitproberen.

Kleine test omgevingen maken die het echte systeem simuleren en dan kijken wat beter, sneller en handiger presteert.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.