Sqlite:锁定数据库文件以进行写操作

时间:2015-03-18 08:25:18

标签: sqlite

我对SQLite有以下问题。

  1. 当我在进行写操作时,sqlite会锁定整个数据库文件还是只锁定特定的表?

  2. 假设我有一些数据库,我启动begin然后执行数百万次写操作。所以,我知道为这百万次操作创建了一个-journal文件。问题是:数据库(非日志)文件是否会在我提交之前被锁定,或者这些事务是否在日志文件中并行继续,只有在我提交时才锁定表?

  3. 修改

    如果我在50秒后开始begincommit。那么当DB开始提交时,文件是在开始时还是在50秒之后被锁定?

1 个答案:

答案 0 :(得分:0)

SQLite始终锁定整个数据库。

仅当SQLite实际需要写入文件时才会锁定文件,但如果您执行数百万次操作,则会发生这种情况,因为更改将无法适应缓存。 (DB文件在第一次写入时被锁定,并在事务结束时解锁。)