SQLite数据存取速度慢的原因分析

写了一个小工具,使用SQLite作为本地数据结构的存取,但是在默认情况下,发现大批量插入数据的速度很慢,100条不到的记录,花了快10秒,没错不是毫秒,是秒,深感SQLite的存取速度太慢,现在很多软件都在使用SQLite作为本地数据存取,这么慢存取的效率怎么能用呢,估计是有什么参数没有设置对,网上搜索后发现如下一篇文章Increasing SQLite Performance
文章主要是通过PRAGMA对一些参数设置不同值做效率对比

方式 测试结果值 说明
TEMP_STORE DEFAULT 235 不同值区别不大
FILE 225
MEMORY 215
 
JOURNAL_MODE DELETE * 235 使用MEMORY和OFF方式速度较快
TRUNCATE 210
PERSIST 220
MEMORY 65
OFF 63
 
SYNCHRONOUS FULL 235 OFF有较大提升
NORMAL 175
OFF 43
 
LOCKING_MODE NORMAL 235 EXCLUSIVE独占有较大提升
EXCLUSIVE 155

另外 PAGE_SIZE 和 CACHE_SIZE 的只修改,对性能影响不是很明显,所以为了提升插入效率,在使用事物的基础上还可以通过修改 JOURNAL_MODE、SYNCHRONOUS和LOCKING_MODE的值

PRAGMA locking_mode=EXCLUSIVE
PRAGMA synchronous=0
PRAGMA journal_mode=MEMORY

Popularity: 1% [?]

Random Posts

Comments

Leave a Reply