楼主: wxz317

对于Oracle12C的多LGWR的理解,纯属个人想法,如有错误请指正,如有雷同纯属巧合!

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
11#
发表于 2013-8-30 19:56 | 只看该作者
wxz317 发表于 2013-8-30 12:42
我发现oracle大牛有一个特点,觉得除了oracle,其它的都不行!我真想不通!
oracle无法使用的场景多了去了 ...

就要有这个气势:)

使用道具 举报

回复
论坛徽章:
1
ITPUB社区OCM联盟徽章
日期:2014-11-17 13:33:27
12#
发表于 2013-9-6 15:47 | 只看该作者
oracle在insert很多时commit,为什么在等待io完成?脏块太多了么?不得不会写磁盘?
oracle不是在commit时,才写之前的insert的redo的,否则没commit就断电了,前滚后的回滚,滚啥啊?

使用道具 举报

回复
论坛徽章:
2
2008新春纪念徽章
日期:2008-02-13 12:43:032013年新春福章
日期:2013-02-25 14:51:24
13#
 楼主| 发表于 2013-9-6 21:42 | 只看该作者
aio_o_ 发表于 2013-9-6 15:47
oracle在insert很多时commit,为什么在等待io完成?脏块太多了么?不得不会写磁盘?
oracle不是在commit时 ...

你的数据库基础知识还有所欠缺,我简单给你介绍一下。
数据库中,有两类重要的文件:日志文件和数据文件
数据文件很明显就会保存数据的,为什么还需要日志文件呢?
这主要是对数据库的数据文件的修改往往在磁盘上都是离散的,事务提交的时候必须保证该事务的数据都写出到磁盘上事务才能被提交,否则断电将会导致数据丢失,很明显这将导致大量的IO。另外,如果只有数据文件,一个事务修改了一些数据,但中途出现了错误时,被修改的数据将没法被恢复,为了解决此问题经过大牛们的研究搞了一个ARIES恢复协议,按照此协议,可以在修改数据的时候,修改内存数据的同时,将修改写入连续的日志块中,事务提交的时候,只需要保证日志被全部写出到磁盘,即可能保证数据被redo或者undo。
这样就保证了数据库的ACID特性。

目前的所有数据库都是有日志文件的,在事务提交的时候只讲日志文件的数据刷出到磁盘上,而数据可以不被写出到磁盘!

使用道具 举报

回复
论坛徽章:
2
2008新春纪念徽章
日期:2008-02-13 12:43:032013年新春福章
日期:2013-02-25 14:51:24
14#
 楼主| 发表于 2013-9-6 21:55 | 只看该作者
aio_o_ 发表于 2013-9-6 15:47
oracle在insert很多时commit,为什么在等待io完成?脏块太多了么?不得不会写磁盘?
oracle不是在commit时 ...

所以commit时必须等待日志io的完成。
大部分数据库也都不是只在commit时触发刷日志的动作,但大部分数据库只有在并发时才可能用到其它的触发刷日志的条件。

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
15#
发表于 2013-9-6 22:40 来自手机 | 只看该作者
wxz317 发表于 2013-9-6 21:55
所以commit时必须等待日志io的完成。
大部分数据库也都不是只在commit时触发刷日志的动作,但大部分数据 ...

还有按时间刷日志的,日志文件发生切换也会刷

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
16#
发表于 2013-9-7 20:59 | 只看该作者
wxz317 发表于 2013-9-6 21:42
你的数据库基础知识还有所欠缺,我简单给你介绍一下。
数据库中,有两类重要的文件:日志文件和数据文件 ...

简单讲一下ARIES恢复协议?

使用道具 举报

回复
论坛徽章:
1
ITPUB社区OCM联盟徽章
日期:2014-11-17 13:33:27
17#
发表于 2013-9-9 10:01 | 只看该作者
无语了,oracle的commit是不会触发dbwr回写数据的...

使用道具 举报

回复
论坛徽章:
1
ITPUB社区OCM联盟徽章
日期:2014-11-17 13:33:27
18#
发表于 2013-9-9 10:02 | 只看该作者
你以为commit之前的insert,oracle啥都没干么?等你commit才去写redo么?

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51
19#
发表于 2013-9-9 12:10 | 只看该作者
lgwr 触发条件, 3秒,1mb,1/3buffer。 如果楼主做过 oracle 的 大规模并发测试的话,应该能发现oracle 的 log buffer 能够增长到 上百兆。 这么大的原因 不是 commit的时候才开始写,而是写出的速度小于写入的 速度。多 个 lgwr能够解决这个问题。能够加快写出的速度。如果并发量小,日志产生速度小,1个就够了。 oracle 越来越牛了,在面向大规模并发的时候,写日志进一步优化啊。

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
20#
发表于 2013-9-9 15:11 | 只看该作者
huojunlu 发表于 2013-9-9 12:10
lgwr 触发条件, 3秒,1mb,1/3buffer。 如果楼主做过 oracle 的 大规模并发测试的话,应该能发现oracle 的 ...

使用道具 举报

回复

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

本版积分规则 发表回复

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