-
-
创建主键索引,因为表太大,想开并行,于是写出如下语句:
-
alter /* parallel(8)*/ table table1 add constraint pk1 primary key (id, riqi) nologging;
但是很长时间也没执行完,正确的方法是:
-
alter session set parallel_force_local=true; -- 先预防
-
alter session enable parallel ddl ; -- dml |query(默认开启)
-
-
create unique index pk1 on
-
table1 (id, riqi) parallel 16 nologging;
-
-
alter table table1 add constraint
-
pk1 primary key (id, riqi);
-
-
alter index pk1 noparallel;
-
-
简单监控
-
select inst_id,sid,qcsid,server#,degree from gv$px_session;
-
相关视图
-
8.7.1.1 v$px_buffer_advice
-
您可以使用v$px_buffer_advice动态性能视图监控并行执行性能。
-
-
该v$px_buffer_advice视图提供有关所有并行查询的历史和预计最大缓冲区使用情况的统计信息。您可以参考此视图重新配置 sga 大小以响应并行查询的内存不足问题。
-
-
8.7.1.2 v$px_session
-
您可以使用v$px_session动态性能视图监控并行执行性能。
-
-
该v$px_session视图显示有关查询服务器会话、组、集和服务器编号的数据。它还显示有关代表并行执行工作的进程的实时数据。此表包含有关请求的并行度 (dop) 和授予操作的实际 dop 的信息。
-
-
8.7.1.3 v$px_sesstat
-
您可以使用v$px_sesstat动态性能视图监控并行执行性能。
-
-
该v$px_sesstat视图提供了加入从会话信息v$px_session和v$sesstat表格。因此,标准会话可用的所有会话统计信息可用于使用并行执行执行的所有会话。
-
-
8.7.1.4 v$px_process
-
您可以使用v$px_process动态性能视图监控并行执行性能。
-
-
该v$px_process视图包含有关并行进程的信息,包括状态、会话 id、进程 id 和其他信息。
-
-
8.7.1.5 v$px_process_sysstat
-
您可以使用v$px_process_sysstat动态性能视图监控并行执行性能。
-
-
该v$px_process_sysstat视图显示查询服务器的状态并提供缓冲区分配统计信息。
-
-
8.7.1.6 v$pq_sesstat
-
您可以使用v$pq_sesstat动态性能视图监控并行执行性能。
-
-
该v$pq_sesstat视图显示系统中所有当前服务器组的状态,例如有关查询如何分配进程以及多用户和负载平衡算法如何影响默认值和提示值的数据。
-
-
从这些视图查看数据后,您可能需要调整一些参数设置以提高性能。在这种情况下,请参阅调整并行执行的通用参数的讨论。定期查询这些视图以监控长时间运行的并行操作的进度。
-
-
对于许多动态性能视图,您必须将参数设置timed_statistics为true,以便 oracle 数据库为每个视图收集统计信息。您可以使用alter systemoralter session语句来打开timed_statistics和关闭。
-
-
8.7.1.7 v$pq_tqstat
-
您可以使用v$pq_tqstat动态性能视图监控并行执行性能。
-
-
作为一个简单的例子,考虑两个表之间的散列连接,在只有两个不同值的列上进行连接。充其量,这个散列函数有一个散列值到并行执行服务器 a,另一个散列值到并行执行服务器 b。两个 dop 很好,但是,如果它是四个,那么至少有两个并行执行服务器没有工作
相关语句:
-
--并行会话
-
select qcsid, sid, inst_id "inst", server_group "group", server_set "set",
-
degree "degree", req_degree "req degree"
-
from gv$px_session order by qcsid, qcinst_id, server_group, server_set;
-
-
--统计信息
-
select qcsid, sid, inst_id "inst", server_group "group", server_set "set",
-
name "stat name", value
-
from gv$px_sesstat a, v$statname b
-
where a.statistic# = b.statistic# and name like 'physical reads'
-
and value > 0 order by qcsid, qcinst_id, server_group, server_set;
-
-
--并行进程
-
select * from v$px_process;
-
-
--系统级并行相关统计信息
-
select name, value from gv$sysstat
-
where upper (name) like '%parallel operations%'
-
or upper (name) like '%parallelized%' or upper (name) like '%px%';
-
-
--并行从属进程
-
select px.sid "sid", p.pid, p.spid "spid", px.inst_id "inst",
-
px.server_group "group", px.server_set "set",
-
px.degree "degree", px.req_degree "req degree", w.event "wait event"
-
from gv$session s, gv$px_session px, gv$process p, gv$session_wait w
-
where s.sid () = px.sid and s.inst_id () = px.inst_id and
-
s.sid = w.sid () and s.inst_id = w.inst_id () and
-
s.paddr = p.addr () and s.inst_id = p.inst_id ()
-
order by decode(px.qcinst_id, null, px.inst_id, px.qcinst_id), px.qcsid,
-
decode(px.server_group, null, 0, px.server_group), px.server_set, px.inst_id;
参考:
-
https://docs.oracle.com/en/database/oracle/oracle-database/19/vldbg/monitor-parallel-performance.html#guid-a36f1d1b-113b-4aec-8cc1-b284de87cf8c
专业级别脚本
来自:
监控并行查询/sql 的脚本(文档 id 457857.1)
-
alter session parallel_force_local =true;
-
alter session force parallel query parallel 8;
-
select /* parallel(a, 4) */ * from emp a;
-
注意括号不能少
-
有group by会并行度*2
阅读(1584) | 评论(0) | 转发(0) |