Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL срещу MariaDB

MySQL срещу MariaDB

Задната история на MySQL и MariaDB

MySQL и MariaDB споделят някаква обща история, и двете са кръстени на дъщерите на разработчика Майкъл Видениъс, My и Maria. MySQL е създаден през 1995 г. от шведска софтуерна компания, MySQL AB . Популярността му нараства през годините и се превръща в стандарт за системата за управление на релационни бази данни с отворен код. През 2008 г. Sun закупи MySQL AB (и в крайна сметка MySQL) за 1 милиард долара. Не след дълго Sun беше закупен от Oracle през април 2009 г. В този момент Oracle, конкурентна система за бази данни, стана собственик на MySQL. Това притесни първоначалните разработчици, като видяха как смятат, че бъдещето на MySQL е застрашено. Следвайки правилата на отворения код, те решиха да „разклонят“ MySQL и да създадат MariaDB. И ето го, MySQL и MariaDB споделят история!

Имаме страхотен урок за това как да инсталирате MariaDB, за да замени MySQL в WHM.

Версиониране на MySQL и 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 Добре Не Не Не Не Не Не
MariaDB-10.0 Добре Добре Добре
MariaDB-10.1 Добре Добре Добре Добре
MariaDB-10.2 Добре Добре Добре Добре Добре Добре

Сравнение на функции на MySQL и MariaDB

Още двигатели за съхранение

MariaDB съдържа стандартните машини за съхранение MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE и MERGE. Той също така включва някои от по-рядко срещаните механизми за съхранение, като например;

  • Касандра (MariaDB 10.0)
  • Spider (MariaDB 10.0+)
  • SEQUENCE (MariaDB 10.0+)
  • СВЪРЗВАНЕ (MariaDB 10.0+)
  • TokuDB (MariaDB 5.5+)
  • SphinxSE (MariaDB 5.2+)
  • OQGRAPH (не се предлага в MariaDB 5.5)
  • FederatedX (Замяна на Federated)
  • Aria (замяна на MyISAM с подобрено кеширане)
  • MyRocks (MariaDB 10.2 двигател за съхранение с подобрена компресия)
  • ColumnStore (колона ориентирана машина за съхранение, оптимизирана за съхранение на данни)

Подобрения на скоростта

MariaDB има много подобрени подобрения в сравнение с MySQL, когато сравнява функцията Optimizer:

