LOB表空间

大型对象(LOB)表空间 (也称为LOB或辅助表空间)用于保存LOB数据,例如图形、视频或大型文本字符串。 如果您的数据无法完全显示在数据页面中,您可以将一个或多个列定义为LOB列。

LOB对象的功能远不止存储大型对象数据。 如果您将LOB列定义为不常访问的数据,则对基础表中的剩余数据进行表空间扫描的速度可能会更快,因为扫描通常包含的页面更少。

LOB表空间始终与包含逻辑LOB列值的表空间直接相关。 在此上下文中,包含LOB列的表空间是基本表空间。 LOB数据在逻辑上与基础表相关联,但实际存储在位于LOB表空间中的辅助表中。 大型对象表空间中只能存在一个辅助表。 一个LOB值可能需要好几页纸。 但是,每页只存储一个LOB值。

对于表中存在的每个LOB列,您必须为其分配一个LOB表空间。 例如,如果您的表格中既有用于简历也有用于照片的 LOB 列,那么您需要为每个列准备一个 LOB 表格空间(和一个辅助表格)。 如果基础表空间是一个分区表空间,则每个分区中的每个 LOB 都需要一个 LOB 表空间。

更改开始Db2 可以为您隐式创建所需的LOB表空间和相关对象。

Db2 有时会隐式创建LOB表空间、辅助表以及表或分区中每个LOB列的辅助表索引。 更多信息,请参阅 LOB表空间隐式创建

如果 Db2 没有隐式创建LOB表空间、辅助表和辅助表索引,则必须通过发出CREATE TABLESPACE、CREATE AUXILIARY TABLE和CREATE INDEX语句来创建这些对象。

更改结束

如果基础表空间不是分区表空间,则每个LOB表空间与基础表中的一个LOB列相关联。 如果基础表空间是一个分区表空间,则基础表空间的每个分区都与一个LOB表空间相关联。 因此,如果基础表空间是分区表空间,则可以为每个LOB列存储更多的LOB数据。

下表显示了在每种不同类型的基础表空间中,LOB列可以存储的LOB数据的大致数量。

表 1. LOB列的基本表空间类型和LOB数据的大致最大值
基本桌面空间类型 每列的最大(近似)LOB数据
已分段 16 TB
分区,最多可容纳64个NUMPARTS 1000 TB
分区,DSSIZE,NUMPARTS最多254 4000 TB
分区大小为DSSIZE,NUMPARTS最多为4096 64000 TB

当一行数据无法放入32 KB页面时,请考虑将长字符串列定义为LOB列。 请参考以下指南,确定LOB专栏是否适合您:

  • 如果满足以下条件,将长字符串列定义为LOB列可能会更好:
    • 桌面空间扫描通常在桌面上运行。
    • 长字符串列不常被引用。
    • 从基础表中移除长字符串列可能会提高表空间扫描的性能。
  • LOBs 实际存储在另一个表空间中。 因此,对于非LOB字符串,插入、更新和检索长字符串的性能可能优于LOB字符串。

另外,请考虑为大型对象数据指定单独的缓冲池。