【发布时间】:2018-12-20 20:26:50
【问题描述】:
我有一个具有不同线程的应用程序,它们都访问一个通用的 SQLite3 数据库文件。所有线程都使用CREATE TEMP TABLE FileCacheTemp AS ... 之类的语句创建自己的连接句柄以及一些临时表。
现在,我使用BEGIN TRANSACTION 在一个线程上对临时表执行一个长时间运行的事务块,然后是多个INSERT INTO FileCacheTemp ... 语句并以COMMIT 完成。 SQLite3 会只锁定线程本地、非共享、内存中临时表的读/写,还是会为所有线程锁定整个数据库文件?
我正在使用 SQLite3 版本 3.13.0 和默认日记模式等。
【问题讨论】:
标签: database multithreading sqlite transactions locking