查看: 13943|回复: 20

[性能调整] 【话题讨论】数据表定期删除如何最优

[复制链接]
论坛徽章:
3
优秀写手
日期:2014-07-12 06:00:13天枰座
日期:2015-10-14 15:55:37双鱼座
日期:2016-06-03 16:49:59
发表于 2014-7-8 15:16 | 显示全部楼层 |阅读模式
业务环境 :生产报表系统
应用介绍:TableA是全制程生产实时过站资料,但是只保留三天,作用是提供给实时电子看板等即时Report来做资料查询。每日的资料量大约有500W-800W
现在问题来了,目前数据删除的方式是写oracle Job,每天执行一次,删除三天前的数据,每次delete的时候就相当于删除500W-800W比资料,效能非常差,会产生产生大量的redo undo 回滚段,想了几个解决方法

1.触发器,但是担心效率问题,不采用
2.增加删除job的执行频率,降低每次删除的数据量,这个方法是易于实现的,但是换汤不换药,感觉还有好方法
3.TabelA建partition,按照时间区段建,每天一个,rebuild index为分区索引,每天cruncate三天前的分区。这样就是维护量过大

因为环境比较特殊,不太好测试,所以想问下是否有更好的方法来解决?
论坛徽章:
3
优秀写手
日期:2014-07-12 06:00:13天枰座
日期:2015-10-14 15:55:37双鱼座
日期:2016-06-03 16:49:59
 楼主| 发表于 2014-7-8 15:18 | 显示全部楼层
方法3是truncate 三天前的partition,写错了

使用道具 举报

回复
论坛徽章:
183
生肖徽章:狗
日期:2006-11-23 04:26:03生肖徽章:羊
日期:2007-09-26 17:08:21生肖徽章:马
日期:2007-09-26 17:08:49授权会员
日期:2007-12-31 19:14:41生肖徽章2007版:牛
日期:2008-03-28 10:02:30奥运会纪念徽章:柔道
日期:2008-04-30 16:28:44奥运会纪念徽章:垒球
日期:2008-05-12 21:28:28奥运会纪念徽章:体操
日期:2008-06-26 10:00:41奥运会纪念徽章:沙滩排球
日期:2008-07-27 12:41:59奥运会纪念徽章:艺术体操
日期:2008-07-30 11:09:47
发表于 2014-7-8 15:20 | 显示全部楼层
按天分区,truncate分区不需要重建本地索引

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
71
2011新春纪念徽章
日期:2015-05-19 13:15:06itpub13周年纪念徽章
日期:2014-09-28 13:09:30马上有对象
日期:2014-10-16 14:28:04马上加薪
日期:2014-11-10 10:43:10马上加薪
日期:2014-12-02 10:42:48马上有房
日期:2014-12-12 14:28:33马上有车
日期:2014-12-16 09:29:54马上加薪
日期:2014-12-22 17:00:50马上有对象
日期:2015-01-05 17:32:582010新春纪念徽章
日期:2015-01-23 11:01:59
发表于 2014-7-8 16:09 | 显示全部楼层
truncate分区,表的全局索引建成本地索引。

使用道具 举报

回复
论坛徽章:
12
ITPUB社区12周年站庆徽章
日期:2013-08-26 10:32:46优秀写手
日期:2013-12-24 06:00:12问答徽章
日期:2014-02-13 15:15:452014年新春福章
日期:2014-02-18 16:47:53马上加薪
日期:2014-02-18 16:47:53马上有车
日期:2014-03-27 15:59:39马上有车
日期:2014-04-08 13:08:04马上有钱
日期:2014-04-10 12:55:42
发表于 2014-7-8 16:12 | 显示全部楼层
这种需求肯定是用分区效率最高。
interval partition

使用道具 举报

回复
论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
发表于 2014-7-8 19:38 | 显示全部楼层
选3,如果有全局索引,这样删除:alter table t truncate partition part_1 update global indexes
不用你去维护
truncate 对分区表局部索引不会失效,正如三楼所言。。。

使用道具 举报

回复
论坛徽章:
0
发表于 2014-7-10 17:11 | 显示全部楼层
我也是推荐partition了, 但楼主担心维护工作量,维护工作量也可以想想办法 。
删除分区:可以做成job,只不过这个脚本(脚本A) 的内容是先生成truncate具体Parttion的语句(脚本B),然后再调用脚本B,最后删掉脚本B。
增加分区:11g的话试试interval partitions解决自动分区问题, 分区时如果没法用interval,也可一次多分些,或者也采用删除分区的方法。

使用道具 举报

回复
论坛徽章:
2
ITPUB学员
日期:2011-05-04 17:44:51优秀写手
日期:2013-12-18 09:29:11
发表于 2014-7-10 17:49 | 显示全部楼层
mark,持续关注中。

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-07-12 06:00:13天枰座
日期:2015-10-14 15:55:37双鱼座
日期:2016-06-03 16:49:59
 楼主| 发表于 2014-7-11 15:14 | 显示全部楼层
哎呀,上首页了

使用道具 举报

回复
论坛徽章:
0
发表于 2014-7-11 15:22 | 显示全部楼层
学习了,工作中也有这样的情况,采取的是第三种方法,每次多建一些分区

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

PostgreSQL中国大会,参会票抢购!

由 PostgreSQL中文社区与ITPUB联合主办的第九届《PostgreSQL 中国技术大会》将在北京隆重召开。PostgreSQL 作为功能最强的的开源关系型数据库之一,得到了越来越多企业的推广和运用,也越来越受到广大技术爱好者的欢迎和重视。这将是 PostgreSQL 的又一次交流盛会。
----------------------------------------
时间:2019年11月29~11月30日

点击报名>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表