MySQL gebruikt een combinatie van bestandsorganisaties, afhankelijk van de gebruikte opslagengine. Er is geen enkele, universele bestandsorganisatie voor alle MySQL-opslagengines.
De meest gebruikte opslagengines en de bijbehorende bestandsorganisaties zijn:
* InnoDB: Dit is de standaardopslagengine in de meeste MySQL-versies. Het maakt gebruik van een geclusterde index, wat betekent dat de primaire sleutelwaarden fysiek op schijf zijn geclusterd. Dit verbetert de prestaties voor query's die de primaire sleutel gebruiken. Gegevens worden opgeslagen in een reeks bestanden:systeemtabelruimte, gegevensbestanden (`.ibd`-bestanden, één per tabel, tenzij tabellen in de systeemtabelruimte worden geplaatst) en rollback-segmenten (voor transacties). Het maakt niet direct gebruik van traditionele bestandsorganisaties zoals B-trees op dezelfde manier als sommige oudere bestandssystemen. De interne structuur is complex en maakt gebruik van B-boomstructuren voor indexering en een dubbel gekoppelde lijst voor efficiënte rijtoegang binnen een pagina.
* MijnISAM: Een oudere motor, grotendeels vervangen door InnoDB. MyISAM gebruikt aparte bestanden voor data en indexen. De gegevens worden in één bestand opgeslagen en elke index wordt in een afzonderlijk bestand opgeslagen. De indexen van MyISAM zijn doorgaans gebaseerd op B-trees. Het staat bekend om zijn snellere leesprestaties in vergelijking met InnoDB, maar mist transactieondersteuning en vergrendeling op rijniveau.
* GEHEUGEN (of HEAP): Deze engine slaat tabellen op in het geheugen. De bestandsorganisatie is hier minder relevant, omdat de gegevens zich in het RAM bevinden en niet direct persistent zijn op schijf (tenzij u een specifieke opstelling gebruikt om deze naar schijf te schrijven).
* Archief: Wordt gebruikt voor het archiveren van gegevens. Het maakt gebruik van een eenvoudige, alleen-toevoegen-organisatie, waardoor de overhead wordt geminimaliseerd en de schrijfprestaties worden geoptimaliseerd. Het is niet bedoeld voor veelvuldig lezen.
* CSV: Slaat de gegevens op in gewone CSV-bestanden (Comma Separated Values). Dit is een eenvoudig op tekst gebaseerd formaat.
Samenvattend is er geen eenduidig antwoord op de vraag welke bestandsorganisatie MySQL gebruikt. De organisatie is sterk afhankelijk van de gekozen opslagengine en de interne implementatiedetails ervan. InnoDB maakt standaard gebruik van een complexe, geoptimaliseerde interne structuur, en niet van een eenvoudige, gemakkelijk identificeerbare bestandsorganisatie. |