国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

删除一张大表时为什么undo占用空间接近原表两倍

发布时间:2019/09/23标签:   镜像    点击量:

原标题:删除一张大表时为什么undo占用空间接近原表两倍
概述Oracle中,undo是保留记载的前镜像的,我懂得假如delete from t;那发生的undo应当和t表的巨细差未几,但测试成果却差的很远,undo发生的量基础上是t表巨细的两倍,不晓得为甚么,岂非我懂得错了?上面看下这个惊奇的景象。删除一张大表时为什么undo占用空间接近原表两倍?1. delete了8个小时删除一张大表时为什么undo占用空间接近原表两倍?2. 原表巨细能够发觉原表也就16.5G,须要删的数据是9G。删除一张大表时为什么undo占用空间接近原表两倍?3. 检查undo块这里忘却截图了,然而是有300多万个块,检查对应占用的undo空间是占了30多G,远远超越原表的巨细。为甚么undo会占用这么多空间?从道理上讲,UNDO表空间,有四个感化: 回滚事件; 分歧性读; 事件规复; 闪回查问求教杨长老失掉的一些信息:关于回滚事件,他保留的是修正值的前镜像,留神,不是修正的数据块,或许整行记载的镜像。除了斟酌表巨细以外,另有表上索引的总巨细,能否存在触发器,物化试图日记等等。别的,看看数据库级的supplemental log能否翻开。undo是记载事物修正前镜像的,而delete的前镜像就是表中存储的数据。固然有一些能够会招致前镜像比表中的原始数据大,比方紧缩,11g后存在的非空默许值。别的,undo的记载必定有一些额定的本钱,比方rowid,scn等信息,假如表中行记载自身很小,那末这些本钱就会显得十分凸起。假如要十分准确地晓得,多进去的每一个信息是几多,确切有些艰苦,但经过这个试验,最少能懂得到,一次delete操纵删除的容量,UNDO为了保留前镜像,须要盘踞的容量,要比他多很多,这就是为甚么不推举一次delete操纵删除过量数据的起因之一。总之,关于delete大批数据的情形必定要分批停止,情愿时光花多点,危险也会少许多,幸免不测招致回滚而形成的数据库卡顿。【编纂推举】详解Oracle数据库主键SYS_GUID()对于Oracle数据库Kfk: Async Disk IO等候变乱深度剖析Oracle 推出了完整自治的操纵体系Oracle公布寰球最快的数据库呆板Exadata X8MOracle和MySQL的JDBC究竟有多慢?【义务编纂:赵宁宁 TEL:(010)68476606】 点赞 0

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号