楼主: jiangzx

[精华] db2回滚处理问题

[复制链接]
论坛徽章:
42
ITPUB元老
日期:2005-09-09 13:45:35马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14优秀写手
日期:2013-12-18 09:29:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32版主3段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:36
161#
发表于 2007-10-19 10:05 | 只看该作者
抛开“读一致性”这个问题不谈(公说公有理,婆说婆有理)。个人觉得在锁和并发的控制方面,DB2 的确没有 ORACLE 做得好,一来在管理方面, DB2 要麻烦一些,需要对锁的各种参数进行配置,配置不当会严重影响性能。另外一方面并发性也不如 ORACLE 所使用的机制。

也许有人会说,数据库中只有 Oracle 在这方面独树一帜。但是MS 现在也意识到了这个方式的优点,SQL Server 2005 增加了一个新的隔离框架——行版本控制的隔离,很像 Oracle 的基于回滚段的多版本控制。

使用道具 举报

回复
论坛徽章:
42
ITPUB元老
日期:2005-09-09 13:45:35马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14优秀写手
日期:2013-12-18 09:29:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32版主3段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:36
162#
发表于 2007-10-19 10:22 | 只看该作者
SQL92/SQL99试图对事务应如何工作以及隔离级别如何实现给出一个明确的定义,但最终,不同的数据库还是有不同的结果。这都是具体实现所致。在一个数据库中,某个应用可能会死锁并完全阻塞。但在另一个数据库中,同样是这个应用,这些问题却有可能不会发生,应用能平稳地运行。在一个数据库中,你可能利用了阻塞(物理串行化),但在另一个数据库上部署时,由于这个数据库不会阻塞,你就会得到错误的答案。要将一个应用部署在另一个数据库上,需要花费大量的精力,付出艰辛的劳动,即使你100%地遵循标准也不例外。

关键是,不要害怕使用开发商特有的特性,毕竟,你为这些特性花了钱。每个数据库都有自己的一套“技巧”,在每个数据库中总能找到一种完成操作的好办法。要使用最适合当前数据库的做法,移植到其他数据库时再重新实现。

使用道具 举报

回复
论坛徽章:
0
163#
发表于 2008-3-21 14:41 | 只看该作者

学习

搬个板凳来学习

使用道具 举报

回复
论坛徽章:
21
在线时间
日期:2007-07-25 04:01:022012新春纪念徽章
日期: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马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:23
164#
发表于 2008-3-21 16:11 | 只看该作者
原帖由 macrozeng 于 2007-10-16 22:25 发表
同意  bbkingbbking  的观点


既然还有人在谈论这个问题,我也来再加两句。

我不同意bbkingbbking的观点。

前几天看一本关于ORACLE的书(纯粹关于ORACLE的,而不时比较ORACLE跟DB2的),里面的一句话非常有意思:

Oracle's default isolation level is the read-commited level of isolation at the statement level. Oracle queries see only the data that was commited at the beginning of the query. Because the isolation level is at the statement level, each statement is allowed to see only the data that was commited before the commencement of that statement. The read-commited level of isolation guarantees that the row data won't change while you're accessing a particular row in an Oracle table.

Remember that Oracle only guarantees statement-level isolation here, not the transaction-level isolation.(这句话是书里的,不是我加的 )。

而DB2 BY DEFAULT 就是TRANSACTION-LEVEL CONSISTENCY。

有点好奇,ORACLE里面怎样才能做UR?

使用道具 举报

