关于Oracle存储过程中是否需要写commit的问题
来源:互联网 发布:linux运维是什么意思 编辑:程序博客网 时间:2024/06/05 19:13
是否需要在存储过程中写commit主要要依据需求:
(1) 如果是不需要在存储过程中进行提交,而是由调用程序负责提交或者回滚,那么不需要在存储过程中commit或者rollback.毕竟spring框架已经可以帮助我们自动实现事务的控制;
(2) 如果不想由调用程序负责提交或者回滚,那么就应该在存储过程中进行commit或rollback;
另外,如果是纯后台数据库开发,一定要写.只是写的时机同样是分为两种,一种是写在过程里面;另一种是写在调用存储过程之后.
而之所以要写commit的原因是,Oracle的默认事务级别是READ COMMITED;默认情况下,Oracle是不会自动提交的,需要手动提交才ok.
注意:
并不是每个INSERT/UPDATE语句后都需要COMMIT一次.因为数据量很大的话,这样效率会很差.而每次执行完十几万条INSERT/UPDATE后做一次COMMIT,也是不可取的;
比较习惯用的方法是:每做完5000条或者1w条,或者2w条,做一次COMMIT,效率一定比“每个INSERT/UPDATE语句后都COMMIT一次”快。但是具体5000条快,还是1w条快,还是2w条快,需要根据业务需求确定一个合适的量。
所以,如果使用游标的话,可以通过设置变量的方法,来实现每处理一定的行数后手动commit提交事务.
参考链接:
(1) 存储过程里使用Commit的火候
(2) ORACLE数据库事务隔离级别
阅读全文
0 0
- 关于Oracle存储过程中是否需要写commit的问题
- ORACLE存储过程调用存储过程时commit的问题
- ORACLE子存储过程中的COMMIT语句引发的问题
- [PL/SQL] 请教大家一个问题,存储过程中需要几个commit?
- 关于oracle存储过程中创建动态表的问题
- 关于oracle存储过程的问题
- 关于 Oracle外键列上是否需要索引问题?
- 关于Oracle外键列上是否需要索引问题
- mysql---写存储过程需要的知识点
- Oracle存储过程的commit和rollback,sqlerrm
- where子句在编写过程中需要注意的问题
- 关于Oracle存储过程中的IN子句传参的问题(不能直接传字符串,需要处理)
- 关于oracle的commit
- oracle 中触发器,commit 的问题
- 在开发过程中为什么需要写存储过程
- 关于在 oracle trigger(insert)事件中调用存储过程的问题
- 写存储过程中涉及到一些游标的问题
- 用mysql写存储过程中遇到的问题
- 车站分级 洛谷p1983
- jQuery中length慢
- unity build webGL失败,Build error with IL2CPP 解决办法
- Oracle数据库概述
- php 爬虫的几种方式
- 关于Oracle存储过程中是否需要写commit的问题
- .Net4.0 任务(Task)
- Tkinter PhotoImage 踩坑记录
- 【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产
- JavaScript高级程序设计:第9.10章阅读笔记
- 十、matplotlib系列---pyplot散点图的绘制
- elasticsearch配置详解
- fpga hdmi接收和发送部分调试(2)
- 递归之二分查找