多个会话修改相同行时(enq: TX-row lock contention,mode=6)
修改相同行,是发生TX锁引起争用的最普遍的情况。
相同行update引起的TX锁争用:
SQL> select * from a1;
ID
----------
1
2
SQL> select * from v$mystat where rownum<2;
SID STATISTIC# VALUE
---------- ---------- ----------
1588 0 1
SQL> update a1 set id=999 where id=1;
1 row updated
SQL> select * from v$mystat where rownum<2;
SID STATISTIC# VALUE
---------- ---------- ----------
1586 0 1
SQL> update a1 set id=999 where id=1;
.......waiting......................
SQL> select * from v$lock where type in ('TM','TX');
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
0000000089437150 0000000089437170 1586 TX 65566 145872 0 6 138 0
0000000088182D88 0000000088182DB0 1588 TM 167006 0 3 0 162 0
0000000088182E88 0000000088182EB0 1586 TM 167006 0 3 0 138 0
00000000874E7300 00000000874E7338 1588 TX 65566 145872 6 0 162 1