回复
论坛徽章:
21
在线时间
日期:2007-07-25 04:01:022012新春纪念徽章
日期: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马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:23
165#
发表于 2008-3-21 16:15 | 只看该作者
原帖由 macrozeng 于 2007-10-19 10:22 发表
SQL92/SQL99试图对事务应如何工作以及隔离级别如何实现给出一个明确的定义,但最终,不同的数据库还是有不同的结果。这都是具体实现所致。在一个数据库中,某个应用可能会死锁并完全阻塞。但在另一个数据库中,同样是这个应用,这些问题却有可能不会发生,应用能平稳地运行。在一个数据库中,你可能利用了阻塞(物理串行化),但在另一个数据库上部署时,由于这个数据库不会阻塞,你就会得到错误的答案。要将一个应用部署在另一个数据库上,需要花费大量的精力,付出艰辛的劳动,即使你100%地遵循标准也不例外。

关键是,不要害怕使用开发商特有的特性,毕竟,你为这些特性花了钱。每个数据库都有自己的一套“技巧”,在每个数据库中总能找到一种完成操作的好办法。要使用最适合当前数据库的做法,移植到其他数据库时再重新实现。


这段话我完全同意。每次听到DATABASE-INDEPENDENT APPLICATION,我都觉得不可思议。对于很多人来说,DATABASE就是DATA DAMPPING PLACE而已。

使用道具 举报

回复
论坛徽章:
21
在线时间
日期:2007-07-25 04:01:022012新春纪念徽章
日期: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马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:23
166#
发表于 2008-3-21 18:21 | 只看该作者
可以看看Thomas Kyte, A technical VP from Oracle Corporation, 关于类似问题的看法:

书名:Expert Oracle Database Architecture

页数:Page 186 to page 200

这本书在ITPUB上可以找到。

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-11-26 06:00:12
167#
发表于 2008-6-18 16:18 | 只看该作者
无意中翻到这个老贴,太经典。

有高潮有起伏,有摇旗,有呐喊,从双方用户杀到厂商人员。

刚开始感觉论战找不到焦点,不够专业,每每交手,都是擦肩而过,主力始终未交上手。

建议大家直接翻到13页,真正交手从这里开始:cliser对guorui

guorui 火力之准确、弹药之充足、斗志之昂扬、退出之干脆,不能不怀疑厂商直接出手。

Oracle除了一致性读,还有一个当前读,更新操作前会发生当前读,不会一致性读。

使用道具 举报

回复
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
168#
发表于 2008-8-25 00:39 | 只看该作者
原帖由 askgyliu 于 2008-3-21 16:11 发表


既然还有人在谈论这个问题,我也来再加两句。

我不同意bbkingbbking的观点。

前几天看一本关于ORACLE的书(纯粹关于ORACLE的,而不时比较ORACLE跟DB2的),里面的一句话非常有意思:

Oracle's default isolation level is the read-commited level of isolation at the statement level. Oracle queries see only the data that was commited at the beginning of the query. Because the isolation level is at the statement level, each statement is allowed to see only the data that was commited before the commencement of that statement. The read-commited level of isolation guarantees that the row data won't change while you're accessing a particular row in an Oracle table.

Remember that Oracle only guarantees statement-level isolation here, not the transaction-level isolation.(这句话是书里的,不是我加的 )。

而DB2 BY DEFAULT 就是TRANSACTION-LEVEL CONSISTENCY。

有点好奇,ORACLE里面怎样才能做UR?


oracle可以通过只读事务来实现

使用道具 举报

回复
论坛徽章:
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
169#
 楼主| 发表于 2008-8-26 22:33 | 只看该作者

关于事务控制

呵呵,好久没有发现技术帖了,今天回顾了一下自己在ITPUB上的帖子,发现这个帖竟然会引起大家这么强烈的反应,倍感荣幸
往日的成长历程历历在目,
谢谢大家了

使用道具 举报

回复
论坛徽章:
2
2014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02
170#
发表于 2008-9-4 15:24 | 只看该作者
这样的帖子真好
个人感觉还是想用啥就用啥就行了,只要清楚二者之间的差别,并清楚这种差别对实际业务的影响即可,当然,前提是这种影响不是不可接受的那种。
最怕的是稀里糊涂出了问题还不知道为什么出的问题

使用道具 举报

回复

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

本版积分规则 发表回复

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