【问题标题】:SQLite multiprocess accessSQLite 多进程访问
【发布时间】:2013-12-23 15:17:39
【问题描述】:


我认为这是一个非常简单的问题。但我自己无法解决。
我有两个应用程序。 一个人以非常快的速度写入 sqlite3 数据库 - 大约每秒 6 个事务块。 另一个有时应该从数据库中读取数据。
我应该如何设计这两个应用程序?目前,当第一个应用程序正在写入另一个应用程序时,我尝试执行的任一函数都出现错误“数据库已锁定”错误:带有 SQLITE_OPEN_READONLY 标志的 SQLite3_Open 或 SQLite3_Open_v2。
主要问题是:是一个应用程序能够执行“SELECT”,而另一个正在发送垃圾邮件“INSERT”根本
如果没有,我该怎么办?
关闭写入数据库连接,然后打开另一个数据库连接,选择,然后关闭它,然后再次打开写入连接并继续插入?换句话说,我是否必须“发明”某种机制来控制这些“读取”和“写入”应用程序的独立数据库访问?
如果是,那么应用程序“A”是否有可能强制关闭应用程序的“B”连接 谢谢!

【问题讨论】:

标签: database sqlite


【解决方案1】:

SQLite 可以很好地处理多个进程。借助 WAL 支持,您甚至可以在另一个连接写入时从一个连接读取数据库。每秒六个事务一点也不多,假设每个事务不超过 166 毫秒。

锁定通常在您单步执行语句时返回,而不是在您打开数据库时返回。是否有可能使用SQLITE_OPEN_EXCLUSIVE 打开第一个连接?这将导致另一个进程无法打开连接。如果是这种情况,请删除该标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多