The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Стабильный выпуск СУБД MariaDB 10.3

28.05.2018 11:42

После года разработки и семи предварительных выпусков сформирован первый стабильный релиз новой ветки СУБД MariaDB 10.3, в рамках которой развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Развитие MariaDB курирует независимая организация MariaDB Foundation в соответствии с полностью открытым и прозрачным процессом разработки, не зависящим от отдельных вендоров. MariaDB поставляется вместо MySQL во многих дистрибутивах Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) и внедрён в таких крупных проектах, как Wikipedia, Google Cloud SQL и Nimbuzz.

Ключевые улучшения MariaDB 10.3:

  • Добавлена поддержка версионированных таблиц, в которых не только хранится актуальный срез данных, но сохраняется информация и о всех ранее внесённых изменениях. Версионированные таблицы могут применяться для аудита изменений, разбора инцидентов, анализа различий содержимого в разное время или отката состояния на определённый момент в прошлом. Версионирование включается при помощи выражения "CREATE TABLE ... WITH SYSTEM VERSIONING" или "ALTER TABLE ... ADD SYSTEM VERSIONING";
  • Реализована независимая от движков хранения система сжатия содержимого столбцов. Для включения сжатия для столбца при его определении следует указать атрибут COMPRESSED. Для управления параметрами сжатия и оценки состояния предложены переменные column_compression_threshold, column_compression_zlib_level, column_compression_zlib_strategy, column_compression_zlib_wrap, column_compressions и column_decompressions;
  • Добавлена поддержка конструкторов табличных значений (table value constructor) для формирования содержимого простых таблиц. Например, можно использовать конструкции вида "WITH t (a,c) AS (SELECT * FROM VALUES (1,'xx'), (5,'yyy'), (1,'zzz'))...";
  • Реализована поддержка невидимых столбцов, которые не выводятся в "SELECT *" и обрабатываются только в случае явного указания их имени. Определения невидимых столбцов осуществляется при помощи атрибута INVISIBLE в "CREATE TABLE" или "ALTER TABLE";
  • Возможность создания агрегатных хранимых функций. При помощи выражения "CREATE AGGREGATE FUNCTION" теперь можно создавать свои агрегатные функции, обрабатывающие набор строк по аналогии с SUM, AVG и т.п.
  • В основной состав сервера включен плагин Semi-sync с реализацией псевдосинхронного механимзма репликации;
  • Добавлена поддержка последовательностей (sequence) и связанных с ними выражений CREATE SEQUENCE, SHOW CREATE SEQUENCE, ALTER SEQUENCE, DROP SEQUENCE, NEXT VALUE FOR, PREVIOUS VALUE FOR и SETVAL(). Последовательности могут указываться в секции DEFAULT в качестве значения по умолчанию;
  • Добавлена поддержка операций INTERSECT и EXCEPT, дополняющих функциональность выражения UNION (предполагают применение операции DISTINCT);
  • Добавлены опций WAIT и NOWAIT, которые можно использовать для управления поведением при наличии блокировок в момент выполнения операций (SELECT, ALTER, DROP и т.п.). При указании NOWAIT управление будет возвращено сразу с выводом ошибки, если выставлена блокировка, а через WAIT можно установить желаемое время таймаута;
  • В InnoDB добавлен режим мгновенного добавления столбцов, не требующий полного перестроения таблицы (вместо перестроения в таблицу добавляется специальная скрытая запись и обновляется словарь). Новый режим демонстрирует уровень сложности O(log n) вместо O(n·m) и позволяет почти мгновенно выполнять операции "ALTER ... ADD COLUMN" на очень больших таблицах, добавление столбца в которых могло раньше занимать часы;
  • Существенно улучшена совместимость с СУБД Oracle в режиме "sql_mode=ORACLE", в котором теперь поддерживается подмножество языка PL/SQL вместо традиционного для MariaDB синтаксиса хранимых процедур. В предоставляемом MariaDB диалекте языка хранимых процедур SQL/PL появилась поддержка пакетов в стиле Oracle. Реализованы выражения CREATE PACKAGE, CREATE PACKAGE BODY, DROP PACKAGE, DROP PACKAGE BODY, SHOW CREATE PACKAGE и SHOW CREATE PACKAGE BODY;


  • Оптимизация через преобразование предикатов "[NOT] IN" с длинным списком значений в эквивалентные подзапросы. Т.е. выражения вида "WHERE IN (value_list)" теперь преобразуются в "WITH t(col1, ...) AS (SELECT * FROM VALUES value_list)" и "WHERE ... IN (SELECT * FROM t)";
  • Возможность применения выражений TYPE OF и ROW TYPE OF для переменных хранимых процедур и локальных переменных. Например, "DECLARE row1 ROW TYPE OF table1; DECLARE row2 TYPE OF row1";
  • Возможность применения операции LIMIT внутри функции GROUP_CONCAT(), например, 'GROUP_CONCAT(CONCAT_WS(":",date,cnt) ORDER BY cnt DESC LIMIT 1)';
  • Добавлены новые оконные функции (window-функции или аналитические функции), позволяющие для каждой строки запроса выполнить вычисления, используя строки, связанные с текущей строкой: PERCENTILE_CONT, PERCENTILE_DISC и MEDIAN;
  • Добавлена поддержка выражения "FOR ... END FOR" для создания внутри хранимых процедур циклов с стиле СУБД Oracle;
  • Для распределённых XA-транзакций добавлена поддержка команды "XA RECOVER FORMAT='SQL'", при котором данные выводятся не в бинарном, а в читаемом виде;
  • Добавлена совместимая с СУБД Oracle функция выделения подстрок SUBSTR();
  • Добавлена новая функция CHR(), возвращающая строку для заданного числового кода символа;
  • Добавлен вариант функции DATE_FORMAT с тремя аргументами (date, format, locale);
  • Для переменных в хранимых процедурах добавлен новый тип данных ROW;
  • Возможность определения курсоров с параметрами ("DECLARE cursor_name [cursor_formal_parameter[,...]] CURSOR FOR select_statement");
  • В операциях UPDATE, охватывающих несколько таблиц, теперь допустимо использование выражений ORDER BY и LIMIT;
  • В операции UPDATE появилась возможность указания одной таблицы и в качестве источника данных и как целевой таблицы (возможность обновления таблицы, которая фигурирует в условиях WHERE). Например, "UPDATE t1 SET c1=c1+1 WHERE c2=(SELECT MAX(c2) FROM t1);";
  • В выражении DELETE обеспечена поддержка рекурсивных подзапросов (возможность удаления из таблицы, которая указана в подзапросе). Например, "DELETE FROM t1 WHERE c1 IN (SELECT b.c1 FROM t1 b WHERE b.c2=0)";
  • Добавлен новый SQL-режим одновременного назначения (sql_mode SIMULTANEOUS_ASSIGNMENT), при котором все присвоения в секции SET в выражении UPDATE выполняются одновременно, без последовательного прохода по значениям слева на право. Также добавлен режим sql_mode EMPTY_STRING_IS_NULL, при котором пустые строки интерпретируются как значения NULL;
  • В выражение "ALTER TABLE" добавлены две новые опции: "ALGORITHM=INSTANT" для исключения выполнения любых операций, которые модифицируют файлы с данными, и "ALGORITHM=NOCOPY" для исключения операций, которые могут привести к перестроению кластерного индекса;
  • В сервер добавлена поддержка протокола PROXY;
  • Во встраиваемой серверной библиотеке добавлена поддержка SSL при соединении с внешними серверами;
  • Добавлены переменные log_disabled_statements и log_slow_disabled_statements, позволяющие исключить попадание определённых выражений в общий лог и лог медленных запросов;
  • Временные файлы, создаваемые в процессе слияния с сортировкой и выполнения операции row log, теперь сохраняются в зашифрованном виде, если переменная innodb_encrypt_log выставлена в значение 1, независимо от того зашифрована или нет сама таблица;
  • В разряд стабильных переведён движок хранения Spider с системой шардинга, позволяющей разносить большие таблицы на несколько серверов. С точки зрения формирования запросов такие таблицы не отличаются от обычных локальных таблиц, но фактически при использовании Spider разные порции данных, составляющих одну таблицу, хранятся на разных серверах. Для обеспечения высокой доступности таблиц, распределённых по серверам при помощи Spider, может применяться репликация. В разнесённых на несколько серверов таблицах допускается выполнение XA-транзакций. В новой версии добавлена поддержка прямых операций слияния (JOINS и GROUP BY), обновления, удаления и агрегирования. В базирующемся на Spider движке Partition появилась поддержка полнотекстового поиска, чтения по нескольким диапазонам (Multi-range) и обработчиков HANDLER;
  • В разряд стабильных переведён движок хранения MyRocks, разработанный компанией Facebook на базе системы хранения RocksDB, оптимизированной для Flash-накопителей. В хранилище MyRocks применяются страницы данных плавающего размера, позволяющие избежать выравнивания по фиксированной границе блока, и модель хранения данных в форме лога (Log Structured Merge Trees), допускающая только дополнение (чистка производится сборщиком мусора). В процессе выполнения запросов в несколько раз сокращается число операций случайного чтения/записи, что приводит к увеличению производительности по сравнению с InnoDB на 20-30% на SSD и до 6 раз на НЖМД при нагрузке с большим числом операций случайной записи. Кроме того, MyRocks позволяет на 50% сократить размер БД по сравнению со сжатым хранилищем InnoDB и в 3.5 раза по сравнению с InnoDB без применения сжатия. Из недостатков MyRocks можно отметить отсутствие поддержки внешних ключей и полнотекстовых индексов.


  1. Главная ссылка к новости (https://mariadb.org/mariadb-10...)
  2. OpenNews: Стабильный выпуск СУБД MariaDB 10.2
  3. OpenNews: Компания MariaDB представила прокси-сервер MaxScale 2.0
  4. OpenNews: Стабильный выпуск СУБД MariaDB 10.1
  5. OpenNews: Выпуск распределённой СУБД TiDB 2.0
  6. OpenNews: Стабильный релиз СУБД MySQL 8.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48670-mysql
Ключевые слова: mysql, mariadb
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (27) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Диносуслик (?), 12:20, 28/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Молодцы! Не то, что эти Оракулы жлобы
     
     
  • 2.4, Аноним (-), 13:40, 28/05/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    да да. Это те которые подряжали сообщество отжать назад MySQL (tm) под предлогом что им плохо распоряжаются?
     
     
  • 3.26, Вареник (?), 15:04, 12/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну а что остается, если Oracle не умеет делать базы данных.
     

  • 1.2, Аноним (-), 12:56, 28/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Вот про обратную совместимость не надо тут, ещё в 10.2 всю совместимость в libmysqlclient разломали, приходится на 10.1 сидеть https://lists.archlinux.org/pipermail/arch-general/2017-September/044255.html
     
     
  • 2.17, Аноним (-), 10:57, 29/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ой, таки не надо тащить сюда белок-истеричек. От переезда сломались только дефайны с версиями.
     
     
  • 3.24, Аноним (-), 20:17, 06/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Неа, АБИ таки поломано. А вот апи меньше пострадало. Только перекомпиляция позволяет использовать приложение на >= 10.2, что не всегда возможно. К тому же, всем нужной libmysqlclient.so в 10.2 выпуске уже нету.
     

  • 1.3, Аноним (-), 13:39, 28/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Развитие MariaDB курирует независимая организация MariaDB Foundation в соответствии с полностью открытым и прозрачным процессом разработки

    Тоже самое говорили про MySQL AB. а потом воздух продали Sun.

     
  • 1.5, fi (ok), 14:23, 28/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    PL/SQL - да, это прорыв!!!
     
  • 1.6, Аноним (-), 14:30, 28/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Оно уже умеет зеркалиться в мастер-мастер?
     
     
  • 2.15, Аноним (-), 10:02, 29/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Оно уже умеет зеркалиться в мастер-мастер?

    Так никто из открыто-свободных не умеет :) Да и с закрытыми не всё так просто...

     
  • 2.18, MPEG LA (ok), 13:28, 29/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    по кольцу только
     

  • 1.7, lucentcode (ok), 15:13, 28/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Не поянтно, лучше ли сабж чем Mysql 8? Новые плюшки завезли, но они отличаются от тех, что у Mysql 8.
     
     
  • 2.8, Аноним (-), 16:22, 28/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В Mysql 8 только InnoDB который как не лечи все же плох.
     
  • 2.9, Аноним (-), 23:06, 28/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    https://bugs.mysql.com/bug.php?id=90890
     
  • 2.11, Аноним (-), 07:29, 29/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Смотря какие плюшки нужны именно тебе
     
  • 2.12, Аноним (-), 08:54, 29/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Согласен. К чему это недоразумение когда есть нормальный MySQL.
     

  • 1.10, Аноним (-), 04:24, 29/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Превращается все в помойку фич
     
     
  • 2.14, Аноним (-), 10:00, 29/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Всегда же было, и более всего печалило то что в зависимости от настроек параметров сервера, поведение отличается.
    Вполне может выйти так что 2 приложения на одном сервере не взлетят.
     
     
  • 3.21, Аноним (-), 04:32, 30/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен бро. Сервер должен предоставлять единую среду исполнения.
     
  • 2.27, Вареник (?), 15:08, 12/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Превращается все в помойку фич

    MySQL всегда такой была - набор заплаток, работающих только на определенном сочетании опций (движок такой-то, хранение такое-то, кластер выключен или включен, с учетом фазы Луны).

     

  • 1.13, Аноним (-), 09:59, 29/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > "Добавлен новый SQL-режим одновременного назначения (sql_mode SIMULTANEOUS_ASSIGNMENT), при котором все присвоения в секции SET в выражении UPDATE выполняются одновременно, без последовательного прохода по значениям слева на право. Также добавлен режим sql_mode EMPTY_STRING_IS_NULL, при котором пустые строки интерпретируются как значения NULL;"

    Печально что не сделали дефолтным, интересно а в каких ещё РСУБД аналогичное поведение?

     
     
  • 2.22, Аноним (-), 04:34, 30/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле это плохо, когда пустая строка интерпретируется как NULL. И зачем это недоразумение притащили сюда. Поэтому никаких Маш, только mysql.
     

  • 1.16, Аноним (-), 10:42, 29/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    "ALTER ... ADD COLUMN" сделали, не прошло и 20 лет! таким макаром они и VACUUM сделают!
     
     
  • 2.19, Linux (??), 13:36, 29/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    VACUUM уже сть патчами от фейсбука к innodb defrag
     

  • 1.20, IvAnZ (?), 16:35, 29/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Теперь с Oracle сюда проще мигрировать чем на Postgres?
     
     
  • 2.28, Вареник (?), 15:10, 12/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Теперь с Oracle сюда проще мигрировать чем на Postgres?

    Удачи в этом ))

     

  • 1.23, Аноним (23), 19:41, 30/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мы из оракла данные мигрировали в PostgreSQL с помощью мат представлений и fdw. Основной вопрос состоит в том что легаси приложения как правило писали с логикой в базе, а логику просто так взять и перенести не получится. В итоге логику переписали в сервере приложений, но это того стоило и все довольны, что само по себе не плохой результат.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру