Sqlite 如何实现 高性能 读写?

发布于 2022-09-04 20:28:00 字数 198 浏览 14 评论 0

现在项目需求是一个CS架构 图片管理器,需要对下载的缩略图进行缓存。
4~8线程并发的读取, 但是写入缓存时 sqlite 是锁住了整个数据库。无法进行读取操作。

目前只能用延迟写入的方式来优化,防止读取的时候写入操作。

如何才能优化到比较理想的方式?
以前缓存是直接写到硬盘的方式,一个一个的图片文件,速度方面还可以。但是量大很难管理。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自控 2022-09-11 20:28:00

SQLite 3.7.0之前不支持写的时候读.
SQLite 3.7.0开始对并发控制做了优化,
提供了WAL(write-ahead log)预写式日志模式,支持一个写和多个读并发,但同一个时刻仍然只能有一个写事务.
开启WAL的时候,官方建议选择NORMAL的同步模式:

PRAGMA synchronous = NORMAL;
PRAGMA journal_mode = WAL;
一曲琵琶半遮面シ 2022-09-11 20:28:00

可以尝试开启 WAL 选项,使得读、写可以并行,不会相互block,需要版本大于3.7

浪漫之都 2022-09-11 20:28:00

建立4-8个sqlite.db

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文