MySQL versus MariaDB
Starší příběh MySQL a MariaDB
MySQL a MariaDB mají společnou historii, oba jsou pojmenovány po dcerách vývojáře Michaela Widenia, My a Maria. MySQL byla vytvořena v roce 1995 švédskou softwarovou společností MySQL AB . V průběhu let rostla na popularitě a stala se standardem pro systém správy relačních databází s otevřeným zdrojovým kódem. V roce 2008 Sun koupil MySQL AB (a nakonec MySQL) za 1 miliardu dolarů. Nedlouho poté, co v dubnu 2009 koupil Sun Oracle. V tomto okamžiku se vlastníkem MySQL stal konkurenční databázový systém Oracle. To původním vývojářům vadilo, když viděli, jak si myslí, že budoucnost MySQL je ohrožena. Podle pravidel open source se rozhodli „forkovat“ MySQL a vytvořit MariaDB. A tady to máte, MySQL a MariaDB sdílejí historii!
Máme skvělý návod, jak nainstalovat MariaDB, aby nahradila MySQL ve WHM.
Verze replikace MySQL a MariaDB
Slave↓ Master→ | MariaDB-5.5 | MariaDB-10.0 | MariaDB-10.1 | MariaDB-10.2 | MySQL-5.6 | MySQL-5.7 | MySQL-8.0 |
---|---|---|---|---|---|---|---|
MariaDB-5.5 | Dobře | Ne | Ne | Ne | Ne | Ne | Ne |
MariaDB-10.0 | Dobře | Dobře | Dobře | ||||
MariaDB-10.1 | Dobře | Dobře | Dobře | Dobře | |||
MariaDB-10.2 | Dobře | Dobře | Dobře | Dobře | Dobře | Dobře |
Porovnání funkcí MySQL a MariaDB
Více úložných modulů
MariaDB obsahuje standardní úložiště MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE a MERGE. Zahrnuje také některé z méně běžných úložišť, jako je;
- Cassandra (MariaDB 10.0)
- Spider (MariaDB 10.0+)
- SEKVENCE (MariaDB 10.0+)
- CONNECT (MariaDB 10.0+)
- TokuDB (MariaDB 5.5+)
- SphinxSE (MariaDB 5.2+)
- OQGRAPH (není k dispozici v MariaDB 5.5)
- FederatedX (náhrada za Federated)
- Aria (náhrada MyISAM s vylepšeným ukládáním do mezipaměti)
- MyRocks (úložný modul MariaDB 10.2 s vylepšenou kompresí)
- ColumnStore (úložný modul orientovaný na sloupce optimalizovaný pro datové sklady)
Vylepšení rychlosti
MariaDB má mnoho vylepšených vylepšení oproti MySQL při porovnání funkce Optimizer:
Funkce | MariaDB 5.3/5.5 | MariaDB 10.0 | MySQL 5.5 | MySQL 5.6 |
---|---|---|---|---|
Optimalizace přístupu na disk | ||||
Potlačení podmínky indexu (ICP) | ANO | ANO | – | ANO |
Čtení vícerozsahovým čištěním disku (DS-MRR) | ANO | ANO | – | ANO |
DS-MRR s načítáním na základě klíče | ANO | ANO | – | – |
Index_merge / Sort_intersection | ANO | ANO | – | – |
Výběr rozsahu podle nákladů vs. index_merge | ANO | ANO | – | – |
OBJEDNAT DO … LIMIT | – | ANO | – | ANO |
Použít rozšířené (skryté) primární klíče pro innodb/xtradb | ANO (5.5) | ANO | – | – |
Zapojte se do optimalizací | ||||
Dávkový přístup pomocí klíče (BKA) | ANO | ANO | – | ANO |
Zablokovat připojení hash | ANO | ANO | – | – |
Uživatelem nastavené limity paměti pro všechny vyrovnávací paměti pro připojení | ANO | ANO | – | – |
Použít podmínky brzké vnější tabulky ON | ANO | ANO | – | – |
Podmínky odmítnutí nuly byly včas testovány na hodnoty NULL | ANO | ANO | – | – |
Optimalizace poddotazů | ||||
In-to-exists | ANO | ANO | ANO | ANO |
Semi-join | ANO | ANO | – | ANO |
Materializace | ANO | ANO | – | ANO |
Materializace s nulovou hodnotou | ANO | ANO | – | – |
Výběr nákladů na materializaci vs. in-to-exists | ANO | ANO | – | ANO |
Mezipaměť poddotazů | ANO | ANO | – | – |
Rychlé vysvětlení pomocí poddotazů | ANO | ANO | – | – |
EXISTUJE-IN | – | ANO | – | – |
Optimalizace pro odvozené tabulky / pohledy | ||||
Zpožděná materializace odvozených tabulek / materializovaných pohledů | ANO | ANO | – | ANO |
Okamžité EXPLAIN pro odvozené tabulky | ANO | ANO | – | ANO |
Optimalizace odvozené tabulky s klíči | ANO | ANO | – | ANO |
Pole slučitelných pohledů a odvozených tabulek používaných při optimalizacích rovnosti | ANO | ANO | – | – |
Řízení provádění | ||||
LIMIT ZKOUŠENÝCH ŘÁDKŮ rows_limit | ANO (5.5) | ANO | – | – |
Ovládání optimalizátoru (přepínač optimalizátoru) | ||||
Systematická kontrola všech strategií optimalizátoru | ANO | ANO | – | částečné |
VYSVĚTLIT vylepšení | ||||
Vysvětlení pro DELETE, INSERT, REPLACE a UPDATE | – | Částečné | – | ANO |
EXPLAIN ve formátu JSON | – | – | – | ANO |
Podrobnější a konzistentnější EXPLAIN pro dílčí dotazy | ANO | ANO | – | – |
Trasování Optimalizátoru | ||||
Trasování Optimalizátoru | – | – | – | ANO |
- Paralelní replikace — novinka v 10.0; probíhá ve třech částech:události replikace jsou čteny IO vláknem a zařazeny do fronty v protokolu přenosu, jednotlivě načteny vláknem SQL z protokolu přenosu a každá událost je aplikována na podřízeném zařízení, které replikuje změny na hlavním serveru.
- Vylepšení výkonu zahrnují lepší asynchronní IO subsystém InnoDB ve Windows.
- Indexy pro modul MEMORY(HEAP) jsou rychlejší. Nejnovější opravy byly použity v MariaDB 5.5 a MySQL 5.7.
- Segmentovaná mezipaměť klíčů pro MyISAM byla přidána do MariaDB 5.2. To zvýšilo výkon v tabulkách MyISAM až 4x.
- Od verze 10.0.13 zkracuje nastavitelná velikost hash pro MyISAM a Aria dobu vypnutí, pokud používáte hodně tabulek MyISAM/Aria se zpožděnými klíči.
- Pomocí TABULE KONTROLNÍHO SOUČTU pomocí možnosti RYCHLÝ je rychlost vylepšena.
- Výkon byl zlepšen převodem znakové sady a odstraněním převodů (když nebyly potřeba). Celkové zlepšení rychlosti je asi 1–5 %, ale může být rychlejší s velkými sadami výsledků.
- Pool of Threads v MariaDB 5.1/MariaDB 5.5 umožňuje MariaDB provozovat s více než 200 000 připojeními, což vede ke zvýšení rychlosti při použití mnoha připojení.
- Vylepšení připojení klientů byla přidána od MariaDB 10.1 a MariaDB 10.2.
- Některá vylepšení kódu DBUG v MariaDB pomáhají zrychlit běh kódu s laděním zkompilovaným, ale nepoužívaným.
- Použití úložiště Aria pomocí interních dočasných tabulek umožňuje lepší výkon.
- Testovací sada běží rychleji i s rozšířeným seznamem testů.
Nové funkce a rozšíření
Lepší testování
MariaDB obsahuje více testů v testovací sadě než MySQL. Neplatné a nepotřebné testy byly odstraněny. Problémy s testovací sadou byly opraveny.
Méně chyb
V současné době je komunita MariaDB ve střehu a pracuje na co nejrychlejší a nejdůkladnější opravě chyb. Navíc byla také snížena varování kompilátoru v důsledku snížení počtu chyb.
Otevřený zdroj
Veškerý zdrojový kód pro MariaDB je vydán pod GPL, LGPL nebo BSD. Zatímco MySQL má ve své Enterprise Edition moduly s uzavřeným zdrojovým kódem, MariaDB žádné moduly s uzavřeným zdrojovým kódem nemá. MariaDB zahrnula všechny funkce uzavřeného zdroje obsažené v MySQL 5.5 Enterprise Edition v jejich open source verzi. MariaDB obsahuje testovací případy pro všechny nové opravené chyby. MySQL neposkytuje testovací případy pro chyby opravené v MySQL 5.5. MariaDB zveřejňuje všechny budoucí plány rozvoje, včetně chyb a jejich oprav. MariaDB má velkou komunitu a tato komunita vývojářů zahrnuje širokou škálu přispěvatelů, zatímco všechny závazky mafe na MySQL se zdají být od zaměstnanců Oracle. Klientské knihovny MySQL jsou vydány pod licencí GPL, která zakazuje propojení s uzavřenými aplikacemi. Naopak MariaDB licencuje klientské knihovny pod licencí LGPL umožňující propojení s uzavřeným zdrojovým softwarem.
Problémy s kompatibilitou mezi MariaDB a MySQL
MariaDB byla navržena jako náhrada za MySQL a byla rozvětvením původního kódu MySQL. To znamená, že při přechodu z MySQL na MariaDB je to relativně přímočarý proces. Jednoduše odinstalujete MySQL a nainstalujete MariaDB. Protože se jedná o výměnu typu drop-in, není třeba převádět žádná data. Vývojáři MariaDB provádějí měsíční sloučení kódu MySQL, aby zajistili, že zůstane kompatibilní. Mezi verzemi MySQL a MariaDB existují různé nekompatibility, i když jsou verze navrženy tak, aby byly kompatibilní podle příslušných čísel verzí (například MySQL 5.1 -> MariaDB 5.1 &MySQL 5.5 -> MariaDB 5.5).
Nekompatibilita mezi MariaDB 10.0 a MariaDB 5.5 / MySQL 5.5
- Syntaxe SET OPTION je v MariaDB 10.0 a MySQL 5.6 zastaralá. Použijte pouze SET.
Nekompatibilita mezi MariaDB 10.0 a MySQL 5.6
- Všechny binární soubory MySQL (MySQLd, myisamchk atd.) zobrazí varování, pokud použijete předponu volby (jako –big-table namísto –big-tables). Binární soubory MariaDB fungují stejným způsobem jako většina ostatních unixových příkazů a nedávají varování při použití jedinečných předpon.
- MariaDB GTID není kompatibilní s MySQL 5.6. To znamená, že nelze mít MySQL 5.6 jako slave pro MariaDB 10.0. MariaDB 10.0 však může být otrokem MySQL 5.6 nebo jakékoli dřívější verze MySQL/MariaDB.
- Vícezdrojová replikace MariaDB 10.0 není v MySQL 5.6 podporována.
- Dynamické sloupce MariaDB 10.0 nejsou podporovány MySQL 5.6.
- Aby CREATE TABLE … SELECT fungoval stejným způsobem v replikaci založené na příkazech a na řádcích, je ve výchozím nastavení spuštěn jako CREATE OR REPLACE TABLE na podřízeném zařízení. Jednou z výhod toho je, že pokud otrok zemře uprostřed CREATE … SELECT, bude moci pokračovat.
- Je možné použít proměnnou slave-ddl-exec-mode k určení způsobu replikace CREATE TABLE a DROP TABLE.
- Podívejte se také na podrobný rozpis rozdílů systémových proměnných mezi MariaDB 10.0 a MySQL 5.6.
- MySQL 5.6 má ve výchozím nastavení povoleno schéma výkonu. Z důvodů výkonu je MariaDB 10.0 ve výchozím nastavení zakázána. Můžete to povolit spuštěním MySQLd s volbou –performance-schema.
- MariaDB 10.0 nepodporuje plugin MySQL Memcached.
- Uživatelé vytvoření pomocí algoritmu hesla SHA256 MySQL nelze v MariaDB 10.0 použít.
- MariaDB 10.0 nepodporuje zpožděnou replikaci – MDEV-7145.
Nekompatibilita mezi MariaDB 10.1 a MySQL 5.7
- MariaDB 10.1 nepodporuje JSON MySQL 5.7.
- Šifrování InnoDB MariaDB 10.1 je implementováno jinak než šifrování InnoDB MySQL 5.7.
- MariaDB 10.1 nepodporuje zásuvné moduly fulltextového analyzátoru ngram a MeCab – MDEV-10267, MDEV-10268.
- MariaDB 10.1 nepodporuje více spouštěčů pro tabulku – MDEV-6112.
- MariaDB 10.1 nepodporuje CREATE TABLESPACE pro InnoDB.
Nekompatibilita mezi MariaDB 10.2 a MySQL 5.7
- Rozdíly systémových proměnných mezi MariaDB 10.2 a MySQL 5.7.
- Funkční rozdíly mezi MariaDB 10.2 a MySQL 5.7.
- Ve verzi 10.2 bylo přidáno více spouštěčů na tabulku
- Šifrování MariaDB InnoDB je implementováno jinak než šifrování InnoDB MySQL 5.7.
- MariaDB ukládá JSON jako skutečný text, nikoli v binárním formátu jako MySQL. Důvodem je, že naše funkce JSON jsou mnohem rychlejší než funkce MySQL, takže jsme nemuseli vidět potřebu ukládat věci v binárním formátu, protože to zvyšuje složitost při manipulaci s objekty JSON.
- MariaDB 10.2 nepodporuje zásuvné moduly fulltextového analyzátoru ngram a MeCab – MDEV-10267, MDEV-10268.
- MariaDB 10.2 nepodporuje plugin MySQL X.
- MariaDB 10.2 nepodporuje obecné tabulkové prostory MySQL.
- Viz také Nekompatibility mezi MariaDB 10.1 a MySQL 5.7.