最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

select...forupdate在mysql和oracle间锁行为的比较_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 18:22:41
文档

select...forupdate在mysql和oracle间锁行为的比较_MySQL

select...forupdate在mysql和oracle间锁行为的比较_MySQL:bitsCN.com select...for update在mysql和oracle间锁行为的比较 环境:[sql] mysql> show variables like '%storage_engine%'; +----------------+--------+ | Variable_name | Value | +----
推荐度:
导读select...forupdate在mysql和oracle间锁行为的比较_MySQL:bitsCN.com select...for update在mysql和oracle间锁行为的比较 环境:[sql] mysql> show variables like '%storage_engine%'; +----------------+--------+ | Variable_name | Value | +----

bitsCN.com


select...for update在mysql和oracle间锁行为的比较

环境:

[sql]

mysql> show variables like '%storage_engine%';

+----------------+--------+

| Variable_name | Value |

+----------------+--------+

| storage_engine | InnoDB |

+----------------+--------+

1 row in set (0.00 sec)

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.1.52 |

+-----------+

1 row in set (0.06 sec)

[sql]

SQL> select * from v$version where rownum=1;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi

SQL> !uname -a

Linux Think 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

对mysql而言,select for update必须在一个事务中,当事务commit,锁也就释放了。因此,在实验时,务必加个begin、start transaction 或者 set autocommit=0。

mysql:

[sql]

------------------sesson_A---------------:

mysql> begin;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from t where i=2 for update;

+---+------+

| i | n |

+---+------+

| 2 | b

|

+---+------+

1 row in set (0.00 sec)

------------------session_B---------------:

mysql> select * from t;

+---+------+

| i | n |

+---+------+

| 2 | b

|

| 3 | c

|

+---+------+

2 rows in set (0.00 sec)

mysql> select * from t where i=2 for update;

被阻塞...

mysql> update t set n='f' where i=2;

被阻塞...

mysql> alter table t drop index t_idx;

被阻塞...

mysql> delete from t where i=2;

被阻塞...

oracle:

[sql]

-----------------------session_A---------------

SQL> select * from t where i=1 for update;

I N

---------- --------------------

1 think big

-----------------------session_B---------------

SQL> select * from t where i=1 for update;

被阻塞...

SQL> update t set n='think open' where i=1;

被阻塞...

SQL> create index t_idx on t(i);

create index t_idx on t(i)

*

ERROR at line 1:

ORA-00054: resource busy and acquire with NOWAIT specified

SQL> delete from t where i=1;

被阻塞...

于mysql,select ... for update 对行记录加个X锁。其他任何事务想在这些行上加任何锁都会被阻塞。这也符合InnoDB行级锁的概念。

在oracle中,我们再做下一个测试:

[sql]

-----------session_A-------------

SQL> select * from t for update;

A

-----

a

--------------session_B-------------

SQL> select sid,type,lmode from v$lock where sid=159;

SID TY LMODE

---------- -- ----------

159 TM 3

159 TX 6

对oracle,当发出select ... for update的时候、得到的是RX锁(lmode=3),同时通过trc文件,我们还可以发现,Lck被置为1,也也就是同时被加上了行级锁。

trc部分摘录如下:

[sql]

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x000a.029.0000013b 0x008000dd.00c8.2b C--- 0 scn 0x0000.000911f4

0x02 0x0004.026.00000142 0x008000a3.00c7.04 --U- 1 fsc 0x0000.00091339

.....

tl: 5 fb: --H-FL-- lb: 0x2 cc: 1

col 0: [ 1] 61

bitsCN.com

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

select...forupdate在mysql和oracle间锁行为的比较_MySQL

select...forupdate在mysql和oracle间锁行为的比较_MySQL:bitsCN.com select...for update在mysql和oracle间锁行为的比较 环境:[sql] mysql> show variables like '%storage_engine%'; +----------------+--------+ | Variable_name | Value | +----
推荐度:
标签: mysql oracle 锁的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top