为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dmPython-2.3-py3.6-linux-x86_64
【操作系统】:Red Hat 4.8.5-36
【CPU】:
【问题描述】*:通过dmPython,执行execute的update更新语句,但是在数据库中查看一直在运行中,
使用了3种不同的更新方式,但是都是一样的效果
回答 0
暂无回答
练气十万年
建议检查一下锁的系统视图排查一下为什么update一直处于active的原因,是否存在锁等待,是否存在跟新同一条记录的情况,是否有事务未提交等信息。
系统视图的介绍可以在达梦DBA手册中看到,可以根据需要修改查询语句
例如:1、查询等待
SELECT
*
FROM
V$TRXWAIT C
LEFT JOIN
( SELECT TRX_ID, SQL_TEXT FROM V$SESSIONS)
A
ON
A.TRX_ID = C.ID
LEFT JOIN
( SELECT TRX_ID, SQL_TEXT FROM V$SESSIONS)
B
ON
B.TRX_ID = C.WAIT_FOR_ID;
SELECT * FROM V$SESSIONS WHERE TRX_ID IN
( SELECT ID FROM V$TRXWAIT )
UNION ALL
SELECT
*
FROM
V$SESSIONS
WHERE
TRX_ID IN
( SELECT WAIT_FOR_ID FROM V$TRXWAIT);
2、查询锁信息
SELECT V.*, S.SESS_ID BLOCKER_SEID,S.SQL_TEXT BLOCKER_SQL, S.TRX_ID BLOCKER_TRXID
FROM V$SESSIONS S,
(SELECT S.SESS_ID ,S.SQL_TEXT, S.TRX_ID,L.ROW_IDX FROM V$LOCK L, V$SESSIONS S WHERE BLOCKED<>0 AND L.TRX_ID=S.TRX_ID ) V
WHERE S.TRX_ID=V.ROW_IDX;
建议检查一下锁的系统视图排查一下为什么update一直处于active的原因,是否存在锁等待,是否存在跟新同一条记录的情况,是否有事务未提交等信息。
系统视图的介绍可以在达梦DBA手册中看到,可以根据需要修改查询语句
例如:1、查询等待
SELECT
*
FROM
V$TRXWAIT C
LEFT JOIN
( SELECT TRX_ID, SQL_TEXT FROM V$SESSIONS)
A
ON
A.TRX_ID = C.ID
LEFT JOIN
( SELECT TRX_ID, SQL_TEXT FROM V$SESSIONS)
B
ON
B.TRX_ID = C.WAIT_FOR_ID;
SELECT * FROM V$SESSIONS WHERE TRX_ID IN
( SELECT ID FROM V$TRXWAIT )
UNION ALL
SELECT
*
FROM
V$SESSIONS
WHERE
TRX_ID IN
( SELECT WAIT_FOR_ID FROM V$TRXWAIT);
2、查询锁信息
SELECT V.*, S.SESS_ID BLOCKER_SEID,S.SQL_TEXT BLOCKER_SQL, S.TRX_ID BLOCKER_TRXID
FROM V$SESSIONS S,
(SELECT S.SESS_ID ,S.SQL_TEXT, S.TRX_ID,L.ROW_IDX FROM V$LOCK L, V$SESSIONS S WHERE BLOCKED<>0 AND L.TRX_ID=S.TRX_ID ) V
WHERE S.TRX_ID=V.ROW_IDX;