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

Oracle 并行(Parallel)简单使用

IT那活儿 2022-10-23
5475
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

  
某次业务侧反应数据库运行缓慢,工程师上数据库服务器找到了对应高耗SQL,且分析出原因为SQL中含有hint,但为未能生效。
后通过查找相关文档发现可修改参数parallel_min_servers来解决此问题使其生效。并对可能影响并行行为的操作进行讨论学习。


适用场景

1. 数据库服务器是多核CPU
2. 数据较为分散(多个磁盘)

3. 大数据量操作较好(OLAP系统)

并行的开启

1. hint
2. 当前会话
3. table degree
4. auto DOP
单节点:
auto DOP = parallel_threads_per_cpu * cpu_count (2*6)
RAC:
auto DOP = parallel_threads_per_cpu * cpu_count * instance_count

并行查询

select * from t1 order by id;
select /*+ parallel(6) */ * from t1 order by id;
可以看出使用了并行,且并行度为6。

服务器进程讲查询的结果汇总给QC返回给客户端。

执行计划阅读

1. 把PX相关的操作都统统抹去,然后再看。
2. Table queue的编号代表了并行执行计划中,数据分发的顺序。

例:TQ10000(代表DFO=1,table queue 0),TQ10001(代表DFO=1, table queue 1)

并行DML

1. 启用并行之前,必须完成所有事务。
2. 只有结束并行事务才能访问被并行DML修改的表。

可以明显看到性能的提升。

相关参数

1. parallel_min_servers
实例启动时创建的最小服务进程数。
2. parallel_max_servers
最大并行服务进程数。
可以看到,对其设置为6后,哪怕使用hint设置为8也是6。
3. parallel_threads_per_cpu

一个CPU在并行执行过程中可处理的进程或线程的数量。

相关视图

1. v$pq_tqstat
通过此视图可以看出并行的执行及负载情况。
select /*+ parallel(t1, 6) */ * from t1 order by id;
2. v$pq_sysstat
可以看出所有并行语句操作的并行统计信息。
3. v$pq_sesstat
查看当前会话的统计信息。

注意:

  • 合理使用并行数;
  • 设置合理的初始化参数。

关于10053跟踪trc中的执行计划

============
Plan Table找到执行计划
============
----------------------------------------+-----------------------------------+-------------------------+
| Id | Operation | Name | Rows | Bytes | Cost | Time |  TQ |IN-OUT|PQ Distrib |
----------------------------------------+-----------------------------------+-------------------------+
|
 0   | SELECT STATEMENT |         | |       | 102 |           | |      | |
| 1 |  PX COORDINATOR | |       | |       | |      | |           |
|
 2   | PX SEND QC (RANDOM) | :TQ10000| 1280K | 6400K |   102 | 00:00:01 |:Q1000| P->S |QC (RANDOM)|
| 3 |    PX BLOCK ITERATOR | | 1280K | 6400K |   102 | 00:00:01 |:Q1000| PCWC | |
| 4 |     TABLE ACCESS FULL | T1 | 1280K | 6400K |   102 | 00:00:01 |:Q1000| PCWP | |
----------------------------------------+-----------------------------------+-------------------------+
Predicate Information:
----------------------
4 - access(:Z>=:Z AND :Z<=:Z)

Content of other_xml column
===========================
dop_reason : hint
dop : 6并行度
px_in_memory : no
db_version : 11.2.0.4
parse_schema : YS
plan_hash : 2494645258
plan_hash_2 : 263533726
以及相关并行参数值



本文作者:朱谊顺(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

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

评论