问题描述

系统迁移,由单节点4cpu服务器迁移到双节点rac,32颗cpu系统中,迁移后对特定数据新服务器的处理速度反而不如老服务器。

问题分析

出现两侧代码相同但执行结果相差很大的原因是表SAVE_POINT_CACHE并行度的设置

表SAVE_POINT_CACHE中数据非常少,只有几十条

在系统中表SAVE_POINT_CACHE的并行度设置为default

根据oracle对并行度的算法

Default = parallel_threads_per_cpu * cpu_count

我们系统中两边的设置都是如下的情况

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

parallel_threads_per_cpuinteger2

也就是每个cpu的并行度为2

老系统中系统共有4颗cpu

prtdiag -v结果片段

========================= CPUs

RunE$CPUCPU

BrdCPUMHzMB Impl.Mask

--- ----- ---- ---- ------- ----

A0, 16 1500 32.0 US-IV+2.4

B1, 17 1500 32.0 US-IV+2.4

A2, 18 1500 32.0 US-IV+2.4

B3, 19 1500 32.0 US-IV+2.4

并行度的结果就是4*2=8

Rac新系统中每个服务器有32颗cpu,

并行度的结果就是2*32=64

在并行度设置为default情况下测试代码结果如下:

老系统时间为26.89秒

SQL> set timing on

SQL> BEGIN

2insert into save_point_cache values('dummytask_a',sysdate, 1);

3insert into save_point_cache values('begin_a',sysdate, 1);

4commit;

5

6FOR lc IN 1 .. 1000

7LOOP

8SAVE_POINT.SAVE_TASK ( 'dummytask_a', sysdate, lc );

9COMMIT;

10END LOOP;

11

12insert into save_point_cache values('end_a',sysdate, 1);

13commit;

14END;

15/

PL/SQL procedure successfully completed.

Elapsed: 00:00:26.89

Rac新系统时间为4:32.17

SQL> set timing on

SQL> BEGIN

2insert into save_point_cache values('dummytask_a',sysdate, 1);

3insert into save_point_cache values('begin_a',sysdate, 1);

4commit;

5

6FOR lc IN 1 .. 1000

7LOOP

8SAVE_POINT.SAVE_TASK ( 'dummytask_a', sysdate, lc );

9COMMIT;

10END LOOP;

11

12insert into save_point_cache values('end_a',sysdate, 1);

13commit;

14END;

15/

PL/SQL procedure successfully completed.

Elapsed: 00:04:32.17

并且在代码运行期间主要的等待事件为

PX Deq Credit: send blkd

PX Deq: reap credit

对于这两个等待事件,oracle的解释如下:

PX Deq: reap credit

Waiting Process: Slave

This wait event indicates that we are doing a non-blocking test to see if any channel has returned a message. We should see that although there is a high number of these events, the time accumulated to it should be zero (or really low).

Tips to Reduce Waits for "PX DEQ CREDIT SEND BLKD" at Database Level

The wait events"PX Deq Credit: need buffer"and"PX Deq Credit: send blkd" are occur when data ormessages are exchanged between process that are part of a px query..

There are at least 3 different main area's that can cause this waits.

We see high waits if a lot of data and message are exchanged between parallel processes. The cause can be that the execution plan is bad or there are problem with the parallel execution setup.

There is a problem with the resource like the CPU or the interconnect. As example with a CPU utilization around 100% the process are limited by the CPU and can not send the data fast enough.

If parallel queries are hang where one process waits for "PX Deq Credit: need buffer" as example.

出现问题的主要原因是并行处理sql过程中cpu之间数据交换等待导致处理速度变慢

处理方法:

关闭表save_point_cache的并行

在两边同时关闭表的并行重新测试

SQL> alter table save_point_cache noparallel;

Table altered.

98老系统用时1.60秒

SQL> set timing on

SQL> BEGIN

2insert into save_point_cache values('dummytask_a',sysdate, 1);

3insert into save_point_cache values('begin_a',sysdate, 1);

4commit;

5

6FOR lc IN 1 .. 1000

7LOOP

8SAVE_POINT.SAVE_TASK ( 'dummytask_a', sysdate, lc );

9COMMIT;

10END LOOP;

11

12insert into save_point_cache values('end_a',sysdate, 1);

13commit;

14END;

15/

PL/SQL procedure successfully completed.

Elapsed: 00:00:01.60

Rac新系统用时1.14秒

SQL> set timing on

SQL> BEGIN

2insert into save_point_cache values('dummytask_a',sysdate, 1);

3insert into save_point_cache values('begin_a',sysdate, 1);

4commit;

5

6FOR lc IN 1 .. 1000

7LOOP

8SAVE_POINT.SAVE_TASK ( 'dummytask_a', sysdate, lc );

9COMMIT;

10END LOOP;

11

12insert into save_point_cache values('end_a',sysdate, 1);

