楼主: jiangzx

[精华] db2回滚处理问题

[复制链接]
论坛徽章:
9
会员2006贡献徽章
日期:2006-04-17 13:46:342010年世界杯参赛球队:葡萄牙
日期:2009-12-19 11:47:11紫蛋头
日期:2011-05-26 12:15:02复活蛋
日期:2011-08-31 12:12:27紫蛋头
日期:2012-04-14 21:48:20奥运会纪念徽章:游泳
日期:2012-07-11 19:00:41奥运会纪念徽章:垒球
日期:2012-10-10 11:44:39茶鸡蛋
日期:2012-11-29 16:59:04青年奥林匹克运动会-高尔夫
日期:2014-09-12 13:27:29
171#
 楼主| 发表于 2008-9-9 14:55 | 只看该作者
从2000年到现在,这几年IT的技术发展的确是很迅猛,从大趋势来看,各种数据库,应用软件,都在朝方便管理方面花了不少功夫,的确也是收到了预期的部分效果,但系统其实也变得越来越复杂了,关联的内容也越来越多了,在这一方面,其实又增加了系统管理的复杂性,真正出了问题,要能快速定位及解决,也是越来越遥不可及了

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:50:44ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:202013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
172#
发表于 2008-10-22 17:02 | 只看该作者
4年了,我居然看到4年前的热帖,热泪盈眶啊!

使用道具 举报

回复
论坛徽章:
24
设计板块每日发贴之星
日期:2009-02-02 01:01:042012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042010广州亚运会纪念徽章:壁球
日期:2010-11-22 15:43:03ITPUB元老
日期:2010-11-18 13:03:452010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:瑞士
日期:2010-01-05 13:47:142010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:兔
日期:2009-11-01 20:09:03ITPUB8周年纪念徽章
日期:2009-10-09 21:30:11
173#
发表于 2009-2-26 09:24 | 只看该作者
看看Oracle和DB2在insert、update、select操作的异同。
1.insert和update操作
a、Oracle使用当前读(注意不是一直读,这时别人可以查数据)获取最新的数据块,插入修改数据。
b、DB2获取锁再插入修改数据(这时别的人不能查数据)。
2.select操作
a、Oracle有两种方式,一种是一致读(遇到别人在查询点后修改的数据到undo段重构查询时间点的数据)。一种是和DB2一样的在读的时候不希望别人改数据用select * from xxx for update实现,当然还可以有别的实现方式。
b、DB2处理select操作和insert、update一样,先获取锁再读(读的时候别人不能改数据,这点Oracle第二种方式和这个一样的效果)

使用道具 举报

回复
论坛徽章:
9
2009日食纪念
日期:2009-07-22 09:30:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24
174#
发表于 2009-7-1 13:11 | 只看该作者
看完了帖子, 忍不住也想说两句。

db2用了好多年了,对db2熟一些。
但对Oracle 可以说基本没用过。

单单从Oracle的回滚段来看,如果楼上各位朋友所说属实的话,
我觉得对读一致性控制来说,Oracle的回滚段还是做得很好的,确实也提高了并发性,如果db2也要提高并发,必须
降低隔离等级,以读脏数据为代价。


本来还有点疑问,就是银行取钱的事务(有些事务必须要按事务发生的先后顺序串行处理)
先select账户balance
中间处理
update set balance = balance - var

如果同一个账户顺序发起两个事务,A和B
B发起时,A正在做update(对当前账户已经上了写锁),但未提交。
按照业务逻辑,显然是B事务应该看到A修改后的结果才能进行下一步处理。

对于oracle来说,当B未提交(有的朋友说即使提交了也一样)始终看到的
是A修改前的余额。这样会导致B事务发生错误(可能余额实际已经不够扣款了)。
这样的并发度提高反而导致了业务逻辑的错误。
而DB2应该会让B等A commit 了(释放了写锁)之后才开始select。

本来对这种情况有点疑惑 oracle会怎么办,不过楼上的朋友说了可以用
“select * from xxx for update实现,当然还可以有别的实现方式”
但这样一来,事务的并发程度就跟db2一样了。


