Я работаю над rockdb, но не могу получить параметр, который может указать мне максимальный предел размера файла внутри уровня? И если однажды он достигнет этого максимального размера, как файлы будут разделены в RocksDB?
В rockdb Есть ли способ узнать, до какого размера файл может идти на уровне?
Ответы (1)
Вариант, который вы ищете, это 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
Во время сжатия/сброса файлы создаются с настроенным размером. Если файлов больше, чем настроенное число, запускается уплотнение, и файлы перемещаются на более высокие уровни.