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: 11% [?]
Random Posts
December 4, 2016 | Filed Under Delphi