2016-12-13 14 views
0

我有一个分区表“报警”如下从分区中删除一些数据会影响本地索引?

  • 按范围(版本)分区;版本:1,2,3 ...
  • 每个分区有版本本地索引
  • 每个分区都列的组合作为本地索引
  • 版本是一个本地索引
  • 没有全球性的指数

由于一些企业的约束,

  • 我需要从每个版本(但不是所有分区的数据)删除一些数据。
  • 没有更新会发生在旧版本中,只能选择每天的基础上
  • ,我将新版本的数据

所以为了这个,我会删除如下:

delete /*+ full(alarms) parallel(alarms,4)*/ from alarms where version <= (number) and alarm_type = 'type1'; 

这不会删除所有的分区。但可能每个1个月,这个分区将是空的。

所以我有一个程序在所有版本上循环,所有的空分区将被删除名称。

我的问题是:直到分区不为空

  • 这可能会影响性能?
  • 我需要重建索引每个删除?

回答

0
  1. 这可能会影响性能?

我不确定您的意思。如果你的意思是“从表中删除数据会影响该表的其他并发用户”,答案是肯定的,尽管不可能说明影响的程度。如果你的意思是“从表格中删除数据会对访问表格产生长期影响”,我的答案是应该只有很小的长期影响。

  1. 我需要重建索引每次删除吗?

从表中删除数据是数据库中的正常活动,并且索引将被正确维护。

祝你好运。

+0

感谢鲍勃!对于第一点,我的意思是dml操作性能,特别是从受影响的分区中选择数据。并从同一分区删除一些其他数据..等等。对于第二点,你的回答是关键的! –

+0

我认为收集这张表的统计信息可能会有所帮助,因为每天都会创建一个新版本(分区),并且旧分区可能会每天更新/删除 –

+0

您应该定期在任何有重大变化的表格上收集统计信息到它。 –