使用java库,任何配置更改都可以在不需要重新打开数据库的情况下生效吗?例如level0SlowdownWritesTrigger
.
更多上下文:我正在尝试在批量加载模式和常规模式之间切换。例如,在应用启动时禁用自动压缩,加载数据,然后启用自动压缩。在测试中,这使我的初始加载时间减少了 75%。
问题是更改Options
不会生效,至少在我制作它们的方式上。我不想重新打开数据库,因为这会使现有的数据流处理复杂化。
我试过的示例代码。在此示例中,我正在更改选项中的自动压缩设置。
import org.rocksdb.ColumnFamilyOptions
import org.rocksdb.DBOptions
import org.rocksdb.Options
import org.rocksdb.RocksDB
class ExampleRocksDbStore(
private val dataDirectory: String,
private val configureOptions: (options: Options) -> Unit = {},
) {
val db: RocksDB
val options: Options
init {
RocksDB.loadLibrary()
ColumnFamilyOptions().use { cfOpts ->
val dbOptions = DBOptions()
options = Options(dbOptions, cfOpts).apply {
setCreateIfMissing(true)
setCreateMissingColumnFamilies(true)
}
configureOptions(options)
db = RocksDB.open(options, dataDirectory)
}
}
fun enableAutoCompaction() {
options.setDisableAutoCompactions(false)
}
fun disableAutoCompaction() {
options.setDisableAutoCompactions(true)
}
}