查看: 11719|回复: 42

为什么commit需要耗费这么长时间?

[复制链接]
论坛徽章:
81
青年奥林匹克运动会-马术
日期:2014-09-10 21:37:07奥运会纪念徽章:跳水
日期:2012-09-22 18:27:58奥运会纪念徽章:现代五项
日期:2012-09-07 17:33:44奥运会纪念徽章:铁人三项
日期:2012-06-15 21:27:24版主1段
日期:2012-05-15 15:24:11蜘蛛蛋
日期:2012-05-14 10:50:40灰彻蛋
日期:2012-03-06 19:24:222012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:37
跳转到指定楼层
1#
发表于 2006-11-20 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据库是9204
删除了20w的数据,在删除数据的表建立有两个域索引,执行commit要2个小时
alert文件没有异常,但硬盘读写很厉害

这里不讨论是否需要分批删除提交,讨论一下为什么执行commit要那么长时间呢?
论坛徽章:
13
会员2007贡献徽章
日期:2007-09-26 18:42:10迷宫蛋
日期:2011-12-27 14:19:29生肖徽章2007版:龙
日期:2009-05-11 16:32:10数据库板块每日发贴之星
日期:2009-05-09 01:01:04行业板块每日发贴之星
日期:2009-05-08 01:01:05数据库板块每日发贴之星
日期:2009-05-06 01:01:02生肖徽章2007版:虎
日期:2009-05-01 08:12:31ITPUB元老
日期:2009-04-28 16:13:16授权会员
日期:2009-04-28 16:10:34CTO参与奖
日期:2009-02-12 11:45:48
2#
发表于 2006-11-20 09:44 | 只看该作者
在写回滚段?

使用道具 举报

回复
论坛徽章:
16
ITPUB元老
日期:2006-08-12 12:42:51授权会员
日期:2006-08-12 12:36:09数据库板块每日发贴之星
日期:2006-11-19 01:03:11数据库板块每日发贴之星
日期:2007-04-23 01:05:28会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44BLOG每日发帖之星
日期:2008-06-29 01:02:22
3#
发表于 2006-11-20 09:51 | 只看该作者
提交(Commit)流程

  Oracle产生一个SCN;

  在回滚段事物表中标记该事物状态为Commited;

  LGWR(日志读写进程) Flush Log Buffer到日志文件;

  如果此时数据块仍然在Buffer Cache中,那么SCN将被记录到Block Header上,这被称为快速提交;

  如果Dirty Block已经被写回到磁盘,那么下一个访问这个Block的进程将会自回滚段中获取该事物的状态,确认该事物被提交。然后这个进程获得提交SCN并写回到Block Header上,这被称为延迟块清除。

使用道具 举报

回复
论坛徽章:
81
青年奥林匹克运动会-马术
日期:2014-09-10 21:37:07奥运会纪念徽章:跳水
日期:2012-09-22 18:27:58奥运会纪念徽章:现代五项
日期:2012-09-07 17:33:44奥运会纪念徽章:铁人三项
日期:2012-06-15 21:27:24版主1段
日期:2012-05-15 15:24:11蜘蛛蛋
日期:2012-05-14 10:50:40灰彻蛋
日期:2012-03-06 19:24:222012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:37
4#
 楼主| 发表于 2006-11-20 09:54 | 只看该作者
最初由 油菜 发布
[B]在写回滚段? [/B]


undo是在commit前已经写好了

使用道具 举报

回复
论坛徽章:
16
ITPUB元老
日期:2006-08-12 12:42:51授权会员
日期:2006-08-12 12:36:09数据库板块每日发贴之星
日期:2006-11-19 01:03:11数据库板块每日发贴之星
日期:2007-04-23 01:05:28会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44BLOG每日发帖之星
日期:2008-06-29 01:02:22
5#
发表于 2006-11-20 09:55 | 只看该作者
看来问题是与
LGWR(日志读写进程) Flush Log Buffer到日志文件
有关。
是不是i/o系统或磁盘有问题?

