SQLite 的锁定机制是如何工作的?

背景信息 我正在尝试更好地理解 sqlite 中的锁定机制。 现在,我正在运行一个 Lua 脚本,试图向一个表中添加 20 万条记录。 我正在执行类似于以下的操作:

luasql = require("luasql.sqlite3")
local env = assert(luasql.sqlite3())
local conn = env:connect("widgets.db")
for i = 10000 , 250000, 1 do
        local sql = "insert into test values("..i..","..i..",'widget','test description')"
        print(sql)
        conn:execute(sql)
end
conn:close()

这个脚本似乎需要很长时间……每秒只能添加一两条记录。 没有太快。但这不是我要问的问题/问题。

问题 在运行这个脚本时,我刚刚尝试启动另一个应用程序,也试图从相同的数据库、相同的小部件表中读取。 但是它因数据库被锁定而失败了。

问题 在数据库被更新时,我是否应该能够从其他进程/应用程序中阅读它? 我一直在 StackOverflow 上搜索类似的帖子,但没有找到直接回答我问题的内容。 任何建议将不胜感激。

点赞