任务要求是:
1.定期删除21张表中的过时数据,这些表中超过百万级的有三张,十万级的大约8张,其余基本在万级别。
2.每次任务执行时删除N个月之前的数据,N由配置文件指定。每张表都有一个datetime类型的created_datetime字段,这个字段存储的时间如果在N月前就该被删除。
3.这些表数据存在关联性,如果删除出现异常,希望21张表一起回滚。根据这个要求产生两个方案,PlanA是21张一起将N个月前的数据删除,遇到异常一起回滚;PlanB是将N个月分为m天,一天天的删除,遇到异常则回滚一天的数据。现在对一张表填充两百万数据进行测试,PlanA大约需要6分钟,PlanB大约在8-9分钟。客户觉得耗时较长。请大家帮忙,看有没有什么稳妥快速的高招没?SQL方面的和Java方面的都行(但是DB动不了,这是没办法的事情)。
1.定期删除21张表中的过时数据,这些表中超过百万级的有三张,十万级的大约8张,其余基本在万级别。
2.每次任务执行时删除N个月之前的数据,N由配置文件指定。每张表都有一个datetime类型的created_datetime字段,这个字段存储的时间如果在N月前就该被删除。
3.这些表数据存在关联性,如果删除出现异常,希望21张表一起回滚。根据这个要求产生两个方案,PlanA是21张一起将N个月前的数据删除,遇到异常一起回滚;PlanB是将N个月分为m天,一天天的删除,遇到异常则回滚一天的数据。现在对一张表填充两百万数据进行测试,PlanA大约需要6分钟,PlanB大约在8-9分钟。客户觉得耗时较长。请大家帮忙,看有没有什么稳妥快速的高招没?SQL方面的和Java方面的都行(但是DB动不了,这是没办法的事情)。
解决方案 »
- 触发器里加判断
- 数据物理存储方式求扫盲
- ora-12500TNS无法启动专用服务器进程
- tns启动时报错急求解决方法
- Oracle 9i isqlplus打开为什么是乱码?
- Oracle中,如何计算表达式的值(抢分了)
- 优化一个SQL语句200分
- 只有数据文件,如何恢复Oracle数据库中的数据?急,在线等
- txlicenhe(马可), onejune4450(中文字符) 还有点问题
- 有没有比这更简便的方法,实现同一效果。
- xp客户端通过程式无法访问oracle数据库,DNS解析和tnsping也可以通
- MySQL 8.0相关问题求救:本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
即使能动表结构让你在线重定义成分区表,也没办法,分区一级的操作都是DDL,所以它们非常快,但是Oracle中的DDL都是隐式提交的,所以无法保持多表数据一致,除非你自己先备份好数据,但这么一来,备份数据又要花一定时间。