sql >> Databáze >  >> RDS >> Mysql

MySQL versus MariaDB

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.

  1. SQLite a vlastní objednávka podle

  2. Jak opravit chybu MySQL 1064

  3. Jaký je nejlepší způsob, jak postupně odstranit staré řádky z MySQL?

  4. Nejlepší nástroje GUI pro PostgreSQL