13commit;

14END;

15/

PL/SQL procedure successfully completed.

Elapsed: 00:00:01.14

速度都非常理想

oracle加并行变慢,并行设置不当导致数据处理速度变慢相关推荐

  1. 线上MySQL死锁分析——索引设置不当导致的死锁

    文章目录 1. 背景 2. MySQL InnoDB的锁机制 2.1 MySQL中的锁类型 2.2 行锁的加锁规则 2.3 死锁检测机制 3. 本文案例分析 3.1 分析InnoDB status日志 ...

  2. oracle 11g 11.2.0.1 设置HuagePage导致TRC 变大 变多

    最近发现diag/..../trac/ 目录下  sid_ora_xxxx.trc 文件大小为11M 而且类似文件数量很大.导致占用了8G硬盘空间 另外个同事说他的DG没有这个问题. 都一样的系统和一 ...

  3. java eden区_从实际案例聊聊Java应用因为Eden区设置不当导致的慢GC问题

    JVM的内存结构 在虚拟机中,不同的对象存活的时间是不一样的,为了区别出不同年龄的对象,更好的管理他们,目前主流的虚拟机采用都是分代算法. 在JVM中,会内存划分为三块,分别是新生代,老年代,以及持久 ...

  4. 爱快软路由ADSL/PPPoE之“间隔时长重拨“参数设置不当导致远程ssh连接频繁断线

    一台使用一年左右的软路由最近不能上线,导致通过阿里云域名访问内网设备无法实现.后台查看发现wan口拨号不成功. 网络是电信宽带.电信宽带可以4次拨号,本人网络环境共有4台路由器,以前一直正常运行,现在 ...

  5. quartz配置文件设置不当导致报错

    一.问题描述 如果数据库用的是pgsql且在quartz.properties文件中设置org.quartz.jobStore.driverDelegateClass=org.quartz.impl. ...

  6. Sentinel参数设置不当导致日志数量持续增长分析

    Sentinel介绍 Sentinel是阿里巴巴开源的分布式限流平台,目前在Github有18.4k的star,Github地址:github.com/alibaba/Sen- 他主要以流量为切入点, ...

  7. oracle11g trc 文件,Oracle11g11.2.0.1设置HuagePage导致TRC变大变多

    Oracle 11g 11.2.0.1 设置HuagePage导致TRC 变大 变多 最近发现diag/..../trac/ 目录下 sid_ora_xxxx.trc 文件大小为11M 而且类似文件数 ...

  8. 苹果电脑变慢的原因有哪些 苹果电脑变慢了怎么办

    苹果电脑受到大众追捧的大部分原因是她高效的运行速度,为我们带来了很大的方便.但是大家有没有发现经过几年时间后,现在自己的苹果电脑运行速度没有以前快了呢?导致苹果电脑变慢的原因有哪些?苹果电脑变慢了怎么 ...

  9. Oracle并行操作——从串行到并行(转)

    并行(Parallel)操作特性,是Oracle为更充分利用服务器硬件处理资源,提高特定大数据量操作效率,应对海量生产数据而推出的一种技术特性.通常,我们进行的SQL处理都是单进程操作,对应单个CPU ...

最新文章

  1. 从今天要开始复习和提升linux了, 为期 2月, 加油
  2. Confluence 6 重要缓存和监控
  3. 中文Ubuntu主目录下的文档文件夹改回英文
  4. 关于web.config
  5. springboot发送邮件_SpringBoot发送邮件如何实现,SpringBoot发送邮件详解(附代码)...
  6. jQuery 表格排序插件 Tablesorter 使用
  7. 快速排序法实战入门(推荐)
  8. effective c++ 第六章
  9. sony android 计算器,NeoCal 全能计算器 V2.0.2
  10. python学生信息管理系统课程设计实验报告_学生信息管理系统课程设计报告.docx...
  11. SCDM学习笔记(4)
  12. HITB CTF 2018 gundam 做题笔记
  13. 错误:.TemplateProcessingException: Exception evaluating SpringEL expression:
  14. 免费实时汇率查询Api接口
  15. mysql(十)条件语句、循环语句、动态执行SQL语句
  16. 培训python的学校
  17. 计算机图形学 OpenGl-种子填充算法画红黄绿交通灯
  18. gcc -c -o编译过程
  19. CAN总线概况与原理(转)
  20. 2023北京联合大学计算机考研信息汇总

热门文章

  1. java 越来越慢_浅析Java语言慢的原因
  2. 组合问题 contest4
  3. uwsgi基础——最佳实践和问题
  4. NeuSoft(2)添加系统调用
  5. 把tomcat服务器配置为windows服务的方法
  6. win32 API 遍历一个目录下的文件
  7. javaScript要点总结
  8. 一分钟了解spark的调优
  9. jzoj3085. 图的计数
  10. String Typing CodeForces - 954B