oracle wait event:PX Deq Credit: send blkd
Just a few days ago a got to two Oracle DBAs discussing why the have so much “PX Deq Credit : send blkd” on a system. And if that is causing their performance problems.
The are some blog on the internet claiming it has to do with qc distribution and what ever.
But in many cases, especial if you experince huge waits on “PX Deq Credit : send blkd” the explanation can be much simpler. But first some background information.
If a query is run in parallel there is a query coordinator (QC) and the query slaves. The slaves do the actual work an send the result to the query coordinator. This is done through message buffers which you specified with the parallel_execution_message_size.
This buffer exists in the large or in the shared pool depending how PARALLEL_AUTOMATIC_TUNING is set.
Metalink states about the PX Deq Credit: send blkd event
This is considered as idle wait event.
You should investigate the sender (decode the senderid).
There is no general advice to reduce the waitime for this event.
The process wishes to send a message and does not have the flow control credit. Process must first dequeue a message to obtain the credit. Indicates that the receiver has not dequeued and/or completely consumed the prior message yet.
from that statement you could believe that is a idle even an you don’t need to care.
In this case the waits were cause by a query which look similar to this:
insert into tablex values (select /*+ parallel(32) */ from tabley);
Now it pretty clear from where the waits are coming. Since parallel query is enabled by default, but parallel dml is disabled, you feed a single insert process with 32 slaves. the insert process can never consume that much.
So the question is now, does that indicate a performance problem?
Yes, I does!
It indicates that your developer didn’t perform right. He played with parallel query without knowing what he does.
It eats your memory and produces unnecessary process on your sys
相关文档:
一、利用Class.forName函数(用java开发B/S模式的程序) 1.代码如下: //注册驱动程序
public boolean connectDb() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
return true;
} catch (ClassNotFoundException e) {
System.out.println(e);
return false;
}
}
......
通过JAVA调用ORACLE的存储过程,在ORACLE的存储过程内部做了一个查询在JAVA中获取该查询结果,这个和SYBASE、SQLSERVER的获取不一样,等我的下一篇文章我会介绍如何获取SYBASE、SQLSERVER在存储过程中执行了查询后如何获取其结果及存储过程的编写。
在Oracle中需要返回查询结果集,必须将其以游标的形式返回,但游标又不是 ......
一.表空间学习
个人觉得表空间相对于数据库来说是至关重要的,一般分为permanent(永久性表空间),undo(undo表空间),temporary(临时表空间),一般我们是通过以下sql进行查看表空间的类型的.
select distinct t.contents from dba_tablespaces t;
查看表空间所对应的数据文件。
select t.name,t1.name
from v$tablespace ......