В rockdb есть ли способ узнать, до какого размера файл может идти на уровне? - PullRequest
2 голосов
/ 25 апреля 2019

Я работаю над rockdb, но не могу получить опцию, которая может сказать мне максимальный предел размера файла внутри уровня? И если когда-нибудь он достигнет того максимального размера, как файлы будут разделены в RocksDB?

1 Ответ

1 голос
/ 26 апреля 2019

Опция, которую вы ищете: target_file_size_base и target_file_size_multiplier.

target_file_size_base - настраивает размер файлов SST на уровне 1.

target_file_size_multiplier - настраивает размер файлов SST на следующих уровнях.

Например: если target_file_size_base имеет значение 2 МБ, а target_file_size_multiplier равно 10,

Файлы SST уровня 1 будут 2 МБ, Файлы SST уровня 2 будут 20 МБ, Файлы SST уровня 3 будут иметь размер 200 МБ и т. Д.

Вы также можете настроить количество таких файлов на каждом уровне, используя, max_bytes_for_level_base и max_bytes_for_level_multiplier.

Например: если max_bytes_for_level_base = 200 МБ и target_file_size_base = 2 МБ, то Уровень 1 будет содержать 100 файлов по 2 МБ каждый

Вы можете проверить эти параметры в файлах options.h и advanced_options.h.

если после достижения этого максимального размера, как файлы разбиваются в RocksDB

Во время сжатия / сброса файлы создаются с настроенным размером. Если количество файлов превышает настроенное число, запускается сжатие, и файлы переносятся на более высокие уровни

...