Oracle UPDATE查询执行缓慢问题排查求助
Oracle UPDATE查询卡顿问题排查
问题现象
我们有一条逻辑简单的Oracle UPDATE查询执行时出现卡顿:
UPDATE BRI_PRINT_DOCUMENT pd SET PRINT_STATUS_ID = 6 WHERE pd.PRINT_STATUS_ID = 1 AND pd.DOCUMENT_TYPE_ID IN ( SELECT jd.DOCUMENT_TYPE_ID FROM BRI_JOBTYPE_DOCUMENTTYPE jd WHERE jd.JOB_TYPE_ID = 2); COMMIT;
尝试了改写后的UPDATE语句,卡顿问题依然存在:
UPDATE (SELECT * from BRI_PRINT_DOCUMENT PD INNER JOIN BRI_JOBTYPE_DOCUMENTTYPE BJD on PD.DOCUMENT_TYPE_ID = BJD.DOCUMENT_TYPE_ID AND JOB_TYPE_ID = 2 AND PRINT_STATUS_ID = 1) joined SET joined.PRINT_STATUS_ID = 6;
奇怪的是,对应的SELECT查询执行速度很快:
SELECT * FROM BRI_PRINT_DOCUMENT pd WHERE PRINT_STATUS_ID = 1 AND pd.DOCUMENT_TYPE_ID IN ( SELECT jd.DOCUMENT_TYPE_ID FROM BRI_JOBTYPE_DOCUMENTTYPE jd WHERE jd.JOB_TYPE_ID = 2);
额外异常细节
- 我和同事使用SQL Developer、DataGrip执行该UPDATE时均出现卡顿,但数据库管理员用Toad执行完全相同的查询却正常完成。
- 数据库无表锁,管理员未收到任何故障告警。
- 开发库数据量很小,仅有数千条记录。
执行计划

疑问
是什么原因导致了这个问题?
内容的提问来源于stack exchange,提问作者Trace
相关产品推荐
相关产品推荐

