Direct naar de inhoud
xhosting

InnoDB vs MyISAM

2 min. lezen

Wat is een storage engine?

Een storage engine is het onderdeel van de database dat bepaalt hoe gegevens op schijf worden opgeslagen en hoe ze worden gelezen en geschreven. De vraag InnoDB vs MyISAM gaat over die keuze: bij MySQL en MariaDB kies je per tabel een engine, en InnoDB en MyISAM zijn de twee bekendste.

De engine bepaalt niet wat je in een tabel zet, maar wel hoe betrouwbaar en gelijktijdig die gegevens worden verwerkt. Een tabel met bestellingen en een tabel met blogberichten mogen dus verschillende engines hebben. Voor een website is dat een belangrijk verschil.

Waarin verschillen InnoDB en MyISAM?

InnoDB ondersteunt transacties, waarmee een reeks wijzigingen als één geheel wordt opgeslagen. Bij het schrijven vergrendelt hij alleen de rijen die worden gewijzigd, zodat andere bezoekers gewoon door kunnen werken. Na een crash herstelt InnoDB zichzelf meestal met behulp van een logbestand van transacties.

MyISAM ondersteunt geen transacties. Bij het schrijven wordt vaak de hele tabel vergrendeld, waardoor gelijktijdige wijzigingen elkaar kunnen ophouden. Na een crash is herstel minder vanzelfsprekend en kunnen tabellen beschadigen; zie database corrupt. MyISAM was vroeger populair voor leeszware toepassingen, maar voor de meeste websites weegt dat niet op tegen de nadelen.

Waarom InnoDB de standaard is geworden

InnoDB is al lange tijd de standaard-engine in MySQL en MariaDB. Dat komt vooral door de betrouwbaarheid. Transacties, rijvergrendeling en goed herstel passen bij webwinkels, ledenadministraties en andere toepassingen waar gegevens niet mogen verdwijnen.

MyISAM vind je nog in oudere installaties en sommige applicaties. Het is daarom goed om te weten welke engine je tabellen gebruiken, zeker bij oudere websites. Een tabel die vooral wordt gelezen en zelden verandert, werkt in beide engines prima. Het verschil merk je vooral bij gelijktijdig schrijven en bij storingen. Lees meer over wat een databasetransactie is.

Veelgestelde vragen

Kan ik een tabel van MyISAM naar InnoDB omzetten?

Ja, dat kan met een opdracht die de engine van de tabel wijzigt, bijvoorbeeld via een databasebeheertool zoals phpMyAdmin. Maak eerst een back-up en test de wijziging liefst op een kopie. Bij grote tabellen kan het even duren. Bij twijfel vraag je je ontwikkelaar of hoster om advies.

Hoe zie ik welke engine mijn tabellen gebruiken?

Dat zie je per tabel in een databasebeheertool zoals phpMyAdmin, bij de tabelinformatie of structuur. Met een SQL-opdracht kun je de engine van alle tabellen in een database in één overzicht opvragen. Voor een niet-technische gebruiker is de beheertool meestal het makkelijkst.

Corrupte database

Een corrupte database is een database met beschadigde tabellen. Lees wat het betekent, welke oorzaken er zijn en waarom een recente back-up telt.

Aparte databaseserver

Een aparte databaseserver scheidt je database van de webserver. Lees wat dat oplevert voor schaal en stabiliteit, en welke nadelen zoals vertraging er...

Wat is een database

Wat is een database? Lees welke gegevens een website erin bewaart, waarom dynamische sites er niet zonder kunnen en wat je als eigenaar moet weten.