更新时间:2026-07-28 GMT+08:00
分享

特性约束

对于高级压缩(ADVANCED):
  • 不支持系统表、内存表、全局临时表、本地临时表和序列表,不支持Ustore段页式表,不支持unlogged表,不支持压缩toast数据。
  • 支持用户为普通表、分区、二级分区设置ILM策略。
  • 支持普通表、分区、二级分区的Astore/Ustore用户表和透明加密表。
  • 特性仅在ORA兼容模式、PG兼容模式以及MYSQL兼容模式下有效。
  • Ustore不支持编解码,压缩率低于Astore。
  • 由于当前版本新增了部分解压特性,会导致部分极小的表在判断压缩收益时不通过,从而不进行压缩。但此前没有部分解压的版本可以压缩。例如:单表单字段int1类型的数据从当前版本开始无法进行压缩。
  • 对于ORA兼容模式下的datea类型,若开启mapping_date_to_datea参数,由于数据类型的存储结构发生了变化,压缩率也会受到影响。与date类型相比,datea类型的压缩率可能会更低。
  • 对于GET_COMPRESSION_RATIO接口,不支持行级表达式。
  • 不支持对压缩表的rowid执行原位更新操作。
  • 对于处于压缩状态的用户表,转换为rowid表后,该表数据将被自动解压。
  • 对于rowid表,不支持使用rowid/rowno系统列作为行级表达式条件。
对于索引压缩(ADVANCED):
  • 只支持BTree类型索引压缩,场景只支持涉及build/rebuild index相关场景时的压缩和后台调度(定时和手动)时的压缩。
  • build index时压缩只支持全部压缩,后台调度则根据页面LMT(Last Modified Time)执行压缩。
  • 已压缩的索引需要rebuild index时,只支持全量重新压缩或不压缩,或重建完在后台调度时根据页面LMT压缩。
  • 当前版本仅适配Astore,Ustore不支持。
  • 索引压缩依赖于索引所在的表或者分区上的策略信息。
  • 支持对Astore的普通表、分区表以及hashbucket表上的索引、二级(局部)索引以及全局索引进行索引压缩,不支持全局二级索引压缩。
  • 特性仅在ORA兼容模式、PG兼容模式以及MYSQL兼容模式下有效。
  • 在某些场景下,可能会导致被压缩索引占用空间膨胀,比如为分区表创建global索引并压缩,合并分区的时候同时更新global索引,由于改变了分区,global索引会有新的key插入,可能会导致global索引发生分裂,最后表现为global索引在分区合并后的占用空间大于合并前的占用空间。
  • 对于在线压缩的索引,释放的页面并不能马上复用(需要满足一定条件后在下一轮调度压缩时释放),如果索引key是随机插入的,key可能会插入到已压缩的页面从而导致页面分裂(相比于未压缩页面更有可能分裂,已压缩页面包含的index tuple数往往更多),需要新申请页面,可能会导致已压缩索引的空间膨胀大于未压缩索引的空间膨胀。鉴于此,如果索引key是随机插入的,或者说索引的写入比较难区分冷热,不建议开启索引在线压缩。如果该索引已经开启索引压缩,用户可以选择删除该表的策略以关闭索引压缩(会同时把堆表压缩关闭),或者选择将gs_ilm_param的ENABLE_INDEX_COMPRESS改为0以关闭索引压缩总开关(会导致其他索引也不能压缩)。
  • 当表存在多个索引时,索引要么都开启索引压缩,要么都不开启索引压缩,不支持单个索引的压缩控制。
  • 不支持与索引跳跃扫描同时使用。如果开启索引跳跃扫描,当扫描到索引压缩行时会直接报错。
  • 当数据库从无索引压缩版本升级至有索引压缩版本后,若想要在原表使用索引压缩功能,需要手动重新设置表策略,索引压缩才会生效。
  • 如果对索引配置了posting去重压缩,build index时不支持ILM索引压缩。
  • 当数据库从无索引压缩版本升级后,若想要在原表使用索引压缩功能,需要手动重新设置表策略,索引压缩才会生效。
