123
返回列表 发新帖
楼主: sqysl

[原创] 一直有个疑问,也一直没做试验,希望和大家一起讨论。。。

[复制链接]
论坛徽章:
14
授权会员
日期:2008-05-27 16:07:49ITPUB元老
日期:2013-08-07 11:03:43技术图书徽章
日期:2014-05-16 14:10:49马上有对象
日期:2015-01-27 17:29:37
21#
发表于 2008-5-29 21:58 | 只看该作者
1=2的问题还是有研究的,我也去研究下

使用道具 举报

回复
论坛徽章:
7
生肖徽章:鸡
日期:2006-09-07 17:08:172008新春纪念徽章
日期:2008-02-13 12:43:03奥运会纪念徽章:足球
日期:2008-10-24 13:28:14生肖徽章2007版:龙
日期:2009-02-25 16:35:082010新春纪念徽章
日期:2010-01-04 08:33:082014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
22#
发表于 2008-5-29 22:45 | 只看该作者
学习到不少东西

使用道具 举报

回复
论坛徽章:
9607
土豪章
日期:2013-12-31 14:11:39土豪章
日期:2013-12-31 14:11:39阿森纳
日期:2013-06-03 17:00:31阿森纳
日期:2013-10-11 09:27:58法拉利
日期:2013-12-27 15:20:30林肯
日期:2013-12-27 15:19:09法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30
23#
发表于 2008-5-30 09:19 | 只看该作者
我只知道他还是要我点commit的

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
奥运会纪念徽章:赛艇
日期:2008-07-05 23:31:28数据库板块每日发贴之星
日期:2009-01-07 01:01:02数据库板块每日发贴之星
日期:2009-02-03 01:01:02ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:45生肖徽章2007版:狗
日期:2009-03-10 21:36:37生肖徽章2007版:鼠
日期:2009-03-14 08:57:17CTO参与奖
日期:2009-03-23 11:00:182010广州亚运会纪念徽章:空手道
日期:2011-02-18 16:02:23迷宫蛋
日期:2011-07-31 01:30:132009新春纪念徽章
日期:2009-01-04 14:52:28
24#
发表于 2008-7-4 11:59 | 只看该作者
原帖由 晶晶小妹 于 2008-5-24 22:12 发表
第一点 : ORACLE的确是扫描数据,找到要修改的数据后,再开始修改。从扫描开始到开始实施第一条修改这段时间中,数据不被保护,也没有数据需要保护。
我做如下一个实验。我先以全表扫描更新这个大表中的每一行,马上换到另一个会话,用ROWID更新同一行:
步1:先看看表有多少行:
sid=49 pid=18> select count(*) from test1;
  COUNT(*)
----------
    727232

步2:在49会话开始更新
sid=49 pid=18> update test1 set object_name=lower(object_name) where object_name='中国';

步3:马上换到43会话,更新ROWID='AAAC83AAEAAAD19AAh'的行,这一行上49会话中要更新的行中的一个:
sid=43 pid=19> update test1 set object_name=upper(object_name) where rowid='AAAC83AAEAAAD19AAh';
已更新 1 行。

步4: 回到49号会话看看,UPDATE被43号会话阻塞。
虽然43号会话中的更新比49号会话的更新晚,但是43号阻塞了49号,因为49号会话描述行的时间比较长。
也就是说,在49号会话找到要更新的数据前,它并不对行加锁。



我开始有点不相信,上机做了一下测试,果真是这样!

很是疑惑:  先提交的任务被后提交的任务给阻塞,这有点不符合数据库的原理啊!

         如果这样,后执行的短小的交易反而先完成,先提交的长点的交易反而要等后提交的交易完成了才能完成?

         这对有些应用的业务会不会有影响呢 ?

         请高手赐教!

使用道具 举报

回复
论坛徽章:
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
25#
发表于 2008-7-4 22:32 | 只看该作者
原帖由 owlstudio 于 2008-7-3 21:59 发表
很是疑惑:  先提交的任务被后提交的任务给阻塞,这有点不符合数据库的原理啊!


晶晶小妹 and your experiments can be used to modify our understanding of the transaction mechanism. That is, the starting time of the transaction is NOT the time you submit the DML, but the time Oracle needs to lock the first row in the table. Think of this SQL: insert into mytable select * from verybigtable where... You won't see the TX lock until the query part starts to return rows. If "select * from verybigtable where..." takes 10 minutes to find the first matching row, the time lag will be 10 minutes.

Yong Huang

[ 本帖最后由 Yong Huang 于 2009-7-15 12:49 编辑 ]

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
奥运会纪念徽章:赛艇
日期:2008-07-05 23:31:28数据库板块每日发贴之星
日期:2009-01-07 01:01:02数据库板块每日发贴之星
日期:2009-02-03 01:01:02ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:45生肖徽章2007版:狗
日期:2009-03-10 21:36:37生肖徽章2007版:鼠
日期:2009-03-14 08:57:17CTO参与奖
日期:2009-03-23 11:00:182010广州亚运会纪念徽章:空手道
日期:2011-02-18 16:02:23迷宫蛋
日期:2011-07-31 01:30:132009新春纪念徽章
日期:2009-01-04 14:52:28
26#
发表于 2008-7-5 00:54 | 只看该作者
嗯,想明白了,就看谁先给行加TX锁了!

使用道具 举报

回复

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

本版积分规则 发表回复

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