SQLite3的锁机制

2020年11月2日 / 5次阅读 / Last Modified 2020年11月2日
SQLite

sqlite3有五种锁状态:unlocked、shared、reserved、pending、exclusive.

锁状态说明
未加锁-unlocked未对数据库进行访问(读写)之前
共享锁-shared对数据库进行读操作
预留锁-reserved对数据库进行写(缓存)操作
未决锁-pending等待其它共享锁关闭
排它锁-exclusive将缓存中的操作提交到数据库
SQLite3的锁机制
SQLite3的锁机制

commit要获取exclusive lock,因此在commit时,read transaction也会失败!不过,这个规则在WAL模式下,会有些不同。SQLite3默认的 journal_mode 是 delete,不是wal。

SQLite3中的database is locked错误
SQLite3中的database is locked错误

可以自己开多个sqlite shell,敲命令试试看。

使用sqlite3数据库,同一进程内的不同线程间要互斥,还要考虑不同进程间的并发失败的情况。

-- EOF --

本文链接:https://www.pynote.net/archives/2708

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top