legutóbbi módosítás: 2020. július 10.

Ez a fejezet a MySQL tárolómotorokról szól.

A tárolómotor egy olyan szoftvermodul, amelyet az adatbázis-kezelő rendszer az adatok létrehozására, olvasására, frissítésére használ egy adatbázisból. A MySQL-ben kétféle tárolómotor létezik: tranzakciós és nem tranzakciós.

A MySQL 5.5 és újabb verziók esetében az alapértelmezett tárolómotor az InnoDB.Az 5.5 verzió előtti MySQL alapértelmezett tárolómotorja a MyISAM volt. A megfelelő tárolómotor kiválasztása fontos stratégiai döntés, amely hatással lesz a jövőbeli fejlesztésekre. Ebben a bemutatóban a MyISAM, InnoDB, Memory ésCSV tárolómotorokat fogjuk használni. Ha Ön új a MySQL-ben, és a MySQL adatbázis-kezelő rendszert tanulmányozza, akkor ez nem jelent különösebb gondot. Ha egy termelési adatbázist tervez, akkora dolgok bonyolultabbá válnak.

Tárolómotorok listája

MySQL támogatott tárolómotorok:

  • InnoDB
  • MyISAM
  • Memory
  • CSV
  • Merge
  • Archive
  • Federated
  • Blackhole
  • Example

AzInnoDB a legszélesebb körben használt tranzakciótámogatott tárolómotor. Ez egy ACID kompatibilis tárolómotor. Támogatja a sorszintű zárolást, az összeomlás utáni helyreállítást és a többverziós párhuzamossági ellenőrzést. Ez az egyetlen olyan motor, amely idegen kulcsú referenciális integritási korlátozást biztosít. Az Oracle az InnoDB használatát ajánlja a táblákhoz, kivéve a speciális felhasználási eseteket.

A MyISAM az eredeti tárolómotor. Ez egy gyors tárolómotor.Nem támogatja a tranzakciókat. A MyISAM biztosítja a táblák kiegyenlítését. Leginkább a webes és adattárházakban használják.

A memóriatároló motor a táblákat a memóriában hozza létre. Ez a leggyorsabbmotor. Táblaszintű zárolást biztosít. Nem támogatja a tranzakciókat.A memóriatároló motor ideális ideiglenes táblák létrehozására vagy gyors keresésekre.Az adatok az adatbázis újraindításakor elvesznek.

A CSV CSV fájlokban tárolja az adatokat. Nagy rugalmasságot biztosít, mivel az ilyen formátumú adatok könnyen integrálhatók más alkalmazásokba.

Az összevonás a mögöttes MyISAM táblákon működik. Az egyesítő táblák segítségével könnyebben kezelhetők a nagy mennyiségű adatok. Logikailag egy sor azonos MyISAM táblát csoportosít, és egy objektumként hivatkozik rájuk.Jó adattárházi környezetekben.

Az archív tárolómotor nagy sebességű beszúrásra optimalizált. Az adatokat beszúráskor tömöríti. Nem támogatja a tranzakciókat. Ideális nagy mennyiségű, ritkán hivatkozott történelmi, archivált adatok tárolására és visszakeresésére.

A Blackhole tárolómotor elfogadja, de nem tárolja az adatokat. A lekérdezések mindig üres halmazt adnak vissza. A funkció használható olyan elosztott adatbázis-tervezésben, ahol az adatok automatikusan replikálódnak, de nem tárolódnak helyben. Ez a tárolómotor teljesítménytesztek vagy egyéb tesztek elvégzésére használható.

A föderált tárolómotor lehetőséget nyújt a MySQL szerverek szétválasztására, hogy több fizikai szerverből egy logikai adatbázist hozzon létre.A helyi szerveren lévő lekérdezések automatikusan végrehajtódnak a távoli (föderált) táblákon. A helyi táblákon nem tárolódnak adatok.Jó elosztott környezetekhez.

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 2. row *************************** Engine: CSV Support: YES Comment: CSV storage engineTransactions: NO XA: NO Savepoints: NO...

A SHOW ENGINES parancs megmutatja az összes elérhető motort, amelyet a kiszolgáló támogat.

A megfelelő motor kiválasztása

Nincs olyan tárolómotor, amely minden körülmények között ideális lenne. Egyesek bizonyos körülmények között a legjobban teljesítenek, míg más helyzetekben rosszabbul. Vannak kompromisszumok, amelyeket figyelembe kell venni. A biztonságosabb megoldás több erőforrást igényel; lehet, hogy lassabb, több CPU-időt és lemezterületet igényel. A MySQL nagyon rugalmas abban a tényben, hogy több különböző tárolómotort biztosít. Ezek közül néhányat, például az Archive motort, speciális helyzetekben való használatra hozták létre.

Egyes esetekben a válasz egyértelmű. Amikor bizonyos fizetési rendszerekkel van dolgunk, kötelességünk a legbiztonságosabb megoldást használni. Nem engedhetjük meg magunknak, hogy ilyen érzékeny adatokat elveszítsünk. Az InnoDB a megfelelő megoldás. Ha teljes szöveges keresést akarunk, akkor választhatjuk a MyISAM-ot vagy az InnoDB-t.. Csak az InnoDB támogatja az idegen kulcsú referenciális integritási korlátozást, és ha ezt a korlátozást tervezzük használni, akkor a választás egyértelmű.

Tárolómotorok megadása és módosítása

A tárolómotor megadása a tábla létrehozásakor történik.

mysql> CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), -> Cost INTEGER) ENGINE='MyISAM';

A ENGINE kulcsszó megadja az adott táblához használt tárolómotort.

Ha nem adjuk meg kifejezetten a tárolómotort, akkor az alapértelmezett tárolómotort használjuk. A MySQL 5.5 előtt az alapértelmezett tárolómotor a MyISAM volt. A MySQL 5.5 és újabb verziók esetében az alapértelmezett tárolómotor az InnoDB.

Egy másik tárolómotorra való áttérés lehetséges. Vegye figyelembe, hogy a nagy táblák migrálása hosszú időt vehet igénybe. A táblák migrálásakor is problémákba ütközhetünk. Előfordulhat, hogy egyes funkciók nem támogatottak mindkét táblában.

mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars';+--------+| ENGINE |+--------+| InnoDB |+--------+1 row in set (0,05 sec)

Ez az SQL utasítás kideríti a mydb adatbázisban lévő Cars táblához használt tárolómotort. Használhatjuk a SELECT CREATE TABLE Cars SQL utasítást is. A information_schema egy olyan tábla, amely a tábláinkkal kapcsolatos technikai információkat tárolja.

mysql> ALTER TABLE Cars ENGINE='MyISAM';

Ez az SQL utasítás a Cars tábla tárolómotorját MyISAM-ra változtatja.

mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars';+--------+| ENGINE |+--------+| MyISAM |+--------+1 row in set (0,00 sec)

Most a tábla tárolómotorja a MyISAM.

A MySQL oktatóanyagnak ebben a részében a tárolómotorokkal foglalkoztunk.

Articles

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

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