Hoofdstuk 16 Alternative Storage Engines

Storage engines zijn MySQL componenten die de SQL operaties voor verschillende tabel types afhandelen. InnoDB is de standaard en meest algemene opslag engine, en Oracle raadt aan om het te gebruiken voor tabellen behalve voor gespecialiseerde gebruik gevallen. (Het CREATE TABLE statement in MySQL 8.0 maakt standaard InnoDB tabellen.)

MySQL Server gebruikt een pluggable storage engine architectuur die het mogelijk maakt storage engines te laden in en te ontladen uit een draaiende MySQL server.

Om te bepalen welke storage engines uw server ondersteunt, gebruikt u het SHOW ENGINES statement. De waarde in de kolom Support geeft aan of een engine kan worden gebruikt. Een waarde van YES, NO, of DEFAULT geeft aan dat een engine beschikbaar, niet beschikbaar, of beschikbaar is en momenteel is ingesteld als de standaard storage engine.

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance SchemaTransactions: NO XA: NO Savepoints: NO*************************** 2. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 3. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: NO XA: NO Savepoints: NO*************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears)Transactions: NO XA: NO Savepoints: NO*************************** 5. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engineTransactions: NO XA: NO Savepoints: NO...

Dit hoofdstuk behandelt de gebruikssituaties voor MySQL storage engines voor speciale doeleinden. Het behandelt niet de standaard InnoDB storage engine of de NDB storage engine die worden behandeld in Hoofdstuk 15, De InnoDB Storage Engine en Hoofdstuk 23, MySQL NDB Cluster 8.0. Voor gevorderde gebruikers bevat het ook een beschrijving van de pluggable storage engine architectuur (zie Paragraaf 16.11, “Overzicht van MySQL Storage Engine Architectuur”).

Voor informatie over functies die worden aangeboden in commerciële MySQL Server-binaries, zie MySQL Editions, op de MySQL-website. De beschikbare storage engines kunnen afhangen van welke editie van MySQL u gebruikt.

Voor antwoorden op veelgestelde vragen over MySQL-opslag-engines, zie sectie A.2, “MySQL 8.0 FAQ: Storage Engines”.

MySQL 8.0 Supported Storage Engines

  • InnoDB: De standaard opslag-engine in MySQL 8.0. InnoDB is een transactie-veilige (ACID compliant) storage engine voor MySQL die commit, rollback, en crash-recovery mogelijkheden heeft om gebruikersgegevens te beschermen. InnoDB rij-niveau vergrendeling (zonder escalatie naar grovere granulariteit sloten) en Oracle-stijl consistente niet-vergrendeling leest verhogen multi-user concurrency en prestaties. InnoDB slaat gebruikersgegevens op in geclusterde indexen om de I/O voor veelvoorkomende query’s op basis van primaire sleutels te beperken. Om de integriteit van de gegevens te handhaven, ondersteunt InnoDB ook FOREIGN KEY referential-integrity constraints. Zie hoofdstuk 15, De InnoDB Storage Engine, voor meer informatie over InnoDB.

  • MyISAM: Deze tabellen hebben een kleine voetafdruk. Vergrendeling op tabelniveau beperkt de prestaties bij lees-/schrijfwerkbelastingen. Daarom wordt deze methode vaak gebruikt bij alleen-lezen of voornamelijk-lezen werkbelastingen in web- en datawarehousingconfiguraties.

  • Memory: slaat alle gegevens op in RAM, voor snelle toegang in omgevingen waar snel niet-kritieke gegevens moeten worden opgezocht. Deze engine was vroeger bekend als de HEAP-engine. Het gebruik ervan neemt af; InnoDB met zijn buffer pool geheugengebied biedt een algemene en duurzame manier om de meeste of alle gegevens in het geheugen te bewaren, en NDBCLUSTER biedt snelle key-value lookups voor enorme gedistribueerde datasets.

  • CSV: de tabellen zijn eigenlijk tekstbestanden met door komma’s gescheiden waarden. Met CSV-tabellen kunt u gegevens in CSV-indeling importeren of dumpen, om gegevens uit te wisselen met scripts en toepassingen die dezelfde indeling lezen en schrijven. Omdat CSV-tabellen niet geïndexeerd zijn, bewaart u de gegevens tijdens het normale gebruik in InnoDB-tabellen en gebruikt u CSV-tabellen alleen tijdens de import- of exportfase.

  • Archive: Deze compacte, niet-geïndexeerde tabellen zijn bedoeld voor het opslaan en ophalen van grote hoeveelheden historische, gearchiveerde of beveiligingsauditgegevens waarnaar zelden wordt verwezen.

  • Blackhole: het Blackhole-opslagsysteem aanvaardt gegevens maar slaat ze niet op, vergelijkbaar met het Unix /dev/null-apparaat. Zoekopdrachten leveren altijd een lege set op. Deze tabellen kunnen worden gebruikt in replicatieconfiguraties waarbij DML-statements naar replicaservers worden verzonden, maar de bronserver geen eigen kopie van de gegevens bewaart.

  • NDB (ook bekend als NDBCLUSTER): Deze geclusterde database-engine is met name geschikt voor toepassingen die de hoogst mogelijke mate van uptime en beschikbaarheid vereisen.

  • Merge: stelt een MySQL DBA of ontwikkelaar in staat een reeks identieke MyISAM tabellen logisch te groeperen en als één object te gebruiken. Goed voor VLDB-omgevingen zoals data warehousing.

  • Federated: Biedt de mogelijkheid om afzonderlijke MySQL-servers te koppelen om van vele fysieke servers één logische database te maken. Zeer geschikt voor gedistribueerde of data mart-omgevingen.

  • Example: Deze engine dient als voorbeeld in de MySQL-broncode die illustreert hoe u kunt beginnen met het schrijven van nieuwe opslag-engines. Het is in de eerste plaats van belang voor ontwikkelaars. De storage engine is een “stub” die niets doet. U kunt tabellen maken met deze engine, maar er kunnen geen gegevens in worden opgeslagen of uit worden opgehaald.

