Oracle 数据库针对表主键列并发导致行级锁简单演示


本文内容
•软件环境
•简单演示 Oracle 数据库并发导致行级锁
本文简单演示针对表主键并发导致的行级锁。并发是两个以上的用户对同样的数据进行修改(包括插入、删除和修改)。锁的产生是因为并发。没有并发,就没有锁。并发的产生是因为系统需要,系统需要是因为用户需要。

软件环境
--------------------------------------------------------------------------------
•Windows 2003 Server
•Oracle 11g Release 1 (11.1)
简单演示 Oracle 数据库并发导致行级锁
首先,打开一个会话 session 1,执行如下操作:

复制代码 代码如下:

SQL> select distinct sid from V$mystat;

SID
----------
118
SQL> create table t (x int primary key);
表已创建。
SQL> insert into t values(1);
已创建 1 行。
SQL> update t set x=10 where x=1;
已更新 1 行。
SQL>

先查看本次会话的 SID,然后创建一个表 t,只有一个名为 x 的字段,且该字段为主键,插入一条数据,并更新该数据。

接下来,打开另一个会话 session 2:
复制代码 代码如下:

SQL> select distinct sid from V$mystat;

SID
----------
137
SQL> update t set x=10 where x=1;

此时,该会话被“卡”在这里不动。只是光标一直在闪……因为,session 2 被 session 1 阻塞。
现在,查看锁定视图 V$LOCK。
复制代码 代码如下:

SQL> select sid,type,id1,id2,lmode,request,block
2 from v$lock where sid in (118,137)
3 order by sid;

 
已选择6行。
SQL>
说明:“TYPE”列表示锁的类型;“LMODE”列表示锁的模式;“ID1”和“ID2”列是锁的相关信息。“REQUEST”列是正在什么锁。

SID=118 是第一个会话,SID=137 是第二个会话。第三行,第一个会话 BLOCK=1 表示这个会话正在阻塞其他会话,LMODE=6 表示锁的模式,即行级排他锁。第六行,第二个会话 REQUEST=6 表示当前会话正在等待一个 LMODE=6 的锁。注意,第三行和第六行的 ID1 和 ID2 列完全相同。因为它们指向统一资源,只不过一个是资源的拥有者(SID=118),一个是资源的等待者(SID=137)。

通过这个视图,很容易发现所在——故障定位(trouble shooting)。会话 2 之所以被“卡”住,是因为会话 1 还没提交,而在这张表上,又恰好有要求列值唯一性约束。
通过 SID 号,查看视图 V$SESSION 就可以确定用户信息。
复制代码 代码如下:

SQL> select machine from v$session where sid in (118,137);

MACHINE
----------------------------------------------------------------
NUODE\LN
NUODE\LN
SQL>

因为,两个会话是同一台机器,所以名字一样。



相关阅读:
Javascript实现简单的富文本编辑器附演示
jquery实现页面常用的返回顶部效果
C语言连续子向量的最大和及时间度量实例
CSS中的各种选择器与样式优先级小结
深入解析C++的循环链表与双向链表设计的API实现
CSS定义超链接样式的顺序及四个伪类的用法示例介绍
sql server中查找特定类别的列的写法
ASP.NET验证码实现(附源码)
Win10预览版10525出现错误代码0x8007232B的原因
JavaScript实现当网页加载完成后执行指定函数的方法
CSS重要属性之 margin 属性知识大整合(必看篇)
纯javascript响应式树形菜单效果
win7系统无法登录阿里旺旺怎么办?win7系统电脑无法登录阿里旺旺聊天的多种解决方法
Win7开机黑屏提示“explorer无法启动uxtheme.dll丢失”的解决方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 人世间,并非无烦恼就快乐,也并非快乐就没有烦恼 致婚姻 小学六年级作文550字:听 有事开口,无事勿扰 现实的励志摘抄大全 樱花落在肩头作文3000字 小学三年级英语暑假作业及答案 英语考试作文100字_英语考试作文 纪念抗日战争胜利70周年文艺演出主持词 晚安心语 人生简单些更好 粉色的记忆【原】 古风·坝上行 【顶】顶!!!洋洋全网聘亲。。求转发!!!!求分享!!求评论!!【跑堂者勿进】 下山逢故夫 冬雪的寒 保护环境,行动起来作文750字 20岁起,你要培养与别人拉开距离的能力 篮球小子借奥运煮热火锅店 我的姑姑作文 津门 别哭 2012财务年终总结 街道办基层组织建设工作总结 鸡翅冰啤,忘记了所有 那些流泪的曾经 对那被自己逼出来的成熟,说声对不起 小学四年级作文450字:我的“小狗” 爸爸,你别打妈妈,我走可以吗? 写给熟睡老婆 好吃的美食 我喜欢出发 夏木经典语录 最美的事物,永远是在心中,不是在眼里 五年级元旦作文:吃汤圆 感知挫折作文600字 内科护士的年终总结(1) 超越前方五十米 鲁迅刻早字 小学党总支下半年党建工作计划 我是橡皮泥 好习惯 求职信范文 园艺 倡导说真话的狐狸 妹妹,要长大啦!哥哥对你有信心! 高一年级部第一学期工作计划 农村信用社抵债资产管理中存在的问题分析及对策建议 歌颂祖国作文800字 在生活中学会了珍惜作文600字 2014普通员工辞职申请书 小学四年级作文350字:超级外公 初中初一作文650字:090918周记 我与母亲的童年

Copyright © 2016 phpStudy |