MyRocks и сжатие данных
MyRocks поддерживает несколько алгоритмов сжатия.
Поддерживаемые алгоритмы сжатия
Поддерживаемые алгоритмы сжатия можно проверить следующим образом:
show variables like 'rocksdb%compress%'; +-------------------------------------+------------------------------------+ | Variable_name | Value | +-------------------------------------+------------------------------------+ | rocksdb_supported_compression_types | Snappy,Zlib,LZ4,LZ4HC,ZSTDNotFinal | +-------------------------------------+------------------------------------+
Другой способ проверки – посмотреть в файл #rocksdb/LOG в каталоге данных. Он должен содержать строки вида:
2019/04/12-14:08:23.869919 7f839188b540 Compression algorithms supported: 2019/04/12-14:08:23.869920 7f839188b540 kZSTDNotFinalCompression supported: 1 2019/04/12-14:08:23.869922 7f839188b540 kZSTD supported: 1 2019/04/12-14:08:23.869923 7f839188b540 kXpressCompression supported: 0 2019/04/12-14:08:23.869924 7f839188b540 kLZ4HCCompression supported: 1 2019/04/12-14:08:23.869924 7f839188b540 kLZ4Compression supported: 1 2019/04/12-14:08:23.869925 7f839188b540 kBZip2Compression supported: 0 2019/04/12-14:08:23.869926 7f839188b540 kZlibCompression supported: 1 2019/04/12-14:08:23.869927 7f839188b540 kSnappyCompression supported: 1
Настройки сжатия
Сжатие настраивается на уровне каждой Column Family. См. Семейства колонок MyRocks.
Проверка настроек сжатия
Чтобы проверить текущие настройки сжатия для семейства колонок, можно использовать запрос такого вида:
select * from information_schema.rocksdb_cf_options where option_type like '%ompression%' and cf_name='default';
Вывод будет примерно таким:
+---------+-----------------------------------------+---------------------------+ | CF_NAME | OPTION_TYPE | VALUE | +---------+-----------------------------------------+---------------------------+ | default | COMPRESSION_TYPE | kSnappyCompression | | default | COMPRESSION_PER_LEVEL | NUL | | default | COMPRESSION_OPTS | -14:32767:0 | | default | BOTTOMMOST_COMPRESSION | kDisableCompressionOption | | default | TABLE_FACTORY::VERIFY_COMPRESSION | 0 | | default | TABLE_FACTORY::ENABLE_INDEX_COMPRESSION | 1 | +---------+-----------------------------------------+---------------------------+
Текущие настройки семейства колонок будут использоваться для новых SST-файлов.
Изменение настроек сжатия
Настройки сжатия — это не динамические параметры; нельзя изменить их с помощью rocksdb_update_cf_options.
Процедура изменения настроек сжатия следующая:
- Отредактировать
my.cnfдля установки rocksdb_override_cf_options.
Пример:
rocksdb-override-cf-options='cf1={compression=kZSTD;bottommost_compression=kZSTD;}'
- Перезапустить сервер.
Данные не будут сжаты заново сразу. Однако все новые SST-файлы будут использовать новые настройки сжатия, поэтому по мере добавления/обновления данных семейство колонок постепенно начнет использовать новые параметры.
Примечание: Синтаксические ошибки
Обратите внимание, что синтаксис rocksdb-override-cf-options достаточно строгий. Любые опечатки приведут к ошибке разбора, и плагин MyRocks не будет загружен. В зависимости от вашей конфигурации сервер может все же запуститься. Если он запустился, вы можете использовать эту команду для проверки загрузки плагина:
select * from information_schema.plugins where plugin_name='ROCKSDB'
(Обратите внимание, что вам нужен плагин "ROCKSDB". Другие вспомогательные плагины, такие как "ROCKSDB_TRX", могут быть загружены.)
Ещё один способ обнаружить ошибку — проверить журнал ошибок. Если произошла ошибка при разборе опций, он будет содержать сообщения примерно такого вида:
2019-04-16 11:07:57 140283675678016 [Warning] Invalid cf config for cf1 in override options (options: cf1={compression=kLZ4Compression;bottommost_compression=kZSTDCompression;})
2019-04-16 11:07:57 140283675678016 [ERROR] RocksDB: Failed to initialize CF options map.
2019-04-16 11:07:57 140283675678016 [ERROR] Plugin 'ROCKSDB' init function returned error.
2019-04-16 11:07:57 140283675678016 [ERROR] Plugin 'ROCKSDB' registration as a STORAGE ENGINE failed.
Проверка способа сжатия данных
Запрос для проверки используемого сжатия в SST-файлах, хранящих данные для заданной таблицы (test.t1):
select SP.sst_name, SP.compression_algo from information_schema.rocksdb_sst_props SP, information_schema.rocksdb_ddl D, information_schema.rocksdb_index_file_map IFM where D.table_schema='test' and D.table_name='t1' and D.index_number= IFM.index_number and IFM.sst_name=SP.sst_name;
Пример вывода:
+------------+------------------+ | sst_name | compression_algo | +------------+------------------+ | 000028.sst | Snappy | | 000028.sst | Snappy | | 000026.sst | Snappy | | 000026.sst | Snappy | +------------+------------------+
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/myrocks-and-data-compression/