暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

运维日记丨数据库表并行度

新运维新数据 2022-08-13
1656

各位新朋友~记得先点蓝字关注我哦~


Oracle中degree表示表的并行度,并行度默认为1


表并行度查询

    select table_name,degree from dba_tables;


    修改并行度

      alter table <table_name> parallel;   

      值为default,并行度为参数cpu_count* parallel_threads_per_cpu对应的值


        alter table <table_name> parallel <N>;   

        值为N,可以大于cpu_count,并且实际并行度为N


          create table <> ….. parallel <N>;

          值为N,可以大于cpu_count,并且实际并行度为N


          取消并行度

            alter table <table_name> noparallel;
            alter table <table_name> parallel 1;


            除了degree并行度之外,另外一个在11g之后不推荐使用,但也会影响并行度,dba_tables.instances,默认值也是为1,可以用命令修改:

              alter table <table_name> parallel (degree <N>|<default> instances <N>|<default> );


              并行度计算:

              degree <default>且instances <default> ,并行度为default

              degree <default> 且instances <N> ,并行度为N

              degree <N> 且instances < default > ,并行度为N

              degree <N> 且instances <N> ,并行度为N*N


              并行对性能的影响

              只有当进行全表扫描的时候,并行度才会生效。

              • 优点

              在全表扫描时能够最大限度地利用服务器的多个cpu资源,使多个cpu同时工作,能够更快得到结果。

              • 缺点

              改变SQL执行计划,从原来索引范围扫描变成全表扫描,性能下降



              取消并行之后


              如何使用并行

              不建议直接修改表的并行度,建议使用hint方式修改有并行度需求的SQL语句

              1. /*+ parallel */  或  /*+ parallel(<table>) */  

              相当于default,并行度为参数cpu_count * parallel_threads_per_cpu


              2. *+ parallel() */  或  /*+ parallel(<table>,<N>) */  

              用于指定并行度去访问指定表


              表并行引发的相关故障

              某医院客户反馈数据库连接报错,数据库进程数满了,数据库查询后发现数据库的进程数远远大于会话数


              原因分析

              表开启了并行,并行进程导致进程被用掉

              查询v$px_process发现大量的并行进程


              处理方法及结论

              根据业务情况,适当修改表的并行度或者使用hint的方式并行,不建议直接修改表的并行度。




              美创是国内领先的数据库服务提供商。服务团队拥有PG ACED 1名、Oracle&PG ACE 3人、DSI智库专家5名、DSMM测评师7名、OCM 20余人、数十名Oracle OCP、MySQL OCP、TDSQL TCP、OceanBase OBCP、TiDB PTCP、达梦 DCP、人大金仓、红帽RHCA、中间件weblogic、tuxedo、CISP-DSG、CISSP、CDGA、CDPSE、CZTP、CDSP等认证人员,著有《DBA攻坚指南:左手Oracle,右手MySQL》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》,《Oracle DBA实战攻略》等多本数据库书籍。运维各类数据库合计5000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、MongoDB、Redis、TDSQL、OceanBase、达梦、人大金仓等主流商业和开源数据库。美创拥有完善的运维体系和人员培养体系,并同时提供超融合、私有云整体服务解决方案、数据安全咨询及运营服务方案等,已为金融、政府、企业、能源等多个行业的客户提供量身定制的各类服务,赢得了客户的高度赞誉和广泛认可。



              文章转载自新运维新数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论