摘要:
original SQL text <sqlite3_prepare_v2> >sqlite3_stmt--<sqlite3_reset>-->clear sqlite3_stmt --<sqlite3_bind_*(stmt,1,*)>--> configed sqlite3_stmt --<sq 阅读全文
摘要:
最近项目中涉及到sqlite并发读写的问题,参考一些文档并结合自己的实践,对sqlite3并发问题总结了几点: sqlite3的锁及事务类型 sqlite3总共有三种事务类型:BEGIN [DEFERRED /IMMEDIATE / EXCLUSIVE] TRANSCATION,五种锁,按锁的级别依 阅读全文
摘要:
提到锁就不得不说到死锁的问题,而SQLite也可能出现死锁。下面举个例子:连接1:BEGIN (UNLOCKED)连接1:SELECT ... (SHARED)连接1:INSERT ... (RESERVED)连接2:BEGIN (UNLOCKED)连接2:SELECT ... (SHARED)连接 阅读全文
摘要:
本篇主要从SQLite事务执行的原理中寻找如何更高效地使用它。 本篇预备知识 我们先来了解下SQLite执行事务的基本流程,状态变化过程,再分析怎么使用才更优。SQLite定义的锁的状态有如下几种: UNLOCK:最初始状态,没有任何锁在数据库上; SHARED:共享状态,允许读取数据,但是不能写入 阅读全文
摘要:
体系结构 在内部,SQLite由以下几个组件组成:内核、SQL编译器、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。所有SQL语句都被编译成易读的、可以在SQLite虚拟机中执行的程序集。SQLite支持大小高达2 TB的数据 阅读全文
摘要:
SQLite 与线程 SQLite 是线程安全的。 线程模型 SQLite 支持如下三种线程模型 单线程模型 这种模型下,所有互斥锁都被禁用,同一时间只能由一个线程访问。 多线程模型 这种模型下,一个连接在同一时间内只有一个线程使用就是安全的。 串行模型 开启所有锁,可以随意访问。 设置线程模型 S 阅读全文