Redo how WAL/logs are limited by the DB

Adds a patch to the latest rocksdb.
This commit is contained in:
Luke Parker
2024-03-09 01:58:58 -05:00
parent 10f5ec51ca
commit 97f433c694
6 changed files with 63 additions and 27 deletions

View File

@@ -1,6 +1,8 @@
use std::sync::Arc;
use rocksdb::{DBCompressionType, ThreadMode, SingleThreaded, Options, Transaction, TransactionDB};
use rocksdb::{
DBCompressionType, ThreadMode, SingleThreaded, LogLevel, Options, Transaction, TransactionDB,
};
use crate::*;
@@ -37,13 +39,16 @@ pub type RocksDB = Arc<TransactionDB<SingleThreaded>>;
pub fn new_rocksdb(path: &str) -> RocksDB {
let mut options = Options::default();
options.create_if_missing(true);
options.set_compression_type(DBCompressionType::Lz4);
options.set_wal_size_limit_mb(128);
// 1 GB
options.set_max_total_wal_size(1 << 30);
options.set_compression_type(DBCompressionType::Zstd);
// 128 MB
options.set_max_log_file_size(1 << 27);
options.set_recycle_log_file_num(5);
options.set_keep_log_file_num(5);
options.set_wal_compression_type(DBCompressionType::Zstd);
options.set_max_total_wal_size(128 * 1024 * 1024);
// 1 MB
options.set_log_level(LogLevel::Warn);
options.set_max_log_file_size(1024 * 1024);
options.set_recycle_log_file_num(1);
Arc::new(TransactionDB::open(&options, &Default::default(), path).unwrap())
}