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把整个数据库文件映射进入内存,实际查询时会把用到数据所在附近页预先加载进入缓存,极大提升查询性能
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bridge_go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值