对分区取消分段

可以通过对分区取消分段以将非邻接的扩展数据块合并,从而提高性能。

随着时间推移,经常更新的表可能变为分段表,从而当服务器每次访问表时,导致性能下降。对表取消分段可使数据行更紧密的集合在一起,并避免分区标题页溢出问题。对索引取消分段会让条目更集中,这会提高存取表信息的速度。

要确定表、索引或分区有多少扩展数据块,可运行 oncheck -pt and pT 命令。

要为表、索引或分区取消分段,请运行带 defragment 自变量或 defragment partnum 自变量的 SQL 管理 API task()admin() 函数,并指定要取消分段的表名、索引或分区号。

限制和注意事项

对分区取消分段之前,请查看以下重要注意事项:
  • 提交取消分段请求之后,无法停止该请求。
  • 不能为以下对象取消分段:
    • 伪表,如虚拟表接口 (VTI) 表
    • 包含虚拟索引接口 (VII) 索引的表
    • 包含 B 型树函数索引的表
    • 临时表
    • 排序文件
    • 光盘 BLOB 文件
  • 不得对要取消分段的表或分区发出冲突操作。必须先完成第一个操作,再启动第二个操作。如果第一个操作仍在运行,对第二个操作的请求将返回错误。以下列表中包含冲突操作示例:
    • 一个分区一次只能运行一个取消分段请求。
    • 一个数据库空间一次只能运行一个取消分段请求。
    • 如果表或分区上正在运行 DROP TABLE 或 ALTER FRAGMENT 之类的 DDL 语句,那么不能为表取消分段。
    • 不能为正在截断的表取消分段。
    • 不能为正在压缩或解压缩的表取消分段。
    • 不能为正在运行联机索引构建的表取消分段。
    • 不能为设置了互斥存取的表取消分段。
如果完成取消分段请求时发生问题,将向联机日志文件发送错误消息。