如何在内存中的SQLite数据库上实现行级锁定?

Man*_*ath 6 database sqlite

在内存模式下使用我的程序运行SQLite v3.7.17 并使用共享缓存(在共享缓存和内存数据库中指定).我的程序是多线程的,所有这些线程都访问相同的内存数据库.

有没有什么方法可以配置或使用我的SQLite数据库,这样,当两个线程update在同一个表(但不同的行)上运行查询时,一个不等待另一个?也就是说,如何在内存数据库中实现行级锁定?

理论上这应该是可能的,因为我的SQLite数据不在文件中(因此文件系统写入适用).

Mik*_*ll' 5

决定SQLite是否可以锁定行的不是文件系统。它是SQLite的体系结构。

即使使用预写日志记录,一次也只能有一个编写器。

编写者仅将新内容附加到WAL文件的末尾。因为作家不做任何会干扰读者行为的事情,所以作家和读者可以同时运行。但是,由于只有一个WAL文件,所以一次只能有一个写入器。

SQLite3现在具有一种表锁定,但没有行锁定。


bin*_*eat 5

Sqlite 不支持行锁功能。我刚刚看到了基于 Sqlite 的 sqlumdash,它具有行锁功能。

请查看:https : //github.com/sqlumdash/sqlumdash/

据我所知,它是由东芝开发的