sqlite性能提升

常规操作

常规连接sqlite字符串为 data source=db.db;version=3;

用上述字符串连接sqlite,然后用 System.Data.SQLite 访问数据库时发现有下述几个问题:

  1. 往表中插入一条数据时大约耗时100ms(无论表中数据是否很多),这在插入大量数据时会等待很长时间
  2. 多线程访问数据库时,会有占用锁的报错

sqlite是已文件的形式存在磁盘中,每次访问时都要打开一次文件,如果对数据进行大量的操作,那会很慢。建议以事务的形式执行同时的多个操作,尽量减少执行的次数。

性能提升

可以修改连接字符串:data source=db.db;version=3;Synchronous=Off;Journal Mode=WAL;

Synchronous=Off 关闭同步 添删改操作时不必同步等待写入磁盘,操作系统会延迟若干毫秒批量写入
Journal Mode=WAL 减少锁定 入向前日志模式,避免多线程访问时锁定数据库,写入时不必使用排它锁影响其它线程读取,而是把事务操作写入到WAL文件中,延迟合并
Cache Size=5000 加大缓存 操作系统通过文件映射MapFile把整个数据库文件映射进入内存,实际查询时会把用到数据所在附近页预先加载进入缓存,极大提升查询性能
posted @ 2022-04-12 22:45  Bridgebug  阅读(127)  评论(0编辑  收藏  举报