16. fejezet Alternatív tárolómotorok

A tárolómotorok olyan MySQL komponensek, amelyek a különböző táblatípusok SQL műveleteit kezelik. A InnoDB az alapértelmezett és legáltalánosabb célú tárolómotor, és az Oracle a speciális felhasználási eseteket kivéve ezt ajánlja a táblákhoz. (A MySQL 8.0-ban a CREATE TABLE utasítás alapértelmezés szerint InnoDB táblákat hoz létre.)

A MySQL Server pluggable storage engine architektúrát használ, amely lehetővé teszi a tárolómotorok betöltését és eltávolítását a futó MySQL-kiszolgálóból.

Annak meghatározásához, hogy a kiszolgálója mely tárolómotorokat támogatja, használja a SHOW ENGINES utasítást. A Support oszlopban szereplő érték jelzi, hogy használható-e egy motor. A YES, NO vagy DEFAULT érték azt jelzi, hogy egy motor elérhető, nem elérhető, vagy elérhető és jelenleg alapértelmezett tárolómotornak van beállítva.

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

Ez a fejezet a MySQL speciális célú tárolómotorjainak használati eseteit tárgyalja. Nem foglalkozik az alapértelmezett InnoDB tárolómotorral vagy a NDB tárolómotorral, amelyekkel a 15. fejezet, Az InnoDB tárolómotor és a 23. fejezet, MySQL NDB Cluster 8.0 foglalkozik. Haladó felhasználók számára tartalmazza a bővíthető tárolómotorok architektúrájának leírását is (lásd a 16.11. szakaszt, “A MySQL tárolómotorok architektúrájának áttekintése”).

A kereskedelmi MySQL Server binárisokban kínált funkciókkal kapcsolatos információkért lásd a MySQL Editions című részt a MySQL weboldalán. Az elérhető tárolómotorok attól függhetnek, hogy a MySQL melyik kiadását használja.

A MySQL tárolómotorokkal kapcsolatban gyakran feltett kérdésekre adott válaszokért lásd az A.2. szakasz “MySQL 8.0 GYIK: Tárolómotorok”.

MySQL 8.0 támogatott tárolómotorok

  • InnoDB: A MySQL 8.0 alapértelmezett tárolómotorja. A InnoDB egy tranzakcióbiztos (ACID-kompatibilis) tárolómotor a MySQL számára, amely rendelkezik commit, rollback és crash-recovery képességekkel a felhasználói adatok védelme érdekében. A InnoDB sorszintű zárolás (durvább szemcseméretű zárolásokig történő eszkaláció nélkül) és az Oracle-stílusú konzisztens, nem zárolt olvasás növeli a többfelhasználós párhuzamosságot és a teljesítményt. InnoDB a felhasználói adatokat fürtözött indexekben tárolja, hogy csökkentse az I/O-t az elsődleges kulcsokon alapuló gyakori lekérdezéseknél. Az adatintegritás fenntartása érdekében a InnoDB támogatja a FOREIGN KEY referenciális integritási korlátozásokat is. A InnoDB-ről további információt a 15. fejezetben, Az InnoDB tárolómotor című fejezetben talál.

  • MyISAM: Ezek a táblák kis alapterületűek. A táblaszintű zárolás korlátozza a teljesítményt az írási/olvasási munkaterhelésekben, ezért gyakran csak olvasási vagy leginkább olvasási munkaterhelésekben használják webes és adattárházi konfigurációkban.

  • Memory: Minden adatot RAM-ban tárol, a gyors hozzáférés érdekében olyan környezetekben, ahol a nem kritikus adatok gyors keresésére van szükség. Ez a motor korábban HEAP motor néven volt ismert. Felhasználási esetei csökkennek; a InnoDB a pufferpool memóriaterületével általános célú és tartós módot biztosít a legtöbb vagy az összes adat memóriában tartására, a NDBCLUSTER pedig gyors kulcsérték-keresést biztosít hatalmas elosztott adathalmazok számára.

  • CSV: Táblái valójában vesszővel elválasztott értékeket tartalmazó szövegfájlok. A CSV-táblák lehetővé teszik az adatok CSV formátumban történő importálását vagy dumpolását, hogy adatokat cserélhessen olyan szkriptekkel és alkalmazásokkal, amelyek ugyanezt a formátumot olvassák és írják. Mivel a CSV táblák nem indexeltek, a normál működés során az adatokat általában InnoDB táblákban tartja, és csak az importálás vagy exportálás során használja a CSV táblákat.

  • Archive: Ezek a kompakt, nem indexált táblák nagy mennyiségű, ritkán hivatkozott történelmi, archivált vagy biztonsági ellenőrzési információk tárolására és lekérdezésére szolgálnak.

  • Blackhole: A Blackhole tárolómotor a Unix /dev/null eszközéhez hasonlóan fogad, de nem tárol adatokat. A lekérdezések mindig üres halmazt adnak vissza. Ezek a táblák olyan replikációs konfigurációkban használhatók, ahol a DML utasításokat a replikációs kiszolgálóknak küldi a rendszer, de a forráskiszolgáló nem tárolja az adatok saját példányát.

  • NDB (más néven NDBCLUSTER): Ez a fürtözött adatbázis-motor különösen alkalmas olyan alkalmazásokhoz, amelyek a lehető legmagasabb szintű üzemidőt és rendelkezésre állást igénylik.

  • Merge: Lehetővé teszi a MySQL DBA vagy fejlesztő számára, hogy azonos MyISAM táblák sorozatát logikailag csoportosítsa és egyetlen objektumként hivatkozzon rájuk. Jól használható VLDB-környezetekben, például adattárházakban.

  • Federated: Különálló MySQL-kiszolgálók összekapcsolásának lehetőségét kínálja, hogy több fizikai kiszolgálóból egyetlen logikai adatbázist hozzon létre. Nagyon jó elosztott vagy data mart környezetekhez.

  • Example: Ez a motor példaként szolgál a MySQL forráskódjában, amely szemlélteti, hogyan kell elkezdeni új tárolómotorok írását. Elsősorban a fejlesztők számára érdekes. A tárolómotor egy “csonk”, amely nem csinál semmit. Ezzel a motorral lehet táblákat létrehozni, de nem lehet adatokat tárolni bennük vagy lekérdezni belőlük.

