楼主: qqvsmsn

如果不考虑事务的完整性,是不是在SQL中的COMMIT越多性能越好?

[复制链接]
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
41#
发表于 2010-8-27 17:25 | 只看该作者
原帖由 carcase 于 2010-8-27 12:27 发表
to  杨奇龙
多commit生成的commit 大于一起commit的量 这些多出来的redo开销是什么?

这个我跟踪了一些 不过偶不是很看的懂 呵呵
我贴出来 大家看一下  
第一条update 大家基本是一样的,都做同一件事情
change #1  分配回滚段
change #2  写镜像信息到回滚段
change #3 记录数据库的修改

从第二条update开始 就记录的redo就不一样了

1.分开commit的日志是这样的

REDO RECORD - Thread:1 RBA: 0x00028b.00000009.0144 LEN: 0x0060 VLD: 0x01
SCN: 0x0000.7c7c23c4 SUBSCN:  1 08/15/2010 11:04:54
CHANGE #1 TYP:0 CLS:21 AFN:2 DBA:0x00800029 OBJ:4294967295 SCN:0x0000.7c7c23c3 SEQ:  1 OP:5.4
ktucm redo: slt: 0x0013 sqn: 0x00001532 srt: 0 sta: 9 flg: 0x2
ktucf redo: uba: 0x00806adc.08bb.20 ext: 2 spc: 2970 fbi: 0

REDO RECORD - Thread:1 RBA: 0x00028b.0000000a.0010 LEN: 0x0218 VLD: 0x05
SCN: 0x0000.7c7c23c6 SUBSCN:  5 08/15/2010 11:04:54
CHANGE #1 TYP:0 CLS:27 AFN:2 DBA:0x00800059 OBJ:4294967295 SCN:0x0000.7c7c2233 SEQ:  1 OP:5.2
ktudh redo: slt: 0x0013 sqn: 0x000013ce flg: 0x0012 siz: 176 fbi: 0
            uba: 0x008000af.0681.1e    pxid:  0x0000.000.00000000
CHANGE #2 TYP:0 CLS:28 AFN:2 DBA:0x008000af OBJ:4294967295 SCN:0x0000.7c7c2232 SEQ:  2 OP:5.1
ktudb redo: siz: 176 spc: 3448 flg: 0x0012 seq: 0x0681 rec: 0x1e
            xid:  0x0006.013.000013ce  
ktubl redo: slt: 19 rci: 0 opc: 11.1 objn: 111826 objd: 111826 tsn: 4
Undo type:  Regular undo        Begin trans    Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
             0x00000000  prev ctl uba: 0x008000af.0681.1c
prev ctl max cmt scn:  0x0000.7c7c049e  prev tx cmt scn:  0x0000.7c7c05b5
txn start scn:  0xffff.ffffffff  logon user: 55  prev brb: 8388777  prev bcl: 0 KDO undo record:
KTB Redo
op: 0x04  ver: 0x01  
op: L  itl: xid:  0x000a.022.0000102c uba: 0x00800312.05a6.06
                      flg: C---    lkc:  0     scn: 0x0000.7c7c2245
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x01000047  hdba: 0x01000043
itli: 1  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 8
ncol: 2 nnew: 1 size: 0
col  0: [ 2]  c1 06
CHANGE #3 TYP:2 CLS: 1 AFN:4 DBA:0x01000047 OBJ:111826 SCN:0x0000.7c7c23c4 SEQ:  1 OP:11.5
KTB Redo
op: 0x11  ver: 0x01  
op: F  xid:  0x0006.013.000013ce    uba: 0x008000af.0681.1e
Block cleanout record, scn:  0x0000.7c7c23c6 ver: 0x01 opt: 0x02, entries follow...
  itli: 2  flg: 2  scn: 0x0000.7c7c23c4
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x01000047  hdba: 0x01000043
itli: 1  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 1 ckix: 8
ncol: 2 nnew: 1 size: 0
col  0: [ 2]  c1 07
CHANGE #4 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:  0 OP:5.20
session number   = 144
serial  number   = 7
transaction name =

跟第一次update是一样的,change1   到change 4 一步也不少的


一起commit的sql是这样的:
REDO RECORD - Thread:1 RBA: 0x00028b.0000000f.0038 LEN: 0x010c VLD: 0x01
SCN: 0x0000.7c7c23cc SUBSCN:  5 08/15/2010 11:04:55
CHANGE #1 TYP:0 CLS:18 AFN:2 DBA:0x00807147 OBJ:4294967295 SCN:0x0000.7c7c23cc SEQ:  1 OP:5.1
ktudb redo: siz: 112 spc: 3008 flg: 0x0022 seq: 0x070f rec: 0x1e
            xid:  0x0001.01a.00000fe4  
ktubu redo: slt: 26 rci: 29 opc: 11.1 objn: 113006 objd: 113006 tsn: 4
Undo type:  Regular undo       Undo type:  Last buffer split:  No
Tablespace Undo:  No
             0x00000000
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x00807147.070f.1d
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x02000be4  hdba: 0x02000be3
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 8
ncol: 2 nnew: 1 size: 0
col  0: [ 2]  c1 0f
CHANGE #2 TYP:0 CLS: 1 AFN:8 DBA:0x02000be4 OBJ:113006 SCN:0x0000.7c7c23cc SEQ:  1 OP:11.5
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x00807147.070f.1e
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x02000be4  hdba: 0x02000be3
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 2 ckix: 8
ncol: 2 nnew: 1 size: 0
col  0: [ 2]  c1 06

REDO RECORD - Thread:1 RBA: 0x00028b.0000000f.0144 LEN: 0x010c VLD: 0x01
SCN: 0x0000.7c7c23cd SUBSCN:  1 08/15/2010 11:04:55
CHANGE #1 TYP:0 CLS:18 AFN:2 DBA:0x00807147 OBJ:4294967295 SCN:0x0000.7c7c23cc SEQ:  2 OP:5.1
ktudb redo: siz: 112 spc: 2894 flg: 0x0022 seq: 0x070f rec: 0x1f
            xid:  0x0001.01a.00000fe4  
ktubu redo: slt: 26 rci: 30 opc: 11.1 objn: 113006 objd: 113006 tsn: 4
Undo type:  Regular undo       Undo type:  Last buffer split:  No
Tablespace Undo:  No
             0x00000000
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x00807147.070f.1e
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x02000be4  hdba: 0x02000be3
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 8
ncol: 2 nnew: 1 size: 0
col  0: [ 2]  c1 06
CHANGE #2 TYP:0 CLS: 1 AFN:8 DBA:0x02000be4 OBJ:113006 SCN:0x0000.7c7c23cc SEQ:  2 OP:11.5
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x00807147.070f.1f
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x02000be4  hdba: 0x02000be3
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 8
ncol: 2 nnew: 1 size: 0
col  0: [ 2]  c1 07

他就只有两部 change1 和chang2  (没有change4 ,那是因为还没有commit)
但是相比之下,还是少了一个步骤,
我看了一下  应该是少了  把前镜像记录写到undo的这一步没有了,或者这一步的信息很少
应该是 update同一张表的缘故,前镜像取自前一个update了,所有记录的redo少了

高手解释一下


这个可以参见redo internal.ppt文档。里面写的比较清楚。

使用道具 举报

回复

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

本版积分规则 发表回复

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