The OpenNET Project / Index page

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

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

24.06.2020 21:14

После года разработки и четырёх предварительных выпусков подготовлен первый стабильный релиз новой ветки СУБД MariaDB 10.5, в рамках которой развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Поддержка новой ветки будет осуществляться 5 лет, до июня 2025 года.

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

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

  • Добавлен движок хранения S3, позволяющий размещать таблицы MariaDB в Amazon S3 или любом другом публичном или приватном облачном хранилище, поддерживающем API S3. Поддерживается размещение в S3 как обычных, так и секционированных (партицированных) таблиц. При размещении в облаке секционированных таблиц они могут напрямую использоваться в том числе с другого сервера, имеющего доступ к хранилищу S3.
  • Добавлен движок хранения ColumnStore, который хранит данные в привязке к столбцам и использует массово-параллельную распределённую архитектуру. Движок основан на наработках MySQL-хранилища InfiniDB и предназначен для организации обработки и выполнения аналитических запросов над большими массивами данных (Data Warehouse). ColumnStore хранит данные не построчно, а с разбивкой по столбцам, что позволяет оптимизировать выполнение группировки по столбцам из БД большого размера, включающей петабайты данных. Поддерживается линейное масштабирование, хранение данных в сжатом виде, вертикальное и горизонтальное партицирование, эффективное выполнение конкурирующих запросов.
  • Все исполняемые файлы, начинающиеся со слова "mysql" переименованы с использованием слова "mariadb". Старые имена сохранены в форме символических ссылок.
  • Добавлен новый тип данных INET6 для хранения адресов IPv6.
  • Выполнена работа по разделению привилегий на более мелкие составляющие. Вместо общей привилегии SUPER предложена серия из выборочных привилегий "BINLOG ADMIN", "BINLOG REPLAY", "CONNECTION ADMIN", "FEDERATED ADMIN", "READ_ONLY ADMIN", "REPLICATION MASTER ADMIN", "REPLICATION SLAVE ADMIN" и "SET USER".
  • Привилегия "REPLICATION CLIENT" переименована в "BINLOG MONITOR", а выражение "SHOW MASTER STATUS" в "SHOW BINLOG STATUS". Переименование уточняет поведение и не связано с политкорректностью, проект не отказывается от терминов master/slave и даже добавил новые привилегии "MASTER ADMIN" и "SLAVE ADMIN". При этом в SQL выражения добавлен новый ключ "REPLICA", являющийся синонимом "SLAVE".
  • Для некоторые выражений изменены привилегии, необходимые для их выполнения. "SHOW BINLOG EVENTS" теперь требует прав "BINLOG MONITOR" вместо "REPLICATION SLAVE", "SHOW SLAVE HOSTS" требует привилегии "REPLICATION MASTER ADMIN" вместо "REPLICATION SLAVE", "SHOW SLAVE STATUS" требует прав "REPLICATION SLAVE ADMIN" или "SUPER" вместо "REPLICATION CLIENT", "SHOW RELAYLOG EVENTS" требует прав "REPLICATION SLAVE ADMIN" вместо "REPLICATION SLAVE".
  • Добавлены конструкции "INSERT ... RETURNING" и "REPLACE ... RETURNING", возвращающие список вставленных/заменённых сток в форме, как если бы значения возвращались при использовании выражения SELECT (по аналогии с "DELETE ... RETURNING").
    
       INSERT INTO t2 VALUES (1,'Dog'),(2,'Lion'),(3,'Tiger'),(4,'Leopard') 
       RETURNING id2,id2+id2,id2&id2,id2||id2;
       +-----+---------+---------+----------+
       | id2 | id2+id2 | id2&id2 | id2||id2 |
       +-----+---------+---------+----------+
       |   1 |       2 |       1 |        1 |
       |   2 |       4 |       2 |        1 |
       |   3 |       6 |       3 |        1 |
       |   4 |       8 |       4 |        1 |
       +-----+---------+---------+----------+
    
  • Добавлены выражения "EXCEPT ALL" и "INTERSECT ALL" для исключения/дополнения результата определённым набором значений.
  • Появилась возможность указания комментариев внутри блоков "CREATE DATABASE" и "ALTER DATABASE".
  • Добавлены конструкции для переименования индексов и столбцов "ALTER TABLE ... RENAME INDEX / KEY" и "ALTER TABLE ... RENAME COLUMN".
  • В операции "ALTER TABLE" и "RENAME TABLE" добавлена поддержка условия "IF EXISTS" для выполнения операции только при существовании таблицы;
  • Для индексов в "CREATE TABLE" реализован атрибут "VISIBLE".
  • Добавлено выражение "CYCLE" для выявления рекурсивных циклов CTE.
  • Добавлены функции JSON_ARRAYAGG и JSON_OBJECTAGG для возвращения массива или объекта JSON со значениями указанного столбца.
  • Добавлены служебные информационные таблицы (THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS и THREAD_POOL_WAITS) для пула потоков (thread_pool).
  • Выражение ANALYZE расширено показом времени, которое тратится на проверку блока WHERE и выполнение вспомогательных операций.
  • В оптимизаторе обработки диапазонов учтены признаки "IS NOT NULL"
  • Существенно сокращён размер временных файлов, используемых при сортировке с типами VARCHAR, CHAR и BLOB.
  • В бинарный лог, используемый для организации репликации, добавлены новые поля с метаданными, включая Primary Key, Column Name, Character Set и Geometry Type. В утилите mariadb-binlog и командах "SHOW BINLOG EVENTS" и "SHOW RELAYLOG EVENTS" обеспечен показ флагов репликации.
  • Конструкция DROP TABLE теперь надёжно удаляет таблицы, остающиеся в движке хранения, даже при отсутствии файлов ".frm" или ".par".
  • Реализован аппаратно ускоренный вариант функции crc32() для CPU AMD64, ARMv8 и POWER 8.
  • Изменены некоторых настойки по умолчанию. Параметр innodb_encryption_threads увеличен до 255, а значение max_sort_length увеличено с 4 до 8.
  • Представлены многочисленные оптимизации производительности движка InnoDB.
  • В механизм синхронной multi-master репликации Galera добавлена полная поддержка GTID (Global Transaction ID), единых для всех узлов кластера идентификаторов транзакций.
  • Осуществлён переход на новую ветку библиотеки PCRE2 (Perl Compatible Regular Expressions), вместо классической серии PCRE 8.x.
  • Предложены новые версии обвязок для подключения к СУБД MariaDB и MySQL из программ на языках Python и C: MariaDB Connector/Python 1.0.0 и MariaDB Connector/C 3.1.9. Обвязка для Python соответствует Python DB API 2.0, написана на языке Си и использует для подключения к серверу библиотеку Connector/C.


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


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 21:39, 24/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Ждем ебилдов.
     
  • 1.3, Аноним (3), 22:09, 24/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –18 +/
    Как они задолбали своей марией. После установки мускуля незя нормально к нему подключиться без шаманства как раз таки из-за этих марий по умолчанию
     
     
  • 2.7, turbo2001 (ok), 00:22, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Из-за чего это? Порт по-умолчанию другой?
     
     
  • 3.31, Ilya Indigo (ok), 10:37, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Из-за чего это? Порт по-умолчанию другой?

    Мне аж стало интересно. Если в системе 2 инстанса, ну или мария с мускулулом и у обоих skip-networking то есть только по сокетам. А из клиента я подключаюсь как localhost. Сервер по портам определять имя сокета будет? По другому это работать же просто не может, но видимо именно так он и делает.

     
     
  • 4.34, turbo2001 (ok), 12:02, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Сервер по портам определять имя сокета будет?

    Не понял вопрос, но у меня есть теория. В дистре анонима при установке двух серверов настройки порта/сокета выносятся в секции конфига типа [mysqld.blabla1] и [mysqld.blabla2]. Из-за чего секция [mysqld] оказывается пустая и клиенту в любом случае надо указывать название секции или сокета, что и не нравится анониму. Но правды, похоже, я так и не узнаю.

     
     
  • 5.35, Ilya Indigo (ok), 12:40, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >> Сервер по портам определять имя сокета будет?
    > Не понял вопрос, но у меня есть теория. В дистре анонима при
    > установке двух серверов настройки порта/сокета выносятся в секции конфига типа [mysqld.blabla1]
    > и [mysqld.blabla2]. Из-за чего секция [mysqld] оказывается пустая и клиенту в
    > любом случае надо указывать название секции или сокета, что и не
    > нравится анониму. Но правды, похоже, я так и не узнаю.

    Скорее всего так.
    Просто в mysql единственное клиент-серверное ПО, которое я знаю, в котором весьма странно решили реализовать подключение через сокет, по ключевому слову localhost, возможно для совместимости с оффтопиком, где сокетов нет вообще. И не все знают что localhost и 127.0.0.1 это в mysql не одно и тоже, по крайней мере в линуксе. И возможно, все проблемы из-за этого.
    Я никогда не использовал более 1-ого инстанса и всегда использовал skip-networking и localhost не задумываясь как сервер определяет имя сокета если я его не указываю, так как он у меня всегда был 1.
    А сейчас я просто представил, что будет если у меня будут 2 инстанса и все со skip-networking с разными сокетами, а порты разные не все догадаются поставить разные, ведь я хочу по сокету работать и можно подумать порт мне вообще не нужен.
    А mysql, видимо работая через сокет именно по порту определяет к какому сокету ей подключаться. То есть порт нужен даже если не используется сеть.
    А можно же было просто в подключении по сокету вместо хоста и порта указать имя сокета, или если порт 0, то перед ним идёт имя сокета а не имя хоста (как в redis) и проблем с пониманием было бы меньше.

     
     
  • 6.38, turbo2001 (ok), 13:38, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > А mysql, видимо работая через сокет именно по порту определяет к какому сокету ей подключаться. То есть порт нужен даже если не используется сеть.

    Да нету такого. mysql (клиент, который) берет название сокета из конфига (секция в --defaults-group-suffix указывается) или напрямую (--socket).

     
     
  • 7.41, Ilya Indigo (ok), 15:22, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Да нету такого. mysql (клиент, который) берет название сокета из конфига (секция в --defaults-group-suffix указывается) или напрямую (--socket).

    https://www.php.net/manual/ru/mysqli.quickstart.connections.php
    Видимо я всё в кучу на мешал.
    Действительно можно указать сокет.

     
  • 4.42, Аноним (42), 18:46, 27/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    mysql -S /path/to/socket

    > А из клиента я подключаюсь как localhost

    нет, из клиента ты при skip-networking подключаешься к дефолтному юникс-сокету. Дефолтный - тот, который задан при компиляции.

    Это такой костыль в libmysql для макак, программирующих на пхп со словарем - если задан localhost, то сначала пробуем сконнектиться на дефолтный сокет.

     
  • 2.19, Аноним (19), 15:15, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Всё элементарно делается - https://blog.tavda.org/mysql_install
     

  • 1.4, Gemorroj (ok), 22:19, 24/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > сохраняющее обратную совместимость

    нихрена не сохраняющее. тот же json сделали абы как (это алиас к varchar, а не отдельная структура как в ваниле)

     
     
  • 2.11, Аноним (11), 04:26, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    longtext там на самом деле...
     
  • 2.25, ann (??), 22:54, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    json сам по себе обы что и абы как, его нельзя нормально сделать.
     
  • 2.36, userd (ok), 12:43, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Можно повспоминать, что в момент форка непосредственной поддержки json ещё не было.
    Так что да, "сохраняющее", но не обязательно "поддерживающее".
     
     
  • 3.37, Gemorroj (ok), 12:47, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно повспоминать, что в момент форка непосредственной поддержки json ещё не было.
    > Так что да, "сохраняющее", но не обязательно "поддерживающее".

    да, вот эти человеки пошли своим путем, запилили первыми свой недо-json и теперь хрен знает как они это фиксить будут. заявили бы, что поддерживают совместимость на уровне mysql 5.5, например, тогда бы вопросов меньше было.

    а то сейчас развелось много дилетантов, которые думают "maria - это тот же mysql, только круче/моднее/хайповее". приходится с этим вступать в конфронтацию.

     

  • 1.5, Андрей (??), 22:41, 24/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Осуществлён переход на новую ветку библиотеки PCRE2 (Perl Compatible Regular Expressions), вместо классической серии PCRE 8.x.

    PCRE2 вышел 5 лет назад. git добавил поддержку 3 года назад.

    https://git.kernel.org/pub/scm/git/git.git/commit/?id=94da9193a6eb8f1085d611c0

     
     
  • 2.16, Аноним (16), 10:26, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В Nginx так и ге завезли, хотя это все припарки. Intel Hyperscan simd regexp их всех уделывает в десятки гбит
     
     
  • 3.22, Андрей (??), 20:27, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не слышал, хотя в Debian уже почти 4 года как есть. Наверняка, так быстро только с использованием всяких AVX, а в дистрибутивах собирают для generic amd64, чтобы у всех работало и выиграша нет. Да и, может, оно сильно не совместимо по API / синтаксису.

    Смотрю в Debian при сборке nginx TLS 1.3 чуть больше недели назад включили. Да и Lua всего 5.1.

     
     
  • 4.28, Аноним (16), 09:05, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Уже и JIT редакция есть https://habr.com/ru/company/iponweb/blog/465441/
     

  • 1.6, Аноним (6), 22:57, 24/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    > Конструкция DROP TABLE теперь надёжно удаляет таблицы

    Лучшее изменение ever!

     
  • 1.8, Аноним (8), 00:29, 25/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Добавлен движок хранения ColumnStore, который хранит данные в привязке к столбцам

    Так я не понял это что clickhouse в опасности?

     
     
  • 2.9, Нитрофос (?), 01:27, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Есть немного, надо затестить.
    Когда-то колумнстор был тормознее, но тут хорошие плюшки из-за соседства с обычными таблицами.
    В сиквеле это соседство оч хорошо заходит.
     
  • 2.15, Аноним (16), 10:24, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    По функционалу нет и по производительности даже не близко. Ядро mysql имеет кучу болячек.
     

  • 1.10, Аноним (11), 04:26, 25/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    INET6 это ужасный костыль, в PostgreSQL идеальное решение с универсальными типами.
     
     
  • 2.12, Аноним (11), 07:22, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В Clickhouse подход как и в MariaDB... INET6 и INET4 отдельно типы данных....
     
  • 2.20, Аноним (19), 15:26, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я в MySQL/MariaDB использовал BLOB с преобразованием INET6_ATON, INET6_NTOA. Тогда тоже можно и IPv4 и IPv6 хранить в таком поле.
     
     
  • 3.21, Ilya Indigo (ok), 15:53, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А правильно его хранить в VARBINARY(16) NOT NULL в двоичных данных!
    P.S. VARBINARY, а не BINARY потомучто там может быть и IPv4.
     
     
  • 4.29, Аноним (16), 09:06, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Очень удобно работать с бинарным блобом...
     
     
  • 5.32, Аноним (19), 10:46, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Очень удобно работать с бинарным блобом...

    Ну хоть как-то работать. Но если реально нужно такие данные массово хранить, то стоит задуматься о лучшем хранилище, PostgreSQL, например.

     
  • 5.33, Ilya Indigo (ok), 11:41, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Очень удобно работать с бинарным блобом...

    Да! И места занимает минимум, и интерпретируется однозначно (один и тот же IPv6 можно по-разному представить в цифровой форме, а в бинарке он всегда один и тот же), и благодаря INET6_ATON() и INET6_NTOA() его очень удобно переводить из одной формы в другую при записи и чтении.

     
  • 5.43, Аноним (43), 11:59, 29/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Когда ж вы отучитесь говорить "CD-диск".
    Blob - binary large object. И binary blob получается... Binary binary large object. Маслим масло масленным маслом.
     

  • 1.13, Аноним (13), 09:57, 25/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    О! Разблокировали уже https://www.opennet.ru/opennews/art.shtml?num=53188
     
  • 1.14, BlackRot (ok), 10:20, 25/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хорошо хоть с политкорректностью не связываются
     
  • 1.17, YetAnotherOnanym (ok), 11:22, 25/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >  "REPLICATION MASTER ADMIN", "REPLICATION SLAVE ADMIN"

    Расисты!!!!11адынадын

     
     
  • 2.24, srgazh (?), 21:30, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    )))
     

  • 1.26, dev (??), 23:24, 25/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    кстати про графы в RUST lang тут хорошо написано
    https://aminb.gitbooks.io/rust-for-c/content/graphs/
     
     
  • 2.40, Аноним (40), 14:34, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Тонкий способ лишний раз пропиарить Rust.
     

  • 1.27, Ilya Indigo (ok), 03:26, 26/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Критический баг в режиме строгой группировки уже 3.5 лет всё никак не могут исправить. https://jira.mariadb.org/browse/MDEV-11588
    Досадный баг в RocksDB даже не начинали. https://jira.mariadb.org/browse/MDEV-20199
    А на JSON-операторы им и вовсе положить. https://jira.mariadb.org/browse/MDEV-13594
    Печально. :-(
     
     
  • 2.30, Аноним (16), 09:08, 26/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С момента появления MySQL 8.0, MariaDB стал не нужен.
     

  • 1.39, Аноним (39), 14:34, 26/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дохрена всего !
     

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



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

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