暂无图片
Sqlite 数据库应对高并发有什么好办法?
我来答
分享
暂无图片 匿名用户
Sqlite 数据库应对高并发有什么好办法?

Sqlite 数据库应对高并发有什么好办法?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
刘贵宾

SQLite不适合多线程高并发写入,多线程高并发读取倒是不错。以下方法分享给你

SQLite极致性能提升方法:
关闭同步,Synchronous=Off,提升性能。添删改操作时不必同步等待写入磁盘,操作系统会延迟若干毫秒批量写入
设置WAL模式,Journal Mode=WAL,减少锁定。写入向前日志模式,避免多线程访问时锁定数据库,写入时不必使用排它锁影响其它线程读取,而是把事务操作写入到WAL文件中,延迟合并
加大缓存,Cache Size=5000,提升性能。操作系统通过文件映射MapFile把整个数据库文件映射进入内存,实际查询时会把用到数据所在附近页预先加载进入缓存,极大提升查询性能
插入速度 5000~16000tps,依赖CPU,HDD/SSD差别不大,主要受限于SQLite.Data.dll的Prepare
查询速度 非首次查询,缓存命中以后,索引查询基本上都是毫秒级。数据库较大则相应加大缓存,速度不变。
查记录数 单表数据超过一千万行以后,尽量不要使用Select Count,否则可能需要十几秒到半分钟的样子才能返回。

暂无图片 评论
暂无图片 有用 0
暂无图片
chengang

sqlite就一单机库,你搞这么多高并发?

启用wal模式。 可以实现读写并发。 但写写是不能并发的。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