Различия между вариантами MyRocks
MyRocks доступен в
- ветке MySQL Facebook (FB) (первоначально основанной на MySQL 5.6)
- MariaDB (с версии 10.2 и 10.3)
- Percona Server с версии 5.7
На этой странице перечислены различия между этими вариантами.
Эта работа находится в стадии разработки. Содержимое не является окончательным
Расположение данных RocksDB
FB и Percona хранят файлы RocksdDB в $datadir/.rocksdb. MariaDB помещает их в $datadir/#rocksdb. Это более удобно для упаковки и скриптов ОС.
Алгоритмы сжатия
- Ветвь FB не предоставляет бинарные файлы. Необходимо скомпилировать её с соответствующими библиотеками сжатия.
- В MariaDB доступные алгоритмы сжатия можно увидеть в переменной rocksdb_supported_compression_types. Начиная с MariaDB 10.7, алгоритмы могут быть установлены как плагин. В более ранних версиях набор поддерживаемых алгоритмов сжатия зависит от платформы.
- В Ubuntu 16.04 (текущая LTS) это
Snappy,Zlib,LZ4,LZ4HC. - В CentOS 7.4 это
Snappy,Zlib. - В архиве bintar это
Snappy,Zlib.
- В Ubuntu 16.04 (текущая LTS) это
- Percona Server поддерживает:
Zlib, ZSTD, LZ4 (the default), LZ4HC. Неподдерживаемые алгоритмы:Snappy, BZip2, XPress.
Информация о версии RocksDB
- Ветвь FB предоставляет переменную *status*
rocksdb_git_hash. - MariaDB предоставляет переменную *system*
@@rocksdb_git_hash. - Percona Server не предоставляет ни одного.
Версия RocksDB
- Ветка Facebook использует RocksDB 5.10.0 (номер версии можно найти в
include/rocksdb/version.h)
commit ba295cda29daee3ffe58549542804efdfd969784 Author: Andrew Kryczka <andrewkr@fb.com> Date: Fri Jan 12 11:03:55 2018 -0800
- MariaDB в настоящее время использует 5.8.0
commit 9a970c81af9807071bd690f4c808c5045866291a Author: Yi Wu <yiwu@fb.com> Date: Wed Sep 13 17:21:35 2017 -0700
- Percona Server использует 5.8.0
commit ab0542f5ec6e7c7e405267eaa2e2a603a77d570b Author: Maysam Yabandeh <myabandeh@fb.com> Date: Fri Sep 29 07:55:22 2017 -0700
Позиция бинарного лога в information_schema.rocksdb_global_info
- Ветка FB предоставляет информацию типа information_schema.rocksdb_global_info = BINLOG, NAME={FILE, POS, GTID}.
- Percona Server не предоставляет её.
- MariaDB не предоставляет её.
Одно из применений этой информации — использование вывода myrocks_hotbackup для создания нового мастера.
Детектор блокировок пробелов
- Ветвь FB имеет функцию "Детектор блокировок пробелов". Она расположена на уровне SQL. Её можно контролировать с помощью переменных
gap_lock_XXXи по умолчанию она отключена (gap-lock-raise-error=false, gap-lock-write-lock=false).
- В Percona Server проверка блокировок пробелов включена, но, похоже, нет способа её контролировать? Запросы, использующие блокировки пробелов в MyRocks, завершаются ошибкой, похожей на эту:
insert into tbl2 select * from tbl1; ERROR 1105 (HY000): Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need to either rewrite queries to use all unique key columns in WHERE equal conditions, or rewrite to single-table, single-statement transaction. Query: insert into tbl2 select * from tbl1
- MariaDB не включает детектор блокировок пробелов.
Сгенерированные столбцы
- И MariaDB, и Percona Server поддерживают сгенерированные столбцы, но ни один из них не поддерживает их для движка хранения MyRocks (попытки создания таблицы приведут к ошибке).
- Невидимые столбцы в MariaDB 10.3 поддерживаются (так как это функция уровня SQL).
rpl_skip_tx_api
Ветвь Facebook имеет функцию производительности для репликации slave, rpl_skip_tx_api. Она недоступна в MariaDB или Percona Server.
Подробности
Сравнение выше было выполнено с использованием
- FB/MySQL 5.6.35
- Percona Server 5.7.20-19-log
- MariaDB 10.2.13 (MyRocks — бета-версия)
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/differences-between-myrocks-variants/