Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3692915
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-08-28 16:09:57




  1. 创建主键索引,因为表太大,想开并行,于是写出如下语句:
  2. alter /*+ parallel(8)*/ table table1 add constraint PK1 primary key (ID, riqi) nologging;

但是很长时间也没执行完,正确的方法是:

  1. alter session enable parallel dml parallel 32;

  2. create unique index PK1 on
  3.  table1 (ID, riqi) parallel 16 nologging;
  4.  
  5. alter table table1 add constraint
  6.  PK1 primary key (ID, riqi);

  7. alter index PK1 noparallel;

  8. 简单监控
  9. select inst_id,sid,qcsid,server#,degree from gv$px_session;


相关视图

  1. 8.7.1.1 V$PX_BUFFER_ADVICE
  2. 您可以使用V$PX_BUFFER_ADVICE动态性能视图监控并行执行性能。

  3. 该V$PX_BUFFER_ADVICE视图提供有关所有并行查询的历史和预计最大缓冲区使用情况的统计信息。您可以参考此视图重新配置 SGA 大小以响应并行查询的内存不足问题。

  4. 8.7.1.2 V$PX_SESSION
  5. 您可以使用V$PX_SESSION动态性能视图监控并行执行性能。

  6. 该V$PX_SESSION视图显示有关查询服务器会话、组、集和服务器编号的数据。它还显示有关代表并行执行工作的进程的实时数据。此表包含有关请求的并行度 (DOP) 和授予操作的实际 DOP 的信息。

  7. 8.7.1.3 V$PX_SESSTAT
  8. 您可以使用V$PX_SESSTAT动态性能视图监控并行执行性能。

  9. 该V$PX_SESSTAT视图提供了加入从会话信息V$PX_SESSION和V$SESSTAT表格。因此,标准会话可用的所有会话统计信息可用于使用并行执行执行的所有会话。

  10. 8.7.1.4 V$PX_PROCESS
  11. 您可以使用V$PX_PROCESS动态性能视图监控并行执行性能。

  12. 该V$PX_PROCESS视图包含有关并行进程的信息,包括状态、会话 ID、进程 ID 和其他信息。

  13. 8.7.1.5 V$PX_PROCESS_SYSSTAT
  14. 您可以使用V$PX_PROCESS_SYSSTAT动态性能视图监控并行执行性能。

  15. 该V$PX_PROCESS_SYSSTAT视图显示查询服务器的状态并提供缓冲区分配统计信息。

  16. 8.7.1.6 V$PQ_SESSTAT
  17. 您可以使用V$PQ_SESSTAT动态性能视图监控并行执行性能。

  18. 该V$PQ_SESSTAT视图显示系统中所有当前服务器组的状态,例如有关查询如何分配进程以及多用户和负载平衡算法如何影响默认值和提示值的数据。

  19. 从这些视图查看数据后,您可能需要调整一些参数设置以提高性能。在这种情况下,请参阅调整并行执行的通用参数的讨论。定期查询这些视图以监控长时间运行的并行操作的进度。

  20. 对于许多动态性能视图,您必须将参数设置TIMED_STATISTICS为TRUE,以便 Oracle 数据库为每个视图收集统计信息。您可以使用ALTER SYSTEMorALTER SESSION语句来打开TIMED_STATISTICS和关闭。

  21. 8.7.1.7 V$PQ_TQSTAT
  22. 您可以使用V$PQ_TQSTAT动态性能视图监控并行执行性能。

  23. 作为一个简单的例子,考虑两个表之间的散列连接,在只有两个不同值的列上进行连接。充其量,这个散列函数有一个散列值到并行执行服务器 A,另一个散列值到并行执行服务器 B。两个 DOP 很好,但是,如果它是四个,那么至少有两个并行执行服务器没有工作

相关语句:

  1. --并行会话
  2. SELECT QCSID, SID, INST_ID "Inst", SERVER_GROUP "Group", SERVER_SET "Set",
  3.   DEGREE "Degree", REQ_DEGREE "Req Degree"
  4. FROM GV$PX_SESSION ORDER BY QCSID, QCINST_ID, SERVER_GROUP, SERVER_SET;

  5. --统计信息
  6. SELECT QCSID, SID, INST_ID "Inst", SERVER_GROUP "Group", SERVER_SET "Set",
  7.   NAME "Stat Name", VALUE
  8. FROM GV$PX_SESSTAT A, V$STATNAME B
  9. WHERE A.STATISTIC# = B.STATISTIC# AND NAME LIKE 'PHYSICAL READS'
  10.   AND VALUE > 0 ORDER BY QCSID, QCINST_ID, SERVER_GROUP, SERVER_SET;
  11.   
  12. --并行进程
  13. SELECT * FROM V$PX_PROCESS;

  14. --系统级并行相关统计信息
  15. SELECT NAME, VALUE FROM GV$SYSSTAT
  16.   WHERE UPPER (NAME) LIKE '%PARALLEL OPERATIONS%'
  17.   OR UPPER (NAME) LIKE '%PARALLELIZED%' OR UPPER (NAME) LIKE '%PX%';

  18. --并行从属进程
  19. SELECT px.SID "SID", p.PID, p.SPID "SPID", px.INST_ID "Inst",
  20.        px.SERVER_GROUP "Group", px.SERVER_SET "Set",
  21.        px.DEGREE "Degree", px.REQ_DEGREE "Req Degree", w.event "Wait Event"
  22. FROM GV$SESSION s, GV$PX_SESSION px, GV$PROCESS p, GV$SESSION_WAIT w
  23. WHERE s.sid (+) = px.sid AND s.inst_id (+) = px.inst_id AND
  24.       s.sid = w.sid (+) AND s.inst_id = w.inst_id (+) AND
  25.       s.paddr = p.addr (+) AND s.inst_id = p.inst_id (+)
  26. ORDER BY DECODE(px.QCINST_ID, NULL, px.INST_ID, px.QCINST_ID), px.QCSID,
  27. DECODE(px.SERVER_GROUP, NULL, 0, px.SERVER_GROUP), px.SERVER_SET, px.INST_ID;

参考:

  1. https://docs.oracle.com/en/database/oracle/oracle-database/19/vldbg/monitor-parallel-performance.html#GUID-A36F1D1B-113B-4AEC-8CC1-B284DE87CF8C

专业级别脚本
p.sql

来自:
监控并行查询/SQL 的脚本(文档 ID 457857.1)



阅读(1786) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~