使用道具 举报

回复
论坛徽章:
81
青年奥林匹克运动会-马术
日期:2014-09-10 21:37:07奥运会纪念徽章:跳水
日期:2012-09-22 18:27:58奥运会纪念徽章:现代五项
日期:2012-09-07 17:33:44奥运会纪念徽章:铁人三项
日期:2012-06-15 21:27:24版主1段
日期:2012-05-15 15:24:11蜘蛛蛋
日期:2012-05-14 10:50:40灰彻蛋
日期:2012-03-06 19:24:222012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:37
6#
 楼主| 发表于 2006-11-20 09:55 | 只看该作者
最初由 lcmlsj 发布
[B]提交(Commit)流程

  Oracle产生一个SCN;

  在回滚段事物表中标记该事物状态为Commited;

  LGWR(日志读写进程) Flush Log Buffer到日志文件;

  如果此时数据块仍然在Buffer Cache中,那么SCN将被记录到Block Header上,这被称为快速提交;

  如果Dirty Block已经被写回到磁盘,那么下一个访问这个Block的进程将会自回滚段中获取该事物的状态,确认该事物被提交。然后这个进程获得提交SCN并写回到Block Header上,这被称为延迟块清除。 [/B]


你的意思是因为延迟块清楚导致commit很慢的?

使用道具 举报

回复
论坛徽章:
16
ITPUB元老
日期:2006-08-12 12:42:51授权会员
日期:2006-08-12 12:36:09数据库板块每日发贴之星
日期:2006-11-19 01:03:11数据库板块每日发贴之星
日期:2007-04-23 01:05:28会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44BLOG每日发帖之星
日期:2008-06-29 01:02:22
7#
发表于 2006-11-20 09:57 | 只看该作者
延迟块清楚
并不影响提交,之所以有这个操作就是为了加快commit操作。

使用道具 举报

回复
论坛徽章:
81
青年奥林匹克运动会-马术
日期:2014-09-10 21:37:07奥运会纪念徽章:跳水
日期:2012-09-22 18:27:58奥运会纪念徽章:现代五项
日期:2012-09-07 17:33:44奥运会纪念徽章:铁人三项
日期:2012-06-15 21:27:24版主1段
日期:2012-05-15 15:24:11蜘蛛蛋
日期:2012-05-14 10:50:40灰彻蛋
日期:2012-03-06 19:24:222012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:37
8#
 楼主| 发表于 2006-11-20 09:58 | 只看该作者
最初由 lcmlsj 发布
[B]看来问题是与
LGWR(日志读写进程) Flush Log Buffer到日志文件
有关。
是不是i/o系统或磁盘有问题? [/B]


当时没有测试过硬盘的I/O速度,但从isotat看,读速度有几十M每秒,应该是正常的

使用道具 举报

回复
论坛徽章:
7
ITPUB元老
日期:2005-09-18 11:00:10授权会员
日期:2005-10-30 17:05:33数据库板块每日发贴之星
日期:2005-12-21 01:01:31会员2006贡献徽章
日期:2006-04-17 13:46:34会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44蛋疼蛋
日期:2012-02-13 13:03:57
9#
发表于 2006-11-20 10:00 | 只看该作者
v$session_wait

使用道具 举报

回复
论坛徽章:
16
ITPUB元老
日期:2006-08-12 12:42:51授权会员
日期:2006-08-12 12:36:09数据库板块每日发贴之星
日期:2006-11-19 01:03:11数据库板块每日发贴之星
日期:2007-04-23 01:05:28会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44BLOG每日发帖之星
日期:2008-06-29 01:02:22
10#
发表于 2006-11-20 10:03 | 只看该作者
对,看一下有什么等待事件,是否造成磁盘读写冲突?

使用道具 举报

回复

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

本版积分规则 发表回复

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