Oracle Trancation和Mysql InnoDB在Commit的区别[转帖]_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3711 | 回复: 0   主题: Oracle Trancation和Mysql InnoDB在Commit的区别[转帖]        下一篇 
jfl
注册用户
等级:少校
经验:1112
发帖:95
精华:0
注册:2012-8-10
状态:离线
发送短消息息给jfl 加好友    发送短消息息给jfl 发消息
发表于: IP:您无权察看 2012-8-30 9:09:22 | [全部帖] [楼主帖] 楼主

因为项目的需要,这段时间对MySQL进行了系统化的
测试和研究,MySQL InnoDB相信大家都知道,给MySQL带来了很多方便之处,让MySQL这个小海豚拥有了和Oracle同样的商业竞争能力,那么现在我们就来说一下Oracle Trancation和MySQL InnoDB之间的一些心得体会

首先我们先来说一下Oracle执行COMMIT时要做那些工作:

COMMIT是一个非常快的操作,当我们发布commit命令时,真正困难的动作已经完成,


数据库中已经执行了数据更改,所以已经完成了99%的任务,例如:下列操作已经产生:

      1.在SGA(Buffer Cache)中已经生成了undo块;

      2.在SGA(Buffer Cache)中已经生成了产生改变的数据块和索引块;

      3.在REDO LOG BUFFER生成了前面两项的redo信息;

      4.依赖于前三项产生的数据量大小以及操作需要的时间,buffer中的数据可能已经

         有一部分输出到了磁盘;

      5.所有需要的锁已经获得;

     

      当执行COMMIT命令时,只执行如下操作:

     

      1.为事务生成SCN:SCN是ORACLE数据库的一种计时信息,用以保证事务的顺序性,

         同时还用于失败恢复和保证数据库的读一致性和检查点,无论何时何人提交,SCN

         自动加1;

     

      2.将事务相关的未写入redo log file中的redo信息从redo log buffer写入到redo log

        file,这才是真实的COMMIT,这步操作完成,说明我们已经完成COMMIT,事务从

        V$TRANSACTION中移除;

      

      3.V$LOCK中记录的SESSION关于该事务的锁会释放,其他需要这些锁的事务被唤醒;

     

      4.执行块清理,清理块头保存的事务信息;

然后我们来看一下MySQL:

InnoDB每次提交事务会刷新日志innodb_log到磁盘,而磁盘的速度,因此,建议不要频繁提交事务



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论