Spec-Zone.ru › MariaDB

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           |
+------------+------------------+
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержание не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API