今天发现一个临时表执行超级慢,查看表空间 cpu 内存等都正常,查看等待事件 为 SQL*Net message from client
执行的SQL:
UPDATE TEMP_TABLE_20210304_012 A
SET new_enodeb_name =
SELECT B.ENO_NAME FROM LTE_EMSGSD_V2 B
WHERE (SUBSTR (A.NE_NAME ,1,INSTR(A.NE_NAME,‘-‘,‘-1‘)-1) =
B.ENO_NAME ON A.NE_NAME=B.ENODEB_ID) AND ROWNUM < 2 );
等待事件:
执行计划:
我的SQL可以执行,时间为 16 min
优化办法 加索引
加完索引问题解决
其他办法补充尝试:
补充摘自 :http://blog.itpub.net/12798004/viewspace-1766893/
SQL*Net message to client
这个等待事件发生在服务器端向客户端发送消息的时候。当服务器端向客户端发送消息产生等待时,可能的原因是用户端太繁忙,无法及时接收服务器端送来的消息,也可能是网络问题导致消息无法从服务器端发送到客户端。这个等待事件包含两个参数。
driver id:服务器端和客户端连接是用的协议信息。
#bytes:服务器端向客户端发送消息的字节数。
SQL*Net message to dblink
这个等待事件和SQL*Net message to client相同,不过是发生在数据库服务器端和服务器端之间的等待事件,产生这个等待的原因可能是远端服务器繁忙,而无法即时接收发送过来的消息,也可能是服务器之间网络问题导致消息无法发送过来。
这个等待事件包含两个参数。
driver id:服务器端和另一个服务器端连接是用的协议信息。
#bytes:服务器端通过dblink从另一个服务器端收到的消息的字节数。
性能问题: SQL*Net message from client 等待时间太长
原文:https://www.cnblogs.com/JIKes/p/14626986.html