【问题标题】:How to implement Write-Ahead Logging of SQLite in java program如何在java程序中实现SQLite的Write-Ahead Logging
【发布时间】:2011-07-11 16:54:51
【问题描述】:

我想在 j2se 程序中使用 SQLite 的Write-Ahead Logging 功能。 请帮我提供一个 java 实现示例。

【问题讨论】:

    标签: database sqlite


    【解决方案1】:

    您需要执行特定于 Sqlite 的命令(就像执行其他 SQL 查询一样):

    pragma journal_mode=wal
    

    有关使用此 pragma 的详细信息,请阅读http://www.sqlite.org/pragma.html#pragma_journal_mode

    这里有一些亮点:

    • 您的 Sqlite 库必须 >= 3.7.0。
    • 此 journal_mode 是持久性(或粘性),即如果您想使用

    【讨论】:

    • 请注意,此命令返回一个结果集——Xerial SQLite JDBC 包装器中遗漏了一个细节,如下所述:code.google.com/p/sqlite-jdbc/issues/detail?id=7
    • @sixfeetsix: 这是否意味着我必须写一个像 stmt.execute("pragma journal_mode=WAL"); 这样的语句在我的java程序中?但我没有看到这个声明的性能有任何提升。
    • @sam: 是的,像执行任何其他 sql 一样执行该语句;正如 seh 所提到的,这个 pragma 是特别的,因为它返回一个带有结果 journal_mode 的结果集,所以请确保你得到“wal”。如果您确实得到“wal”,那么我想使用 WAL 并不是您提高性能所需要做的。如果您需要这方面的帮助,我建议您创建一个新问题,通过提供足够的上下文以允许社区为您提供帮助(例如,查询需要多少时间,查询是什么),您将在其中描述什么是缓慢的,表结构是什么,典型记录的样本等)
    • @sixfeetsix:问题是 SQLite 3.7 支持“pragma journal_mode=WAL”,但是这个新版本没有兼容的 jdbc 驱动程序,并且默认模式不会通过旧驱动程序更改。
    • @sam:code.google.com/p/sqlite-jdbc/issues/detail?id=7 中的解决方法不适合您吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2021-07-24
    • 2011-06-30
    • 1970-01-01
    • 2011-10-21
    • 2011-08-19
    相关资源
    最近更新 更多