今天有位同事说“传言一次删除量大,是更慢”,这句话有对的地方,但重要的是问个为什么,只有知道了它的原因才能更好地使用Oracle提供的技术。
我个人的理解是:删除量大小主要受限于UNDO表空间,因为执行DELETE每条记录时会将原始数据(镜像)放到UNDO中缓存,以防回滚,若UNDO空间小,一次删除量大,则会可能出现UNDO表空间不足的报错(ORA-30036: unable to extend segment by 8 in undo tablespace),(如果分批次数多)甚至是那个著名的错误(ORA-1555),且会经常需要进行日志与数据从cache刷新到磁盘的操作,这又会受限于磁盘IO。
我感觉是分批提交,还是一次性提交,是要具体问题具体分析的,对于UNDO空间大,且即使一次提交也不会撑爆的情况下,当然选择一次提交,这样的操作只进行一次,效率自然高,但对于UNDO空间小,或者一次提交的量太大,这种情况下可以选择分批提交,但同时也需要做好测试,找到分批量的一个平衡点,既满足于UNDO空间容量的限制,又不至于对应用性能产生太差的影响。
个人观点,欢迎高手拍砖!
分享到:
相关推荐
分批成本表(一).doc
基于电商配送中心人到货整箱拣选系统,考虑拣选器具和商品包装体积,构造以最大化里程节约量为目标的订单分批模型,提出基于启发式拣选路径下节约里程的订单分批算法,并结合某企业物流中心订单数据对该算法进行仿真...
批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。 下面是删除过程,数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以...
然后就对delete语句进行按均匀数据量分批delete的改写,这样的话,原来的删除一个表用一个语句,就可能变成几十行,如果archive的表有十几个甚至几十个,那我们的脚本篇幅就非常大了,增加了开发和维护的成本,不...
ORACLE INSERT INTO SELECT *FROM 分批提交例子
Android ListView 实现分批加载
从数据库中分批查询加载显示。从数据库中分批查询加载显示。从数据库中分批查询加载显示
分批发酵连续流加发酵和分批补料发酵优缺点比较.pdf
在项目中,ListView 用得非常普遍,但普通的方式每次加载的数据并未限定,如果获取到上千条或者上万条数据,一次加载完成后再显示的话,会给手机带来很大的负担,用户体验也会相当糟糕。 ListView 中的数据通过分批...
针对多目标等量分批柔性作业车间调度问题,提出了一种集成优化方法。构建了一种以完工时间最短、生产成本最低为优化目标的多目标等量分批柔性调度集成优化模型。提出并设计了一种改进的非支配排序遗传算法对模型加以...
采用分期建模,分批出场的方式,盈利之后更改盈利移动止损,分批出场
php+ajax实现图片动态分批加载,支持分页
使用POI、JXL导出大量的数据到Excel很容易造成内存溢出,而CSV采用流的方式将大数据分批并压缩导出
小型群发邮件系统 分批 分时 值得学习 分享一下
针对柔性分批有可能导致不规则的分批方案,提出了基于批量规则的有序分批方法,并按照最大批量规则,分析了影响确定最佳额定批量的主要因素,设计了一种基于工件工序时间分布的差异批量的分批方案。通过实例仿真,...
java一次性查询处理几百万数据解决方法 几百万数据是可以处理的 暂时还没试过几千万级的数据处理
B2C电商配送中心订单分批策略研究综述.pdf
分批成本表(一)
实现数据的分批加载,先加载一步分数据,而后又加载一部分数据。
Android中ListView控件实现数据的异步分批加载