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ämiseksiInnoDB
tukee myösFOREIGN KEY
-viittauksellisen eheyden rajoituksia. LisätietojaInnoDB
: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, jaNDBCLUSTER
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 tavallisestiInnoDB
-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 samanlaisiaMyISAM
-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
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ä |