删除大数据量表的列的一个好方法
来源:互联网 发布:hp1216网络扫描驱动 编辑:程序博客网 时间:2024/05/17 09:29
很多开发的朋友可能遇到过这样的情况:一个数据量很大的表,业务需要添加一个字段(添加字段很快),在测试环境测试以后,还想再做一遍,就需要删除这个字段,这时纠结的问题发生了:删除字段是如此漫长,而且最后经常会无缘无故中断了,白花花的几个小时就这么浪费了,还搞的心情很烦躁。。。。今天发现了一个好方法,这里跟大家分享一下:造成删除字段失败的很大原因是回滚段被耗尽,下面看看我的测试:
1. 建两个结构和数据量一样的表test2,test3,数据量约为500W;
2. 用一般的方法去删除字段:
SQL> alter table test2 drop column object_id
3. 用sql观察回滚段的使用情况:
SELECT T.TABLESPACE_NAME,
T.STATUS,
ROUND(SUM(T.BYTES)/1024/1024,2) UNDO_SIZE
FROM DBA_UNDO_EXTENTS T
GROUP BY T.TABLESPACE_NAME,T.STATUS;
你会发现ACTIVE状态的回滚区越来越多,逐渐耗尽undo空间,最后耗时2分15秒
4. 用新方法删除字段
SQL> alter table test3 drop column object_id checkpoint 100000;
sql的意思是没10W笔记录会提交一次,释放回滚段,再用上面的sql观察active状态的回滚段,你会发现每当ACTIVE增长到一定的值后又变小了,就说明回滚段在不断回收active状态的区,同时增大UNEXPIRED和EXPIRED状态的区。要知道UNEXPIRED和EXPIRED状态的区是可以重新利用的,而active状态的区是不能够重新利用。从而保证了回滚段不会被撑爆。
最后耗时2分10秒,虽然时间没有提高多少,起码可以降低白白等上几个小时后操作失败的风险。。。。。。
- 删除大数据量表的列的一个好方法
- DB2 删除大数据量表方法
- DB2 删除大数据量表方法
- mysql大数据量表的处理方法(拆表,分区)
- 大数据量表删除插入
- truncate大数据的删除,或者删除大数据列
- Oracle实现自动删除大数据量表7天前的数据
- Oracle中大数据量表的管理
- 大数据量表的复杂查询
- 针对大数据量表的优化查询
- 针对大数据量表的优化查询
- 针对大数据量表的优化查询
- 大数据量表的优化查询 - 发条
- 大数据量表的优化查询
- oracle如何最快的删除大数据量表中的多个字段
- 工作中遇到的一个SqlServer2000中大数据量表的检索问题
- Oracle中删除大数据量表
- oracle存储过程实现大数据量表的复制
- C语言小程序(七)、石头剪刀布
- CF15C Industrial Nim
- Redis教程
- poj1204(AC自动机)
- POJ 1625(ac自动机+dp+高精度)
- 删除大数据量表的列的一个好方法
- 《数据通信与网络》笔记--IPv4 VS IPv6
- [Java]Very simple problem
- uploadify+struts问题 无法传入action的问题
- VS2010打包MFC程序
- APK的反编译工具,Apktool,Dex2jar,JD-GUI等
- eclipse中自动提示不光光是.,极大帮助你
- 在Visual studio 2010 上搭建Silverlight 5 3D (SolarWind)环境
- Redis常用命令