可以在数据库打开时使用 java 库更改 RocksDB 设置吗?

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)
    }
}

动态可变选项是一回事,Basic Operations wiki 提到了它们:

Some options can be changed dynamically while DB is running. For example: ...

我能找到的关于这些选项的唯一记录在 options.h here, there are multiple options tagged with "// Dynamically changeable through SetOptions() API", and disable_automatic_compactions is one of them.

所以我认为您只需要更改您的 Options 对象,然后在您的 RocksDB 实例上调用 setOptions(),除非您已经在这样做并且它不起作用?