使用 PRAGMA 命令提高 kotlin SQLite 的性能

Increase performance of kotlin SQLite using PRAGMA commands

我尝试使用 jetbrains.exposed 库在 Kotlin 中创建并连接到 SQLite 数据库。

import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.SchemaUtils
import org.jetbrains.exposed.sql.transactions.TransactionManager
import org.jetbrains.exposed.sql.transactions.transaction

private fun provideSqliteDatabase(databaseConfig: DatabaseConfig?): Database {
    val path = databaseConfig?.url ?: "./"
    File(path).mkdirs()

    logger.info("SQLite Database path: $path/database.db")
    return Database.connect("jdbc:sqlite:$path/database.db", "org.sqlite.JDBC")
        .apply {
            TransactionManager.manager.defaultIsolationLevel =
                Connection.TRANSACTION_READ_UNCOMMITTED
            provideTables()

        }
}

我尝试使用一些 PRAGMA SQLite 命令来提高我的数据库的性能。 如何设置这些配置,例如 set JOURNAL_MODE:

PRAGMA JOURNAL_MODE='OFF';

要点:我 运行 我的程序在 Ubuntu 20.04.

我相信在这种情况下你必须写成简单的 SQL:

transaction {
    exec("PRAGMA JOURNAL_MODE='OFF'", explicitStatementType = StatementType.EXEC)
}

您可以尝试将您的连接 url 扩展到 journal_mode=OFF。 如果你检查 SQLite driver tests 你会发现它会自动解析和执行这些参数。