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

[讨论] 对SERIALIZABLE隔离级别的反思

[复制链接]
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
21#
发表于 2015-4-1 22:24 | 只看该作者
komicakomica 发表于 2015-4-1 15:54
实际项目开发中可能有很多人写SQL,你修改自己的部分可以,但别人的部分又怎么办呢?你修改的话可能会因为 ...

实际项目中是大多数情况下ORACLE不需要你操心,程序员各写各的,系统也能跑得很好。如果你要修改的数据有复杂的并发一致性需求,那么你当然要对这块有全局的了解,知道什么情况下会出现什么样的并发修改。这不管用什么数据库都是一样的。
至于你说的应用写得有问题,还不让修改应用代码,这种情况下只能怪罪于这种奇葩需求,和ORACLE的READ COMMITTED又有什么关系?难道用别的数据库就迎刃而解?

使用道具 举报

回复
论坛徽章:
5
慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47喜羊羊
日期:2015-04-02 19:59:02懒羊羊
日期:2015-05-17 21:03:29懒羊羊
日期:2015-05-20 20:04:36
22#
 楼主| 发表于 2015-4-2 22:35 | 只看该作者
newkid 发表于 2015-4-1 22:24
实际项目中是大多数情况下ORACLE不需要你操心,程序员各写各的,系统也能跑得很好。如果你要修改的数据有 ...

从oracle相关的文章来看,少有人能认识到MVCC中所暗藏的的缺点。中文文章中提到的一般就只有会读到过期数据这一点,SERIALIZABLE级别实现和SQL标准不符以及write skew这两个问题都仅见于英文文章,国内没见人提起。想解决方案的前提是要认识到问题的存在,如果连问题都认识不到还谈什么解决问题。
其他数据库都有改进自己的事务隔离级别模型,支持更加丰富的隔离特性以满足不同场合的需要,oracle一直在拒绝改变。
DB2默认是不同行的写操作互相阻塞,通过设置一个全局参数很容易就可以切换成不互相阻塞的表现。较新版本(V9.7以上)读写操作是否互相阻塞也可以通过全局参数来改变。

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
23#
发表于 2015-4-2 23:21 | 只看该作者
komicakomica 发表于 2015-4-2 22:35
从oracle相关的文章来看,少有人能认识到MVCC中所暗藏的的缺点。中文文章中提到的一般就只有会读到过期数 ...

如果相关文章很少,说明ORACLE在实用中碰到这样的问题很少。这正是ORACLE实现方式的高明之处。
再说此类问题都有相应的解决办法,这些办法都只会造成局部串行化,比起全局的串行化好多了。

使用道具 举报

回复
论坛徽章:
5
慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47喜羊羊
日期:2015-04-02 19:59:02懒羊羊
日期:2015-05-17 21:03:29懒羊羊
日期:2015-05-20 20:04:36
24#
 楼主| 发表于 2015-4-3 20:03 | 只看该作者
newkid 发表于 2015-4-2 23:21
如果相关文章很少,说明ORACLE在实用中碰到这样的问题很少。这正是ORACLE实现方式的高明之处。
再说此类 ...

好了,这个话题就此打住吧。

使用道具 举报

回复
论坛徽章:
169
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
25#
发表于 2018-4-26 09:24 | 只看该作者
newkid 发表于 2015-3-25 09:17
书摘:TOM的“Oracle 9i10g编程艺术”
7.3.1 一种会失败的常用数据仓库技术
我看到,许多人都喜欢用这样 ...

好像v$Transaction 里面不好查到对象名或者对象id

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
26#
发表于 2018-4-26 21:48 | 只看该作者
Naldonado 发表于 2018-4-26 09:24
好像v$Transaction 里面不好查到对象名或者对象id

它不是用来干这个用途的,所需的是里面的START_TIME。

使用道具 举报

回复

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

本版积分规则 发表回复

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