社区
Oracle
帖子详情
关于oracle中的commit
编程小强
2013-03-06 07:13:53
我现在有个需求:
我的存储过程大概有6000行代码,里面有insert操作一个批次不超过5000条吧,
执行到最后如果成功则commit,否则rollback。
不知道这样会不会有问题,请大家尽情发言。
...全文
447
8
打赏
收藏
关于oracle中的commit
我现在有个需求: 我的存储过程大概有6000行代码,里面有insert操作一个批次不超过5000条吧, 执行到最后如果成功则commit,否则rollback。 不知道这样会不会有问题,请大家尽情发言。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangxinde317
2013-03-08
打赏
举报
回复
谈到这个问题,就要说说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.执行块清理,清理块头保存的事务信息; 第2点看出大数据量commit时涉及到对服务器io的考验。 但5000条理论上是肯定没问题的。
编程小强
2013-03-08
打赏
举报
回复
我就想让一个比较大的业务事务只有一个提交和commit,这样就不用去做无意义的删除回滚了。
Cryking
2013-03-07
打赏
举报
回复
保证你的业务完整性就可以了,也就是当失败一部分的时候,不会影响你的业务完整性
linwaterbin
2013-03-07
打赏
举报
回复
引用 3 楼 l2tp1012 的回复:
我的意思是一个代码量超过5000行,插入操作大概5000左右的存储过程用一个commit应该没问题吧?
没问题
crazyleeyang
2013-03-07
打赏
举报
回复
commit跟你代码多少行没啥关系,你只要控制好逻辑机构就行;
编程小强
2013-03-07
打赏
举报
回复
我的意思是一个代码量超过5000行,插入操作大概5000左右的存储过程用一个commit应该没问题吧?
pei_zhenxi
2013-03-06
打赏
举报
回复
5000条没啥问题吧
ruihuahan
2013-03-06
打赏
举报
回复
5000 条的话,一次提交应该问题不大,但和服务器性能、当时的负载有关,可测试一下。
oracle
中
commit
的用法
1、
commit
(提交)的作用
oracle
的
commit
详解
commit
在数据库编程的时候很常用,当你执行DML操作时,数据库并不会立刻修改表
中
数据,这时你需要
commit
,数据库
中
的数据就立刻修改了,如果在没有
commit
之前,就算你把整个表
中
数据都删了,如果rollback的话,数据...
oracle
中
commit
命令行,
Oracle
数据库
中
commit
和rollback命令
在这里我只简单介绍一下这两个命令,只是我在使用的过程
中
用到了,所以就在这里提一提,如果大家对这个感兴趣的话,可以去搜索一些更多的介绍,欢迎分享出来~~一个数据库事务起始于一个SQL语句,
中
止于以下4种事件之...
commit
在
oracle
中
,
oracle
中
的
commit
的操作
commit
,对于
oracle
来说,是一个提交的动作,也就是说,你把你对
oracle
数据库的修改,提交给数据库,告诉数据库,你已经确定要修改这些东西了,然后数据库看到了你的提交,就把内容修改了其实在
commit
里面呢,涉及到...
oracle
中
commit
的作用
oracle
的
commit
就是提交数据(这里是释放锁不是锁表),在未提交前你前面的操作更新的都是内存,没有更新到物理文件
中
。 执行
commit
从用户角度讲就是更新到物理文件了,事实上
commit
时还没有写date file,而是记录了...
Oracle
17,086
社区成员
55,238
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章