2020年11月2日 / 39次阅读 / Last Modified 2020年11月2日
SQLite
sqlite3有五种锁状态:unlocked、shared、reserved、pending、exclusive.
锁状态 | 说明 |
---|---|
未加锁-unlocked | 未对数据库进行访问(读写)之前 |
共享锁-shared | 对数据库进行读操作 |
预留锁-reserved | 对数据库进行写(缓存)操作 |
未决锁-pending | 等待其它共享锁关闭 |
排它锁-exclusive | 将缓存中的操作提交到数据库 |
commit要获取exclusive lock,因此在commit时,read transaction也会失败!不过,这个规则在WAL模式下,会有些不同。SQLite3默认的 journal_mode 是 delete,不是wal。
可以自己开多个sqlite shell,敲命令试试看。
使用sqlite3数据库,同一进程内的不同线程间要互斥,还要考虑不同进程间的并发失败的情况。
-- EOF --
本文链接:https://www.pynote.net/archives/2708
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记