即使插入的数据较少,BLOB列是否总是使用定义的大小?

时间:2011-06-14 10:16:48

标签: sql db2 relational-database blob

我需要将图像存储在DB2 Blob字段中。平均图像大小约为200KB,但在极少数情况下会有2-4MB的图像。我不想拒绝这些图像,所以我想我会定义一个BLOB(5M)。这是可以做的,或者即使大部分未被使用,这个Blob总是消耗5MB吗?

如果很难找到平均值,那么处理Blob大小的常用方法是什么?

2 个答案:

答案 0 :(得分:3)

blob只会根据需要使用尽可能多的空间。定义一个大的最大值没有开销(把它想象成“约束”而不是物理的东西)

答案 1 :(得分:0)

我可以证实这一点。 BLOB(5M)仅向DB2指示您的blob最大大小为5MB。 db2需要对内部优化进行此操作。 请注意,分配的空间将是页面大小的倍数,因此您必须根据它优化内容。

  1. 如果超过50%的图像小于< 32k,您可能会想到使用内联LOB。请参阅https://blog.voina.org/?p=335

  2. 如果您的图片大于> 1MB,则内联无效,但您的页面尺寸应为32k。

  3. 如果您的大多数图像实际上大约是200k,那么您应该考虑对数据库使用8k页面大小,而不是为LOB分配32k块,这可能会导致磁盘空间不足。