Nem korlátozódik arra, hogy ugyanazt a tárolómotort használja egy teljes kiszolgálóhoz vagy sémához. Bármelyik táblához megadhatja a tárolómotort. Egy alkalmazás például többnyire InnoDB táblákat használhat, egy CSV táblával az adatok táblázatkezelőbe történő exportálásához és néhány MEMORY táblával az ideiglenes munkaterületekhez.

A tárolómotor kiválasztása

A MySQL-hez biztosított különböző tárolómotorokat különböző felhasználási esetekre tervezték. Az alábbi táblázat áttekintést nyújt néhány, a MySQL-hez mellékelt tárolómotorról, a táblázat után pedig tisztázó megjegyzések következnek.

16. táblázat.1 Tárolómotorok jellemzőinek összefoglalása

.

Tulajdonság MyISAM Memory InnoDB Archive NDB
B-faindexek Igen Igen Igen Nem Nem
Backup/point-in-időbeli helyreállítás (1. megjegyzés) Igen Igen Igen Igen Igen
Klaszter adatbázis támogatás Nem Nem Nem Nem Nem Nem Igen
Klaszterezett indexek Nem Nem Igen Nem Nem Nem
Tömörített adatok Igen (2. megjegyzés) Nem Igen Igen Igen Nem
Adat gyorsítótárak Nem N/A Igen Nem Igen
Titkosított adatok Igen (3. megjegyzés) Igen (3. megjegyzés) Igen (3. megjegyzés) Igen (4. megjegyzés) Igen (3. megjegyzés) Igen (3. megjegyzés)
Videgen kulcs támogatása Nem Nem Igen Nem Igen (5. megjegyzés)
Teljes-szöveges keresési indexek Igen Nem Igen (6. megjegyzés) Nem Nem
Geospatial adattípus-támogatás Igen Nem Igen Igen Igen Igen
Geospatial indexelés támogatás Igen Nem Igen (7. megjegyzés) Nem Nem
Hash-indexek Nem Igen Nem (8. megjegyzés) Nem Igen
Index cache Igen N/A Igen Nem Igen
Locking granularity Table Table Row Row Row
MVCC No No Yes No No No
Replikációs támogatás (1. megjegyzés) Igen Korlátozottan (9. megjegyzés) Igen Igen Igen Igen
Tárolási korlátok 256TB RAM 64TB Nincs 384EB
T-faindexek Nem Nem Nem Nem Nem Igen
Tranzakciók Nem Nem Igen Nem Nem Igen
Az adatszótár statisztikáinak frissítése Igen Igen Igen Igen Igen

Jegyzetek:

1. Nem a tárolómotorban, hanem a kiszolgálóban van implementálva.

2. A tömörített MyISAM táblák csak a tömörített sorformátum használata esetén támogatottak. A tömörített sorformátumot használó MyISAM-táblák csak olvashatóak.

3. A kiszolgálóban a titkosítási függvényeken keresztül valósul meg.

4. A kiszolgálóban a titkosítási függvényeken keresztül valósul meg; A MySQL 5.7 és újabb verziókban az adatok nyugalmi állapotban történő titkosítása is támogatott.

5. Az idegen kulcsok támogatása elérhető a MySQL Cluster NDB 7.3 és újabb verziókban.

6. A FULLTEXT indexek támogatása elérhető a MySQL 5.6 és újabb verziókban.

7. A térbeli indexelés támogatása elérhető a MySQL 5.7 és újabb verziókban.

8. Az InnoDB belsőleg hash indexeket használ az Adaptive Hash Index funkcióhoz.

9. A MySQL 5.6 és újabb verziókban a FULLTEXT indexek támogatása elérhető. Lásd az e szakasz későbbi tárgyalását.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.