You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 12c创建带分区和索引的空表耗时过长如何优化

Oracle 12cR2 分区空表(含索引)创建过慢优化方案

以下方案均适配你使用的Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production版本,可直接落地:

  • 启用DDL并行处理
    会话级开启并行DDL权限,建表、建索引时指定并行度(并行度建议设置为服务器CPU核心数的1/2到全核心,避免资源过载),创建完成后可根据业务需求关闭表和索引的并行属性,避免后续业务SQL意外触发并行执行。
    相关命令:
    -- 开启会话级并行DDL
    ALTER SESSION ENABLE PARALLEL DDL;
    -- 建表时指定并行度
    CREATE TABLE 你的表名 (字段定义) PARTITION BY 分区规则 PARALLEL 4;
    -- 建局部索引时指定并行度
    CREATE INDEX 索引名 ON 你的表名(索引字段) LOCAL PARALLEL 4;
    -- 建完后恢复非并行属性(可选)
    ALTER TABLE 你的表名 NOPARALLEL;
    ALTER INDEX 索引名 NOPARALLEL;
    
  • 开启延迟段创建特性
    12c版本自带的DEFERRED_SEGMENT_CREATION参数开启后,空表、空分区、空索引不会立刻分配物理存储段,能大幅降低空表创建的IO开销,速度提升非常明显。如果你的场景不需要空表立刻分配存储空间,建议开启:
    ALTER SESSION SET DEFERRED_SEGMENT_CREATION = TRUE;
    
  • 临时关闭建表时自动统计信息收集
    12.2版本默认会在表创建时自动收集统计信息,空表无数据不需要这一步操作,可临时会话级关闭该特性减少不必要的开销:
    ALTER SESSION SET "_optimizer_gather_stats_on_load" = FALSE;
    -- 建表完成后可恢复为默认值TRUE
    
  • 提前调整表空间配置
    如果表空间开启了自动扩展且每次扩展的尺寸较小,创建表时触发多次数据文件扩展会大幅拉长耗时,可提前将对应表空间的数据文件扩展到足够大小,建表完成后再恢复原有自动扩展配置即可。
  • 避免一次性嵌套所有DDL逻辑
    如果是复制现有表结构(含分区、索引),不要直接用CREATE TABLE ... LIKE ... INCLUDING ALL的语法一次性完成,拆分步骤为「先建分区空表」→「并行建索引」,执行效率更高。

内容的提问来源于stack exchange,提问作者karthik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:18:04