现在项目需求是一个CS架构 图片管理器,需要对下载的缩略图进行缓存。
4~8线程并发的读取, 但是写入缓存时 sqlite 是锁住了整个数据库。无法进行读取操作。
目前只能用延迟写入的方式来优化,防止读取的时候写入操作。
如何才能优化到比较理想的方式?
以前缓存是直接写到硬盘的方式,一个一个的图片文件,速度方面还可以。但是量大很难管理。
现在项目需求是一个CS架构 图片管理器,需要对下载的缩略图进行缓存。
4~8线程并发的读取, 但是写入缓存时 sqlite 是锁住了整个数据库。无法进行读取操作。
目前只能用延迟写入的方式来优化,防止读取的时候写入操作。
如何才能优化到比较理想的方式?
以前缓存是直接写到硬盘的方式,一个一个的图片文件,速度方面还可以。但是量大很难管理。
5 回答3.3k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
3 回答2.3k 阅读
1 回答2.3k 阅读
SQLite 3.7.0之前不支持写的时候读.
SQLite 3.7.0开始对并发控制做了优化,
提供了WAL(write-ahead log)预写式日志模式,支持一个写和多个读并发,但同一个时刻仍然只能有一个写事务.
开启WAL的时候,官方建议选择NORMAL的同步模式: