我对SQLite有以下问题。
当我在进行写操作时,sqlite会锁定整个数据库文件还是只锁定特定的表?
假设我有一些数据库,我启动begin
然后执行数百万次写操作。所以,我知道为这百万次操作创建了一个-journal
文件。问题是:数据库(非日志)文件是否会在我提交之前被锁定,或者这些事务是否在日志文件中并行继续,只有在我提交时才锁定表?
修改
如果我在50秒后开始begin
和commit
。那么当DB开始提交时,文件是在开始时还是在50秒之后被锁定?
答案 0 :(得分:0)
SQLite始终锁定整个数据库。
仅当SQLite实际需要写入文件时才会锁定文件,但如果您执行数百万次操作,则会发生这种情况,因为更改将无法适应缓存。 (DB文件在第一次写入时被锁定,并在事务结束时解锁。)