Функция MariaDB 5.3/5.5 MariaDB 10.0 MySQL 5.5 MySQL 5.6
Оптимизации на достъпа до диск
Избутване на състоянието на индекса (ICP) ДА ДА ДА
Многообхватно четене на диска (DS-MRR) ДА ДА ДА
DS-MRR с извличане по ключ ДА ДА
Index_merge / Sort_intersection ДА ДА
Избор на диапазон на базата на разходи спрямо index_merge ДА ДА
ПОРЪЧАЙТЕ ПО … ОГРАНИЧЕНИЕ ДА ДА
Използвайте разширени (скрити) първични ключове за innodb/xtradb ДА (5.5) ДА
Присъединете се към оптимизации
Пакетен ключов достъп (BKA) ДА ДА ДА
Блокиране на хеш присъединяване ДА ДА
Ограничения на паметта, зададени от потребителя за всички буфери за присъединяване ДА ДА
Прилагане на условия за ранна външна таблица ON ДА ДА
Условията за отхвърляне на нула, тествани рано за NULL ДА ДА
Оптимизации на подзаявки
В-къв-съществува ДА ДА ДА ДА
Полусъединяване ДА ДА ДА
Материализация ДА ДА ДА
Материализация с NULL информация ДА ДА
Избор на цена за материализиране спрямо съществуващи ДА ДА ДА
Кеш на подзаявки ДА ДА
Бързо обяснение с подзаявки ДА ДА
СЪЩЕСТВУВА-към-ИН ДА
Оптимизация за производни таблици/изгледи
Забавена материализация на извлечени таблици/материализирани изгледи ДА ДА ДА
Незабавно EXPLAIN за производни таблици ДА ДА ДА
Извлечена таблица с оптимизация на ключове ДА ДА ДА
Полета на изгледи с възможност за сливане и производни таблици, използвани при оптимизации за равенство ДА ДА
Контрол на изпълнението
ОГРАНИЧЕН ПРОГЛЕД НА РЕДОВЕ rows_limit ДА (5.5) ДА
Управление на оптимизатора (превключвател на оптимизатора)
Системен контрол на всички стратегии за оптимизатор ДА ДА частичен
ОБЯСНИ подобрения
Обяснение за DELETE, INSERT, REPLACE и UPDATE Частичен ДА
ОБЯСНЯВАЙТЕ във формат JSON ДА
По-подробно и последователно EXPLAIN за подзаявки ДА ДА
Проследяване на оптимизатора
Проследяване на оптимизатора ДА

  • Паралелна репликация — ново в 10.0; протича в три части:събитията за репликация се четат от IO нишката и се поставят в опашката в регистрационния файл на релето, извличат се поотделно от SQL нишката от регистрационния файл на релето и всяко събитие се прилага върху подчинения, репликиращ промените на главния.
  • Подобренията в производителността включват по-добра InnoDB асинхронна IO подсистема в Windows.
  • Индексите за модула MEMORY(HEAP) са по-бързи. Най-новите корекции бяха приложени в MariaDB 5.5 и MySQL 5.7.
  • Кешът на сегментирани ключове за MyISAM беше добавен в MariaDB 5.2. Това е подобрило производителността в MyISAM таблици до 4 пъти.
  • От версия 10.0.13 регулируемият размер на хеш за MyISAM и Aria подобрява времето за изключване, ако използвате много MyISAM/Aria таблици със забавени ключове.
  • С ТАБЛИЦАТА НА КОНТРОЛНАТА СУМА, използвайки опцията QUICK, скоростта се подобрява.
  • Ефективността беше подобрена с преобразувания на набор от знаци и премахване на преобразувания (когато не са били необходими). Общото подобрение на скоростта е около 1-5%, но може да бъде по-бързо с големи набори от резултати.
  • Пул от нишки в MariaDB 5.1/MariaDB 5.5 позволява на MariaDB да работи с 200 000+ връзки, което води до подобряване на скоростта при използване на много връзки.
  • Добавени са подобрения на клиентската връзка от MariaDB 10.1 и MariaDB 10.2.
  • Някои подобрения на DBUG кода в MariaDB помагат на кода да работи по-бързо с компилираната, но неизползвана отстраняване на грешки.
  • Използването на механизма за съхранение на Aria с помощта на вътрешни временни таблици позволява подобрена производителност.
  • Пакетът от тестове работи по-бързо дори с разширения списък с тестове.

Нови функции и разширения

По-добро тестване

MariaDB съдържа повече тестове в тестовия пакет от MySQL. Невалидни и всички ненужни тестове са премахнати. Проблемите с тестовия пакет са отстранени.

По-малко грешки

В момента общността на MariaDB е нащрек и работи, за да коригира грешки възможно най-бързо и възможно най-задълбочено. Освен това предупрежденията на компилатора също бяха намалени в резултат на намаляването на грешките.

Отворен код

Целият изходен код за MariaDB е пуснат под GPL, LGPL или BSD. Докато MySQL има модули със затворен код в своето Enterprise Edition, MariaDB няма модули със затворен код. MariaDB включи всички функции със затворен код, съдържащи се в MySQL 5.5 Enterprise Edition в тяхната версия с отворен код. MariaDB включва тестови случаи за всички нови коригирани грешки. MySQL не предоставя тестови случаи за грешки, коригирани в MySQL 5.5. MariaDB прави публични всички бъдещи планове за развитие, включително грешки и техните корекции. MariaDB има голяма общност и тази общност от разработчици включва голямо разнообразие от сътрудници, докато всички ангажименти към MySQL изглежда са от служители на Oracle. MySQL клиентските библиотеки се пускат под GPL лиценза, който забранява свързването към приложения със затворен код. Напротив, MariaDB лицензира клиентски библиотеки под лиценз LGPL, позволявайки свързване към софтуер със затворен код.

Проблеми със съвместимостта между MariaDB и MySQL

MariaDB е проектиран да бъде добавен заместител на MySQL и е разклонение на оригиналната кодова база на MySQL. Това означава, че при преминаване от MySQL към MariaDB това е сравнително лесен процес. Просто деинсталирате MySQL и инсталирате MariaDB. Тъй като това е замяна, няма нужда да конвертирате никакви данни. Разработчиците на MariaDB извършват месечно сливане на MySQL кода, за да гарантират, че остават съвместими. Има различни несъвместимости между версиите на MySQL и MariaDB, въпреки че версиите са проектирани да бъдат съвместими със съответните им номера на версиите (например MySQL 5.1 -> MariaDB 5.1 &MySQL 5.5 -> MariaDB 5.5).

