多个会话修改相同行时(enq: TX-row lock contention,mode=6)

多个会话修改相同行时(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

你可能感兴趣的:(多个会话修改相同行时(enq: TX-row lock contention,mode=6))