Luku 16 Vaihtoehtoiset tallennusmoottorit

Tallennusmoottorit ovat MySQL:n komponentteja, jotka käsittelevät eri taulutyyppien SQL-operaatioita. InnoDB on oletusarvoinen ja yleiskäyttöisin tallennusmoottori, ja Oracle suositteleekin sen käyttämistä taulukoissa lukuun ottamatta erikoistuneita käyttötapauksia. (MySQL 8.0:n CREATE TABLE-lause luo oletusarvoisesti InnoDB-tauluja.)

MySQL-palvelin käyttää pluggable storage engine -arkkitehtuuria, joka mahdollistaa tallennusmoottoreiden lataamisen käynnissä olevaan MySQL-palvelimeen ja niiden purkamisen siitä.

Voit määrittää, mitä tallennusmoottoreita palvelimesi tukee, käyttämällä SHOW ENGINES-lauseketta. Arvo sarakkeessa Support osoittaa, voidaanko moottoria käyttää. Arvo YES, NO tai DEFAULT osoittaa, että moottori on käytettävissä, ei käytettävissä tai käytettävissä ja asetettu tällä hetkellä oletustallennusmoottoriksi.

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

Tässä luvussa käsitellään MySQL:n erityiskäyttöisten tallennusmoottoreiden käyttötapauksia. Se ei käsittele oletustallennusmoottoria InnoDB tai tallennusmoottoria NDB, joita käsitellään luvussa 15, The InnoDB Storage Engine (InnoDB-tallennusmoottori) ja luvussa 23, MySQL NDB Cluster 8.0. Edistyneemmille käyttäjille se sisältää myös kuvauksen liitettävän tallennusmoottorin arkkitehtuurista (katso luku 16.11, ”Yleiskatsaus MySQL:n tallennusmoottorin arkkitehtuuriin”).

Tietoa kaupallisissa MySQL-palvelimen binääritiedostoissa tarjottavista ominaisuuksista on MySQL-verkkosivuston kohdassa MySQL Editions. Käytettävissä olevat tallennusmoottorit saattavat riippua siitä, mitä MySQL-versiota käytät.

Vastauksia MySQL:n tallennusmoottoreita koskeviin usein kysyttyihin kysymyksiin on kohdassa A.2, ”MySQL 8.0 UKK”: Tallennuskoneet”.

MySQL 8.0:n tuetut tallennuskoneet

  • InnoDB: Oletustallennuskone MySQL 8.0:ssa. InnoDB on MySQL:n transaktioturvallinen (ACID-yhteensopiva) tallennusmoottori, jolla on commit-, rollback- ja crash-recovery-ominaisuudet käyttäjätietojen suojaamiseksi. InnoDB-rivitason lukitus (ilman karkeamman rakeisuuden lukituksia) ja Oracle-tyylinen johdonmukainen lukitsematon lukeminen lisäävät monen käyttäjän samanaikaisuutta ja suorituskykyä. InnoDB Käyttäjätiedot tallennetaan klusteroituihin indekseihin, jotta voidaan vähentää ensisijaisiin avaimiin perustuvien yleisten kyselyjen I/O:ta. Tietojen eheyden ylläpitämiseksi InnoDB tukee myös FOREIGN KEY-viittauksellisen eheyden rajoituksia. Lisätietoja InnoDB:stä on luvussa 15, The InnoDB Storage Engine.

  • MyISAM: Näillä taulukoilla on pieni tilantarve. Taulukkotason lukitus rajoittaa suorituskykyä luku/kirjoitus-työkuormissa, joten sitä käytetään usein vain luku tai lähinnä luku-työkuormissa Web- ja tietovarastokokoonpanoissa.

  • Memory: Tallentaa kaikki tiedot RAM-muistiin nopeaa käyttöä varten ympäristöissä, joissa tarvitaan ei-kriittisten tietojen nopeita hakuja. Tämä moottori tunnettiin aiemmin nimellä HEAP-moottori. Sen käyttötapaukset vähenevät; InnoDB tarjoaa puskuripoolin muistialueineen yleiskäyttöisen ja kestävän tavan säilyttää suurin osa tai kaikki tiedot muistissa, ja NDBCLUSTER tarjoaa nopeita avainarvojen hakuja valtaville hajautetuille tietokokonaisuuksille.

  • CSV: Sen taulukot ovat oikeastaan tekstitiedostoja, joissa on pilkulla erotetut arvot. CSV-taulukoiden avulla voit tuoda tai dumpata tietoja CSV-muodossa, jotta voit vaihtaa tietoja skriptien ja sovellusten kanssa, jotka lukevat ja kirjoittavat samaa muotoa. Koska CSV-taulukoita ei indeksoida, säilytät tiedot tavallisesti InnoDB-taulukoissa normaalin toiminnan aikana ja käytät CSV-taulukoita vain tuonti- tai vientivaiheessa.

  • Archive: Nämä kompaktit, indeksoimattomat taulut on tarkoitettu suurten määrien harvoin viitattujen historiallisten, arkistoitujen tai tietoturvatarkastustietojen tallentamiseen ja hakemiseen.

  • Blackhole: Blackhole-tallennusmoottori hyväksyy mutta ei tallenna tietoja Unixin /dev/null-laitteen tapaan. Kyselyt palauttavat aina tyhjän joukon. Näitä taulukoita voidaan käyttää replikointikokoonpanoissa, joissa DML-lauseet lähetetään replikaatiopalvelimille, mutta lähdepalvelin ei pidä omaa kopiota tiedoista.

  • NDB (tunnetaan myös nimellä NDBCLUSTER): Tämä klusteroitu tietokantamoottori soveltuu erityisesti sovelluksiin, jotka vaativat mahdollisimman suurta käytettävyyttä ja käytettävyyttä.

  • Merge: Mahdollistaa MySQL DBA:n tai kehittäjän ryhmitellä loogisesti useita samanlaisia MyISAM-tauluja ja viitata niihin yhtenä objektina. Hyvä VLDB-ympäristöissä, kuten tietovarastoinnissa.

  • Federated: Tarjoaa mahdollisuuden yhdistää erillisiä MySQL-palvelimia ja luoda yksi looginen tietokanta useista fyysisistä palvelimista. Erittäin hyvä hajautettuihin tai datamart-ympäristöihin.

  • Example: Tämä moottori toimii esimerkkinä MySQL:n lähdekoodissa, joka havainnollistaa, miten uusien tallennuskoneiden kirjoittaminen aloitetaan. Se kiinnostaa ensisijaisesti kehittäjiä. Tallennusmoottori on ”tynkä”, joka ei tee mitään. Voit luoda tauluja tällä moottorilla, mutta niihin ei voi tallentaa tietoja eikä niistä voi hakea tietoja.

