The OpenNET Project / Index page

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

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

После года разработки и семи предварительных выпусков сформирован первый стабильный релиз новой ветки СУБД 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
Тип: Интересно / Программы
Ключевые слова: mysql, mariadb
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Показать все | 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 всю совместимость в libmy... весь текст скрыт [показать]
     
     
  • 2.17, Аноним, 10:57, 29/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Ой, таки не надо тащить сюда белок-истеричек От переезда сломались только дефай... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.24, Аноним, 20:17, 06/06/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Неа, АБИ таки поломано А вот апи меньше пострадало Только перекомпиляция позво... весь текст скрыт [показать]
     
  • 1.3, Аноним, 13:39, 28/05/2018 [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    Тоже самое говорили про MySQL AB а потом воздух продали Sun ... весь текст скрыт [показать]
     
  • 1.5, fi, 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, 13:28, 29/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    по кольцу только
     
  • 1.7, lucentcode, 15:13, 28/05/2018 [ответить] [смотреть все]     [к модератору]  
  • –3 +/
    Не поянтно, лучше ли сабж чем 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 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Всегда же было, и более всего печалило то что в зависимости от настроек параметр... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.21, Аноним, 04:32, 30/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Согласен бро. Сервер должен предоставлять единую среду исполнения.
     
  • 2.27, Вареник, 15:08, 12/06/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    > Превращается все в помойку фич

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

     
  • 1.13, Аноним, 09:59, 29/05/2018 [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Печально что не сделали дефолтным, интересно а в каких ещё РСУБД аналогичное пов... весь текст скрыт [показать]
     
     
  • 2.22, Аноним, 04:34, 30/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    На самом деле это плохо, когда пустая строка интерпретируется как NULL И зачем ... весь текст скрыт [показать] [показать ветку]
     
  • 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, Аноним, 19:41, 30/05/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Мы из оракла данные мигрировали в PostgreSQL с помощью мат представлений и fdw ... весь текст скрыт [показать]
     

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


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