sql >> Databáze >  >> RDS >> MariaDB

Zkoumání možností úložiště pro MariaDB

MariaDB Server byl původně odvozen od MySQL, a proto zdědil svou architekturu zásuvného úložiště. Různé skladovací motory mají různé vlastnosti, pokud jde o výkon, ale také vlastnosti a možnosti. To umožňuje uživatelům vybrat si správný nástroj pro danou úlohu namísto použití stejného úložiště bez ohledu na to, jaký je účel dat, jaké jsou požadavky na ukládání dat a jak by se k datům mělo přistupovat. V tomto příspěvku na blogu bychom se rádi podívali na možnosti dostupné v MariaDB a probrali možné případy použití různých dostupných úložišť.

Co je to Storage Engine?

Nejprve se však podívejme, co je to modul úložiště? MariaDB se skládá z několika vrstev, které fungují společně. SQL je analyzován jedním z nich, poté MariaDB sáhne po datech pomocí společného API. Pod kapotou je úložiště dat, které obsahuje data a reaguje na požadavky na data, extrahuje data a zpřístupňuje je MariaDB.

Stručně řečeno, MariaDB odešle požadavek na řádek a je na úložišti, aby jej načetl a poslal zpět. MariaDB se nestará o to, jak přesně je řádek uložen nebo jak bude načten, vše je na implementaci v rámci úložiště. Úložné stroje mohou také implementovat různé funkce. Transakce jsou také zpracovávány výhradně na straně úložiště. To je důvod, proč některé z podpůrných transakcí a některé ne. S touto architekturou je možné psát různé úložné stroje věnované řešení různých problémů.

Ukládací moduly na serveru MariaDB

MariaDB se dodává se sadou úložišť. Můžete zkontrolovat, které z nich jsou k dispozici, pomocí jednoduchého příkazu:

MariaDB [(none)]> SHOW STORAGE ENGINES;

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                                                         | Transactions | XA   | Savepoints |

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                                           | NO           | NO   | NO         |

| CSV                | YES     | Stores tables as CSV files                                                                      | NO           | NO   | NO         |

| Aria               | YES     | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO           | NO   | NO         |

| SEQUENCE           | YES     | Generated tables filled with sequential values                                                  | YES          | NO   | YES        |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                                       | NO           | NO   | NO         |

| MyISAM             | YES     | Non-transactional engine with good performance and small data footprint                         | NO           | NO   | NO         |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                                              | NO           | NO   | NO         |

| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables                | YES          | YES  | YES        |

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

8 rows in set (0.000 sec)

Jak vidíte, je jich mnoho, my se podíváme na ty nejdůležitější.

InnoDB

InnoDB je očividně tím úložištěm. Transakční, vytvořený pro provoz OLTP, může poskytnout opravdu skvělý výkon. Je to výchozí engine používaný v MariaDB, a pokud nevíte, co děláte, pravděpodobně se ho budete chtít držet pro svou databázi.

MyISAM

MyISAM je jedním z „původních“ úložišť dostupných v MySQL a poté v MariaDB. Není transakční, takže není ideální pro nastavení replikace a také pro většinu ostatních prostředí. Je to stále velmi rychlý motor, zejména pokud jde o přístup k indexům, takže je vhodný pro pracovní zátěže pouze pro čtení, které nebudou ovlivněny zamykáním INSERTů a celkovou křehkostí MyISAM.

Aria

Aria je engine vytvořený pro MariaDB jako náhrada za MyISAM. Není transakční, ale je bezpečný při pádu, takže je mnohem spolehlivější. V současné době se používá pro systémové a dočasné tabulky, ale lze jej také použít místo MyISAM pro úlohy vyžadující rychlý přístup k datům pouze pro čtení.

Paměť

Toto je modul all-in-memory, který se obvykle používá pro dočasné tabulky v paměti. Není trvalý, ale může fungovat pro některé úlohy pouze pro čtení.

CSV

Toto úložiště je navrženo tak, aby ukládalo data do souboru jako hodnoty oddělené čárkami. Není to nejpoužívanější úložiště, je velmi specializované, ale přesto jej lze použít ke snadnému extrahování dat z MariaDB do jakéhokoli jiného databázového softwaru, stejně jako do Excelu nebo podobného softwaru.

Úložné moduly na serveru MariaDB Enterprise Server

MariaDB Enterprise Server přichází s několika dalšími moduly úložiště oproti tomu, co je k dispozici v komunitní edici. Pojďme se na ně také podívat.

ColumnStore

Toto je vyhrazený modul úložiště pro analytické pracovní zatížení. Díky specifickému způsobu ukládání dat je rychlejší načítání velkých objemů dat, často potřebných pro reporting. Toto může být úložný modul, který si vyberete pro pracovní zátěže OLAP (OnLine Analytical Processing).

S3

S3 engine umožňuje přístup k datům umístěným v S3. Je to netransakční engine určený k tomu, aby uživatelům poskytl možnost archivovat data v S3. Po vytvoření tabulky je k dispozici přístup pouze pro čtení.

Pavouk

Spider engine vám umožňuje propojit více databází MariaDB přes síť a vytvořit tak sdílené úložiště. Je transakční a uživatelům usnadňuje škálování rozdělením dat mezi mnoho serverů MariaDB Enterprise Server a rozdělením provozu a pracovní zátěže mezi ně.

MyRocks

MyRocks je úložiště vyvinutý na Facebooku, jehož účelem je snížit zesílení zápisu a minimalizovat opotřebení SSD disků. Je to transakční engine, který by měl docela dobře zvládat zátěž OLTP, zejména zátěže typické pro weby sociálních sítí. MyRocks přichází s docela dobrou kompresí, lepší než InnoDB, což může pomoci výrazně snížit náklady na úložiště, pokud je datová sada příliš velká na to, aby ji InnoDB správně zpracoval.

Závěr

Jak můžete vidět, MariaDB Enterprise i Community Server poskytují mnoho možností, pokud jde o způsob ukládání dat. Existují úložiště, která vynikají v pracovních zátěžích pouze pro čtení, OLAP nebo velkých souborech dat. Je na uživateli, aby si vybral ten správný. Mějte prosím na paměti, že v případě pochybností se můžete vždy držet InnoDB, který obecně poskytuje docela dobrý výkon a ve většině případů by měl být více než dostatečný. Je to pro ty okrajové případy, kdy možná budete muset hledat něco vhodnějšího.


  1. Formátování telefonního čísla v SQL Server (T-SQL)

  2. Kdy použít Common Table Expression (CTE)

  3. ERROR 1396 (HY000):Operace CREATE USER selhala pro 'jack'@'localhost'

  4. Míchání explicitních a implicitních spojení se nezdaří s Existuje záznam pro tabulku ... ale nelze na něj odkazovat z této části dotazu