对于copy批量导入压缩(ADVANCED):
  • 支持copy批量导入时压缩(包括copy和\copy),不支持insert into select场景下压缩,不支持单行导入时压缩(比如:导入分区表并且开启了违法约束不回滚功能;表上带触发器等)。
  • 与copy容错机制(LOG ERRORS或LOG ERRORS DATA)共用时,如果错误数据频繁出现,可能导致压缩无收益。
  • TOAST数据不支持导入压缩。
  • 由于索引压缩的时机是build/rebuild或后台调度压缩,在copy批量导入压缩时,索引不压缩。
  • 升级观察期不支持使用该功能。
  • 只支持Astore表,不支持Ustore。
  • 支持ORA兼容模式、PG兼容模式、MYSQL兼容模式,不支持M兼容模式。
  • 不支持与逻辑解码同时使用,如果开启逻辑解码,则copy导入压缩会直接报错。
对于库级策略(ADVANCED):
  • 库级压缩策略仅支持高级压缩。
  • 升级观察期不支持使用库级策略。
  • 库级策略不支持表达式功能。
  • 在使用gs_dump导出库级策略定义时,需满足以下条件方可生效:必须执行全库导出操作且用户具备系统管理员权限。若上述条件未同时满足,则相关策略将以表、分区或子分区级别的独立策略形式导出,而非作为库级策略处理。
对于跨页透明压缩(TURBO):
  • 仅支持页式下用户创建的Astore/Ustore普通行存表,其他类型表创建时报错。
  • 跨页透明压缩不在toast表上生效,对于toast表无压缩效果提升。
  • 特性仅在ORA兼容模式、PG兼容模式以及MYSQL兼容模式下有效。
  • 跨页透明压缩不支持与其他表压缩算法叠加使用,叠加使用时报错;
  • 不支持与透明加密叠加使用,叠加使用时报错。
  • 模式编码仅支持aheap、uheap页面类型,其他页面类型不生效,无法提升压缩比。
  • 不支持ILM策略ADD、DELETE、ADD+DELETE,否则会报错。
  • 分区分裂合并不支持ILM策略类型变更,否则会报错。
  • 不支持在reindex时指定ILM压缩策略,否则会报错。
  • 分区交换时表和分区的跨页透明压缩配置(compress unit、compressor、encoder)需严格一致,否则报错处理。
  • 不支持Online DDL操作,如果指定会自动转化为离线方式执行。
  • 跨页透明压缩/解压代价极大,仅支持在冷数据场景中使用。
  • 跨页透明压缩的语法和调度方式沿用ILM现有机制,不支持新增兼容性特性。
对于索引压缩(TURBO):
  • 仅支持页式下用户创建的Btree/Ubtree索引下的数据文件,其他类型索引创建时报错。
  • 索引的压缩类型与父表需保持一致,否则会报错。
  • 索引不支持分区单独指定跨页透明压缩策略,否则会报错。
  • 显式指定索引压缩策略时,以指定策略为准(未指定压缩级别时默认取MEDIUM),未显式指定索引压缩策略时,索引是否压缩和压缩级别与表保持一致。
对于库级策略(TURBO):
  • 升级观察期禁止创建跨页透明压缩表,创建时报错。
  • ADIO对跨页透明压缩对象不生效,当开启ADIO时,跨页压缩仍会使用buffered io进行磁盘读写。
  • 备份时指定的block buffer选项大小对跨页透明压缩对象的MAINFORK不生效。
对于压缩级别:
  • 高级压缩支持可选级别包括medium和high。不指定压缩级别时默认为medium级别,使用lz4压缩算法;指定high级别时,使用zstd压缩算法。
  • 跨页透明压缩支持可选级别包括low、medium和high。不指定压缩级别时默认为medium级别。
  • 升级观察期不支持指定压缩级别。

相关文档