[英]Can RocksDB settings be changed with the java library while the database is open?
使用 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)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.