Oracle如何快速操作千万级大表数据
来源:互联网 发布:excel表格数据没有了 编辑:程序博客网 时间:2024/05/18 22:15
Oracle如何快速操作千万级大表数据:
不管Oracle有多牛,一个上千万级记录数据的表操作起来还是很慢,是超级慢.最近公司处理一个接近一亿记录数的表,需要按时间删除前几个月的数据,这个就头疼了.就是统计此表的总记录数都要处理10多分钟,更不用说根据时间条件去删除数据了.现在说说我在操作大表时遇到的问题吧.
1.删除数据非常慢
刚开始我使用的是这个sql:
delete from sun_log_access_2016 where time<to_date('2016-7-1','YYYY-MM-DD');
这就是告诉oracle我要删除7月份之前的所有数据,oracle在处理这个sql的时候会去遍历那一亿数据(这就会花费一大部分时间),在遍历的事就计算每条记录的time然后判断,判断晚了之后再删除.在删除的过程中oracle还要记录redo日志(此日志是为了恢复删除的数据),这也需要花费大量的时间,若表中有索引,在删除的过程中oracle还要维护索引,这也会占用大量的性能.
用此sql在一亿数据中删除300万数据需要一两百分钟(可怕呀!!!)
2我修改后的删除方案
使用此sql:
delete from sun_log_access_2016 nologging where time<to_date('2016-7-1','YYYY-MM-DD');
指定nologging关键字,让oracle不记录日志
删除此表的索引(删除完了之后从建索引)
用此sql在一亿数据删除300万数据只需要10多分钟(这就是效率)
在删除过程中如果一次性删除数据量过大则会抛出undo异常,关注此博客->
http://blog.csdn.net/admin1973/article/details/54693066
查看oracle表空间使用情况:
http://www.cnblogs.com/askjacklin/archive/2012/06/04/2534571.html
查看oracle nologging关键字:
http://blog.csdn.net/sdl_ok/article/details/5474774
oracle删除千万级数据:
http://blog.sina.com.cn/s/blog_70b55b1a0100y5ek.html
- Oracle如何快速操作千万级大表数据
- oracle如何快速创建千万数量级数据
- mysql delete 千万数据操作
- Oracle如何快速、大量的插入数据
- SQL SERVER 快速插入千万条数据
- MySql 快速插入千万级大数据
- MySql 快速插入千万级大数据
- Oracle如何操作数据的加密
- Oracle如何操作数据的加密
- ORACLE 误更新数据如何操作
- 如何处理千万级以上的数据
- 千万级的数据如何优化
- MySQL误操作后如何快速恢复数据?
- MySQL误操作后如何快速恢复数据
- MySQL误操作后如何快速恢复数据
- MySQL误操作后如何快速恢复数据
- MySQL误操作后如何快速恢复数据
- DB2快速构建千万级性能测试基础数据
- SQL连接查询1 内联接查询
- Leetcode 3. Longest Substring Without Repeating Characters
- 1007. 素数对猜想 (20)
- 7.适配器模式(Adapter Pattern)
- Socket编程(C语言实现):bind()函数英文翻译
- Oracle如何快速操作千万级大表数据
- C语言文件操作
- POJ 2367 Genealogical tree
- JAVA开发者应关注的网站
- Mocks Aren't Stubs
- 搭建本地node服务器
- spark streaming广告点击系统需求分析与技术架构
- linux内核驱动 之 module_init解析 (上)
- reset.css在进行页面开发的时候,我们会对css进行一些初始化的设置与重设