楼主: ZALBB

[精华] 我对ORACLE数据锁的一点体会

[复制链接]
论坛徽章:
4
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:狗
日期:2008-11-26 16:18:37生肖徽章2007版:虎
日期:2009-02-13 16:23:47生肖徽章2007版:马
日期:2009-03-10 21:15:36
71#
发表于 2007-9-18 11:56 | 只看该作者
最初由 beijing3721 发布
[B]事务槽,最多同时6个事务[/B]


何出此言?

使用道具 举报

回复
论坛徽章:
1
2008新春纪念徽章
日期:2008-02-13 12:43:03
72#
发表于 2008-2-3 11:50 | 只看该作者
此贴的故事还没讲完,怎么就沉下去了?顶起来

使用道具 举报

回复
论坛徽章:
30
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB元老
日期:2008-11-06 08:17:37数据库板块每日发贴之星
日期:2008-08-21 01:02:42NBA常规赛纪念章
日期:2008-04-18 19:48:162008新春纪念徽章
日期:2008-02-13 12:43:03数据库板块每日发贴之星
日期:2008-02-13 01:04:46数据库板块每日发贴之星
日期:2008-02-10 01:03:46数据库板块每日发贴之星
日期:2008-02-08 01:04:31数据库板块每日发贴之星
日期:2008-02-06 01:05:09祖国60周年纪念徽章
日期:2009-10-09 08:28:00
73#
发表于 2008-2-5 12:58 | 只看该作者
學習學習

使用道具 举报

回复
论坛徽章:
3
2009日食纪念
日期:2009-07-22 09:30:002010年世界杯参赛球队:法国
日期:2010-05-11 10:38:442010广州亚运会纪念徽章:高尔夫球
日期:2011-05-04 11:20:40
74#
发表于 2009-2-12 15:05 | 只看该作者
看了后受益匪浅哪

使用道具 举报

回复
论坛徽章:
41
秀才
日期:2015-07-30 11:13:40秀才
日期:2015-09-06 10:42:32秀才
日期:2015-09-10 09:29:01处女座
日期:2016-05-27 11:00:18
75#
发表于 2009-2-12 21:21 | 只看该作者
学习了。。。

使用道具 举报

回复
论坛徽章:
0
76#
发表于 2009-2-19 10:59 | 只看该作者
好东西,学习中!

使用道具 举报

回复
论坛徽章:
1
奥运会纪念徽章:现代五项
日期:2008-10-24 13:26:49
77#
发表于 2009-3-6 09:52 | 只看该作者
虽然是老贴,好东西

使用道具 举报

回复
论坛徽章:
24
授权会员
日期:2007-11-06 19:37:52管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
78#
发表于 2009-3-7 18:48 | 只看该作者
LZ呢?故事结果呢?多粒度封锁机制的下篇呢?继续!

使用道具 举报

回复
论坛徽章:
9
2010新春纪念徽章
日期:2010-03-01 11:08:332010年世界杯参赛球队:西班牙
日期:2010-04-19 15:27:54授权会员
日期:2010-08-18 16:18:31ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-28 10:48:52
79#
发表于 2009-12-16 13:49 | 只看该作者
原帖由 ZALBB 于 2004-9-28 11:09 发表
对你这句话:以后不管是其它DML操作或是DDL操作,在检查是否有锁冲突时,
就不需要逐行检查各记录的加锁情况了,而只需要检查表一级的加锁情况。

我看不明白:

1、你这段话中的:是否有锁冲突,是指行级锁,还是表级锁?
2、SESSION1对表A执行DML操作后,SESSION2也对A执行DML操作,
   那ORACLE要不要检查行的加锁情况?若要,是不是只检查到表一级的加锁
   情况?若是,那它如何得知那些记录被加X锁的情况?哪些记录可操作,
   哪些不可?

我是这样理解的,解决记录(数据冲突)的,是靠TX锁上记录的事务信息,
而非意向锁。

你可以测试:当你对记录做了UPDATE操作后,通过DUMP保存此记录的BLOCK块,
可立即看到该块已经记录了被修改记录的事务信息-ITL(这里不考虑日志延时),
此信息指明了事务及回滚段的信息,与TX锁上的ID1,ID2表示的信息是一致的。
这样,当再有第二个事务来修此记录时,可能就在此被卡住了。

事实上,单纯地使用此语句LOCK TABLE table_name IN ROW EXCLUSIVE MODE,
并不体现对哪些数据加了X锁。

因此,我理解这个时候对表加的意向锁为S锁,是为了避免ALTER ,DROP TABLE在
其上面的操作。

请继续指教。


同问,在表一级加了RS或者RX锁以后,后续的会话申请锁时,只知道该表上已经有RS锁或RX锁,怎么知道表上具体那些记录已经被锁定,那些记录没有被锁定呢?如何得知的?根据表上已经存在的RS、RX意向锁吗?
SESSION1对表A执行DML操作后,SESSION2也对A执行DML操作,但是两个session操作的是不同的记录,
   那ORACLE要不要检查行的加锁情况?若要,是不是只检查到表一级的加锁
   情况?若是,那它如何得知那些记录被加X锁的情况?哪些记录可操作,
   哪些不可?

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
80#
发表于 2009-12-17 01:37 | 只看该作者
原帖由 tyhj1982 于 2009-12-15 23:49 发表

同问,在表一级加了RS或者RX锁以后,后续的会话申请锁时,只知道该表上已经有RS锁或RX锁,怎么知道表上具体那些记录已经被锁定,那些记录没有被锁定呢?如何得知的?根据表上已经存在的RS、RX意向锁吗?
SESSION1对表A执行DML操作后,SESSION2也对A执行DML操作,但是两个session操作的是不同的记录,
   那ORACLE要不要检查行的加锁情况?若要,是不是只检查到表一级的加锁
   情况?若是,那它如何得知那些记录被加X锁的情况?哪些记录可操作,
   哪些不可?


I suggest you open a new thread for discussion.

In short, each row has a lock byte. The value in it indicates whether this row is locked or not.

Yong Huang

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表