U bent niet beperkt tot het gebruik van dezelfde storage engine voor een hele server of schema. U kunt de opslag-engine voor elke tabel opgeven. Een toepassing kan bijvoorbeeld voornamelijk InnoDB-tabellen gebruiken, met één CSV-tabel voor het exporteren van gegevens naar een spreadsheet en een paar MEMORY-tabellen voor tijdelijke werkruimten.

Het kiezen van een Storage Engine

De verschillende storage engines die met MySQL worden geleverd zijn ontworpen met verschillende use cases in gedachten. De volgende tabel geeft een overzicht van een aantal storage engines die met MySQL, met verduidelijkende opmerkingen na de tabel.

Tabel 16.1 Storage Engines Feature Summary

Feature MyISAM Memory InnoDB Archive NDB
B-tree indexes Ja Ja Ja Nee Nee
Backup/punt-in-tijdherstel (noot 1) Ja Ja Ja Ja
Cluster database support Nee Nee Nee Nee Ja
Geclusterde indexen Nee Nee Ja Nee Nee
Gecomprimeerde gegevens Ja (noot 2) Nee Ja Ja Nee
Gegevenscaches Nee N.v.t. Ja Nee Ja
Gecodeerde gegevens Ja (noot 3) Ja (noot 3) Ja (noot 4) Ja (noot 3) Ja (noot 3)
Buitenlandse sleutelondersteuning Nee Nee Ja Nee Ja (noot 5)
Volledige-tekst-zoekindexen Ja Nee Ja (noot 6) Nee Nee
Geospatiale datatype ondersteuning Ja Geen Ja Ja Ja
Geospatiale indexering ondersteuning Ja Nee Ja (noot 7) Nee Nee
Hash indices Nee Ja Nee (noot 8) Nee Ja
Indexcaches Ja N.v.t. Ja Nee Ja
Locking granularity Table Table Row Row Row
MVCC No No Ja No No
Replicatieondersteuning (noot 1) Ja Beperkt (noot 9) Ja Ja Ja
Storage limits 256TB RAM 64TB None 384EB
T-boomindexen Nee Nee Nee Ja
Transacties Nee Ja Nee Ja Nee Ja
Update statistics for data dictionary Ja Ja Ja Ja Ja

Noten:

1. Geïmplementeerd in de server, in plaats van in de opslag-engine.

2. Gecomprimeerde MyISAM-tabellen worden alleen ondersteund bij gebruik van de gecomprimeerde rij-indeling. Tabellen die gebruik maken van de gecomprimeerde rij-indeling met MyISAM zijn read only.

3. Geïmplementeerd in de server via encryptie functies.

4. Geïmplementeerd in de server via encryptie functies; In MySQL 5.7 en later, data-at-rest encryptie wordt ondersteund.

5. Ondersteuning voor foreign keys is beschikbaar in MySQL Cluster NDB 7.3 en later.

6. Ondersteuning voor FULLTEXT indexes is beschikbaar in MySQL 5.6 en later.

7. Ondersteuning voor geospatial indexing is beschikbaar in MySQL 5.7 en later.

8. InnoDB maakt intern gebruik van hash indexes voor zijn Adaptive Hash Index feature.

9. Zie de discussie verderop in deze sectie.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.