Несъвместимости между MariaDB 10.0 и MariaDB 5.5 / MySQL 5.5

  • Синтаксисът на SET OPTION е отхвърлен в MariaDB 10.0 и MySQL 5.6. Използвайте само SET.

Несъвместимости между MariaDB 10.0 и MySQL 5.6

  • Всички двоични файлове на MySQL (MySQLd, myisamchk и т.н.) дават предупреждение, ако се използва префикс на опция (като –big-table вместо –big-tables). Двоичните файлове на MariaDB работят по същия начин като повечето други Unix команди и не дават предупреждения при използване на уникални префикси.
  • GTID MariaDB не е съвместим с MySQL 5.6. Това означава, че човек не може да има MySQL 5.6 като роб за MariaDB 10.0. Въпреки това MariaDB 10.0 може да бъде подчинен на MySQL 5.6 или на всяка по-ранна версия на MySQL/MariaDB.
  • Репликация от няколко източника на MariaDB 10.0 не се поддържа в MySQL 5.6.
  • Динамичните колони MariaDB 10.0 не се поддържат от MySQL 5.6.
  • За да накара CREATE TABLE ... SELECT да работи по същия начин при репликация, базирана на израз и ред, по подразбиране се изпълнява като CREATE OR REPLACE TABLE на подчинения. Едно от предимствата на това е, че ако робът умре по средата на CREATE ... SELECT, той ще може да продължи.
  • Човек може да използва променливата slave-ddl-exec-mode, за да посочи как се репликират CREATE TABLE и DROP TABLE.
  • Вижте също подробна разбивка на разликите в системните променливи между MariaDB 10.0 и MySQL 5.6.
  • MySQL 5.6 има схема за производителност, активирана по подразбиране. От съображения за производителност MariaDB 10.0 го деактивира по подразбиране. Можете да го активирате, като стартирате MySQLd с опцията –performance-schema.
  • MariaDB 10.0 не поддържа приставката MySQL Memcached.
  • Потребители, създадени с алгоритъма за парола SHA256 на MySQL, не могат да се използват в MariaDB 10.0.
  • MariaDB 10.0 не поддържа забавена репликация – MDEV-7145.

Несъвместимости между MariaDB 10.1 и MySQL 5.7

  • MariaDB 10.1 не поддържа JSON на MySQL 5.7.
  • Криптирането InnoDB на MariaDB 10.1 се реализира по различен начин от криптирането InnoDB на MySQL 5.7.
  • MariaDB 10.1 не поддържа плъгините за анализ на пълен текст ngram и MeCab – MDEV-10267, MDEV-10268.
  • MariaDB 10.1 не поддържа множество тригери за таблица – MDEV-6112.
  • MariaDB 10.1 не поддържа CREATE TABLESPACE за InnoDB.

Несъвместимости между MariaDB 10.2 и MySQL 5.7

  • Разлики в системните променливи между MariaDB 10.2 и MySQL 5.7.
  • Разлики във функциите между MariaDB 10.2 и MySQL 5.7.
  • Много задействания на таблица бяха добавени в 10.2
  • Криптирането на MariaDB InnoDB се реализира по различен начин от криптирането InnoDB на MySQL 5.7.
  • MariaDB съхранява JSON като истински текст, а не в двоичен формат като MySQL. Причината е, че нашите JSON функции са много по-бързи от MySQL, така че не е нужно да виждаме необходимост от съхраняване на неща в двоичен формат, тъй като това добавя много сложност при манипулиране на JSON обекти.
  • MariaDB 10.2 не поддържа плъгините за анализ на пълен текст ngram и MeCab – MDEV-10267, MDEV-10268.
  • MariaDB 10.2 не поддържа MySQL X плъгин.
  • MariaDB 10.2 не поддържа общите пространства за таблици на MySQL.
  • Вижте също и несъвместимости между MariaDB 10.1 и MySQL 5.7.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете дали MySQL таблицата съществува, без да използвате избор от синтаксис?

  2. count(*) и count(column_name), каква е разликата?

  3. Използване на MySQL клиентски приложения

  4. PDO::PARAM за тип десетичен?

  5. Връщане на ResultSet