因此,事务如果不需要按事务发生的先后顺序串行处理,或者这样的事务很少,
oracle的回滚段应该是一个比较好的增加并发的设计,尤其在有olap和oltp混合负载的
应用上优势体现最明显。
db2经常会遇到跑批与联机交易锁冲突的情况(当然也会有一些解决办法,
楼上很多大侠技术都很高深,在此就不再献丑了)。

使用道具 举报

回复
论坛徽章:
176
现任管理团队成员
日期:2011-05-07 01:45:08版主7段
日期:2012-07-05 02:21:03ITPUB长老会成员
日期:2015-05-07 15:11:10ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB牛人
日期:2010-10-25 12:41:322010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:19
175#
发表于 2009-7-1 13:51 | 只看该作者
学习。。。精彩的讨论啊

使用道具 举报

回复
论坛徽章:
176
现任管理团队成员
日期:2011-05-07 01:45:08版主7段
日期:2012-07-05 02:21:03ITPUB长老会成员
日期:2015-05-07 15:11:10ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB牛人
日期:2010-10-25 12:41:322010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:19
176#
发表于 2009-7-1 13:51 | 只看该作者
总感觉还是oracle回滚处理用起来方便的多!

使用道具 举报

回复
论坛徽章:
2
生肖徽章2007版:龙
日期:2009-12-13 10:51:072010广州亚运会纪念徽章:武术
日期:2011-03-01 22:20:24
177#
发表于 2009-7-2 20:18 | 只看该作者
好老的精华帖子
IBM在最新发布的DB2 V9.7 中已经解决了部分问题:
The next new feature within DB2 is an improvement to its transaction concurrency model. This concurrency enhancement provides more granularity for the transactions. Within some high-performance systems, one transaction writing data and another transaction reading data can be blocked or delayed before the writer transaction is committed. This delay or blocking situation can cause some high-performance systems issues, so the DB2 team developed a new isolation level called Currently Committed that is now the default within the system.

The new Currently Committed isolation level allows writer transactions to continue processing while the other reader transactions within the system get their data. It works by retrieving the data row information that the reader transaction needs from the DB2 logs-usually from the log's memory cache, which is very fast. As a result, the reader transaction can continue processing without waiting for the writer transaction to be committed. This functionality provides more robust concurrency and implements it in a way that does not cause extra overhead for the system or transaction processing.

使用道具 举报

回复
论坛徽章:
176
现任管理团队成员
日期:2011-05-07 01:45:08版主7段
日期:2012-07-05 02:21:03ITPUB长老会成员
日期:2015-05-07 15:11:10ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB牛人
日期:2010-10-25 12:41:322010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:19
178#
发表于 2009-7-2 21:36 | 只看该作者
精彩的帖子! 支持!

使用道具 举报

回复
论坛徽章:
30
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442012新春纪念徽章
日期:2012-01-04 11:49:54茶鸡蛋
日期:2012-04-19 11:02:10奥运会纪念徽章:棒球
日期:2012-06-19 17:41:27ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07复活蛋
日期:2013-01-15 10:40:032013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2013-02-28 10:06:50蛋疼蛋
日期:2013-03-20 13:55:26劳斯莱斯
日期:2013-08-04 11:17:23
179#
发表于 2009-12-11 17:14 | 只看该作者
5年前的, 把很多人都“讨论” 没影儿了,  db2 在OLTP 里用的也不少, 看看SAP ECC 成功案例就知道了,  另外ORACLE 的undo 01555 实在是太烦人了
总也解决不了 (ORACLE 10G ,SAP 跑个报表8万秒, 多大的UNDO TBS 都不行)

使用道具 举报

回复
论坛徽章:
78
ITPUB15周年纪念
日期:2020-08-28 17:23:53双鱼座
日期:2016-03-19 19:38:31秀才
日期:2016-02-18 09:31:52秀才
日期:2016-01-25 15:02:04双子座
日期:2016-01-19 20:35:54秀才
日期:2016-01-13 12:14:26秀才
日期:2015-12-25 15:31:10秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:56:09秀才
日期:2015-12-14 14:51:16
180#
发表于 2009-12-14 19:34 | 只看该作者
DB2 9.7缺省的CS隔离级别对读取的锁定已经取消,应用感受和ORACLE类似。而且不需要undo tablespace

使用道具 举报

回复

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

本版积分规则 发表回复

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