Et ole rajoitettu käyttämään samaa tallennusmoottoria koko palvelimelle tai skeemalle. Voit määrittää tallennusmoottorin mille tahansa taululle. Sovellus voi esimerkiksi käyttää enimmäkseen InnoDB-tauluja, joissa on yksi CSV-taulu tietojen viemiseen laskentataulukkoon ja muutama MEMORY-taulu väliaikaisia työtiloja varten.

Tallennusmoottorin valinta

MySQL:n mukana toimitetut eri tallennusmoottorit on suunniteltu erilaisia käyttötapauksia silmällä pitäen. Seuraavassa taulukossa on yleiskatsaus joihinkin MySQL:n mukana toimitettaviin tallennusmoottoreihin, ja taulukon perässä on selventäviä huomautuksia.

Taulukko 16. Tallennusmoottorit.1 Tallennuskoneiden ominaisuuksien yhteenveto

1. Toteutettu palvelimessa eikä tallennusmoottorissa.

2. Pakattuja MyISAM-tauluja tuetaan vain, kun käytetään pakattua rivimuotoa. MyISAMin kanssa pakattua riviformaattia käyttävät taulukot ovat vain luettavissa.

3. Toteutettu palvelimessa salausfunktioiden avulla.

4. Toteutettu palvelimessa salausfunktioiden avulla; MySQL 5.7:ssä ja uudemmissa versioissa tuetaan data-at-rest-salausta.

5. Tietojen salaus on mahdollista. Tuki vierasavaimille on saatavilla MySQL Cluster NDB 7.3:ssa ja uudemmissa versioissa.

6. Tuki FULLTEXT-indekseille on saatavilla MySQL 5.6:ssa ja uudemmissa versioissa.

7. Tuki geospatiaaliselle indeksoinnille on saatavilla MySQL 5.7:ssä ja uudemmissa versioissa.

8. InnoDB hyödyntää sisäisesti hash-indeksejä Adaptive Hash Index -ominaisuuttaan.

9. Katso tämän jakson myöhempi keskustelu.

Ominaisuus MyISAM Muisti InnoDB Archive NDB
B-puuindeksit Kyllä Kyllä Kyllä Ei Ei
Backup/point-in-time recovery (huomautus 1) Kyllä Kyllä Kyllä Kyllä Kyllä Kyllä
Klusteritietokantatuki Ei Ei Ei ei ei Kyllä
Klusteroidut indeksit Ei Ei Kyllä Ei Ei Ei
Pakattu data Kyllä (huomautus 2) Ei Kyllä Kyllä Kyllä Ei
Datan välimuistit Ei Ei N/A Kyllä Ei Kyllä
Salattu data Kyllä (huomautus 3) Kyllä (huomautus 3) Kyllä (huomautus 3) Kyllä (huomautus 4) Kyllä (huomautus 3) Kyllä (huomautus 3)
Vieraan avaimen tuki Ei Ei Kyllä Ei Kyllä (huomautus 5)
Täysin-tekstihakuindeksit Kyllä Ei Kyllä (huomautus 6) Ei Ei Ei
Geospatiaalinen tietotyyppituki Kyllä Ei Kyllä Kyllä Kyllä Kyllä
Geospatiaalinen indeksointi tuki Kyllä Ei Kyllä (huomautus 7) Ei Ei Ei
Hash-indeksit Ei Kyllä Ei (huomautus 8) Ei Kyllä
Välimuistitietokannat Kyllä N/Ei Kyllä Ei Kyllä
Locking granularity Table Table Row Row Row Row
MVCC No No No Yes No No No
Replikointituki (huomautus 1) Kyllä Rajoitettu (huomautus 9) Kyllä Kyllä Kyllä Kyllä Kyllä
Tallennusrajoitukset 256TB RAM 64TB None 384EB
T-puuindeksit Ei Ei Ei Ei Ei Ei Kyllä
Transaktiot Ei Ei Ei Ei Viis Kyllä

Vastaa

Sähköpostiosoitettasi ei julkaista.