RocksDbDataSource
Параметры конфигурации RocksDB (читаются из config.properties).
Формат размеров: поддерживаются байты и суффиксы K, KB, KiB, M, MB, MiB, G, GB, GiB, T, TB, TiB без учёта регистра. Примеры: "32768", "32KiB", "500MB", "16GiB".
Ключи:
database.rocks.lru_cache_size(size, по умолчанию:512MiB) Объём off-heap LRU BlockCache для data/index/filter-блоков SST. Больше кэш → меньше чтений с диска. Делит память между всеми Column Family при одном экземпляреLRUCache.database.rocks.tbl_block_size(size, по умолчанию:32KiB) Размер блока таблицы (SST block size). Влияет на локальность и hit-ratio кэша. Меньше блоки → больше индексов/метаданных, больше seek’ов; больше блоки → выше пропускная, но больше лишних данных.database.rocks.partition_filters(bool, по умолчанию:true) Включает Partitioned Filters. Обычно улучшает память и скорость фильтрации на крупных базах.database.rocks.max_open_files(int, по умолчанию:-1) Лимит открытых файлов.-1означает “без лимита” (RocksDB сам управляет cache’ем дескрипторов).database.rocks.enable_pipelined_write(bool, по умолчанию:true) Pipelined Write. Снижает задержки при высокой конкуренции на запись.database.rocks.allow_concurrent(bool, по умолчанию:true) Разрешает конкурентную запись в memtable.database.rocks.max_background_jobs(int, по умолчанию:CPU * 2) Количество фоновых задач компактаций и flush. Увеличение ускоряет обработку, но ест CPU/IO.database.rocks.write_buffer_size(size, по умолчанию:64MiB) Размер одного memtable (перезаписываемого буфера). Большие буферы лучше сглатывают пики записи, но увеличивают паузы flush/compaction и потребление RAM.database.rocks.max_write_buffer(int, по умолчанию:4) Общее число memtable. Обычно 3–6. При большем значении растёт RAM-потребление и сглаживаются пики.database.rocks.min_write_buffer(int, по умолчанию:2) Сколько memtable должно накопиться перед слиянием/flush. Балансирует write amplification и память.database.rocks.slowdown_writes(int, по умолчанию:24) Порог числа файлов в L0, при котором записи начинают замедляться (setLevel0SlowdownWritesTrigger).database.rocks.stop_writes(int, по умолчанию:50) Порог числа файлов в L0, при котором записи останавливаются (setLevel0StopWritesTrigger). Используется для защиты от неуспеваемости компактаций.database.rocks.flush_interval_ms(int, по умолчанию:5) Задержка между записями данных на диск движком Чем больше время задержки, тем меньше нагружен диск, но тем больше данных может быть потеряно при неожиданном завершении процессаdatabase.rocks.max_sync_time_ms(Long, по умолчанию50) Период синхронизации memtable и sst при отключеном WAL. Определяет максимальную задержку между записью в memtable и записью на диск.Внимание: Данные за этот промежуток времени могут быть утеряны при неожиданном завершении процесса RocksDB
database.rocks.batch_size(int, по умолчанию10000) Размер блока для единовременной записи в RocksDBdatabase.rocks.write_parallelism(int, по умолчанию:10) Максимальное количество параллельных задач записи в RocksDB. Ограничивает число одновременно выполняющихсяdb.write(), чтобы избежать блокировок на уровне движка и избыточного потребления памяти. Увеличение значения повышает пропускную способность при большом числе CPU-ядер, но может ухудшить латентность и привести к конкуренции за внутренние мьютексы RocksDB.database.rocks.write_timeout_ms(long, по умолчанию:1000) Максимальное время ожидания завершения одной операции записи батча в миллисекундах. Если таймаут превышен, корутина отменяется, и событие записывается в лог. Не гарантирует немедленное прерывание системного вызова, если RocksDB не поддерживает обработкуThread.interrupt.database.rocks.max_log_size(size, по умолчанию 100MiB) Максимальный размер текущего файла логов RocksDBdatabase.max_keep_log_files(long, по умолчанию 10) Максимальное число файлов логов RocksDB
Замечания по памяти:
Общая RAM ≈ BlockCache + memtable’ы + метаданные + JVM + остальное.
Начинайте с 20–40% RAM на BlockCache и 10–30% на memtable’ы, затем калибруйте по метрикам.
Типичные метрики для контроля:
Block cache hit ratio, block cache usage/capacity.
L0 файлы, compaction pending, write stall/stop счётчики.
Properties
Functions
Инициализация RocksDB базы данных