后端blob 怎么显示在页面_SQLite中的内部与外部BLOB

如果有一个大型BLOB数据库,那么当你将完整的BLOB内容直接存储在数据库中时,您是否可以获得更好的读取性能,或者将每个BLOB存储在单独的文件中并在数据库中只存储相应的文件名会更快?

268b2a347c246327225fb06658a97fcd.png

为了解决这个问题,SQLite开发者在Linux工作站上运行了49个具有各种BLOB大小和SQLite页面大小的测试用例(Ubuntu大约在2011年,在快速SATA磁盘上使用Ext4文件系统)。对于每个测试用例,创建了一个包含100MB BLOB内容的数据库。BLOB的大小从10KB到1MB不等。BLOB的数量不同,以使总BLOB内容保持在约100MB。(因此,1MB大小的100个BLOB和10K大小的10000个BLOB等等。)使用SQLite 版本3.7.8(2011-09-19)。

更新:SQLite 3.19.0版(2017-05-22)的新测量结果表明,对于10KB blob的读写,SQLite 比直接磁盘I / O 快约 35%。

下面的矩阵显示了读取存储在单独文件中的BLOB所需的时间除以读取完全存储在数据库中的BLOB所需的时间。因此,对于大于1.0的数字,将BLOB直接存储在数据库中会更快。对于小于1.0的数字,将BLOB存储在单独的文件中会更快。

78272b283f4836c304c3eddd1338d57d.png

在每种情况下,都调整了页高速缓存大小,以使高速缓存大小保持在2MB左右。例如,2000页缓存用于1024字节页面,31页缓存用于65536字节页面。以随机顺序读取BLOB值。

a948cc2c9adbbd9050c4e8cbdb99684f.png

我们从上面的矩阵中推导出以下经验法则:

  • 数据库页面大小为8192或16384,可为大型BLOB I / O提供最佳性能。
  • 对于小于100KB的BLOB,当BLOB直接存储在数据库文件中时,读取速度更快。对于大于100KB的BLOB,从单独文件读取的速度更快。

当然,这个结果可能因硬件,文件系统和操作系统而异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值