跳到主要内容

LOB 类型

LOB 类型是用于存储 TEXT、BLOB、JSON、Geometry 等数据类型。 LOB 的存储的方式分为内联存储(INROW)和外联存储(OUTROW)两种。

内联存储

内联存储是将 LOB 数据与主表行存储在一起,在读取 LOB 数据时只需要进行一次存储访问操作。

外联存储

外联存储是将 LOB 数据存储在 LOB 辅助表中,在读取 LOB 数据时需要读取主表行,获取外联 LOB 的定位符(locator),之后根据定位符信息去 LOB 辅助表中读取实际的 LOB 数据,在这个过程中需要进行两次存储访问操作。

LOB 存储转换

LOB 数据的存储是内联存储还是外联存储,取决于 LOB 列的数据量。假如设定一个阈值为 8192 字节,如果超过 8192 字节 则为外联存储,否则为内联存储。

CREATE TABLE t(pk int, data text) LOB_INROW_THRESHOLD = 8192;

上述 DDL 指定了表中 LOB 列的 INROW 转 OUTROW 阈值为 8192 字节,其中 LOB_INROW_THRESHOLD 表示 LOB 列的阈值。

  • 当 LOB 列的数据小于等于 8192 字节时,LOB 数据和主表行存储在一起。
  • 当 LOB 列的数据大于 8192 字节时,会将所有数据存储到 LOB 辅助表中。
信息

lob_inrow_threshold 的值从大改小需要触发 Offline DDL。

内联存储相对于外联存储具有更好的性能表现,它能够减少存储访问次数,提高读取 LOB 数据的效率。特别是在需要频繁访问 LOB 数据的场景下,选择内联存储能够加快查询速度并降低系统开销。

LOB 类型

常见的 LOB 类型按字母顺序排列如下:

  • ARRAY:用于存储数组数据类型,允许存储多个值的集合。
  • Roaringbitmap:用于存储位图数据,主要用于图像处理和表示。
  • BLOB(Binary Large Object):用于存储二进制数据,如图像或文件,最大长度为 65,535 字节。
  • GEOMETRY:用于存储地理空间数据,支持空间分析和操作。
  • JSON:用于存储 JSON 格式的数据,便于处理结构化数据。
  • LONGTEXT:用于存储大量的文本数据,最大长度为 536,870,910 字节。
  • LONGBLOB:用于存储大量的二进制数据,最大长度为 536,870,910 字节。
  • MEDIUMBLOB:用于存储中等量的二进制数据,最大长度为 16,777,215 字节。
  • MEDIUMTEXT:用于存储中等量的文本数据,最大长度为 16,777,215 字节。
  • TEXT:用于存储较少量的文本数据,最大长度为 65,535 字节。

相关文档