oracle 分区索引对交易流水表进行表分区后,索引如何创建

注册会员, 积分 179, 距离下一级还需 21 积分

目前一张3亿记录的表,按月分区,每个分区大约有1000W条数据。如果需求是按月查,那么就不用再创建分区字段索引。


但是现在需求是要按月(可跨月,一般2个月),周,日查,历史数据也要查的。
有没有必要再在分区字段上创建索引?本地索引还是全局索引?
统计信息该如何收集?收集的策略?

注册会员, 积分 161, 距离下一级还需 39 积分

按月分区 分区字段上建本地索引吧

注册会员, 积分 179, 距离下一级还需 21 积分

按月分区 分区字段上建本地索引吧

再问下,索引要如何维护呢?统计信息多久计算一次好呢?

注册会员, 积分 113, 距离下一级还需 87 积分

索引的维护,只需要定期用脚本检查,是否有失效索引就可以了,有失效索引需要重建索引。统计信息收集比较耗性能,一般放在晚上,要看这个表数据的写操作量大不大吧,大的话收集频率就要高一点。

注册会员, 积分 96, 距离下一级还需 104 积分

学习了,分区表比较感兴趣

中级会员, 积分 280, 距离下一级还需 220 积分

索引的维护,只需要定期用脚本检查,是否有失效索引就可以了,有失效索引需要重建索引。统计信息收集比较耗性能,一般放在晚上,要看这个表数据的写操作量大不大吧,大的话收集频率就要高一点。+1

注册会员, 积分 192, 距离下一级还需 8 积分

注册会员, 积分 161, 距离下一级还需 39 积分

再问下,索引要如何维护呢?统计信息多久计算一次好呢?

注册会员, 积分 179, 距离下一级还需 21 积分


没有关。这个有什么影响吗?貌似数据变化太大了,oracle自动收集就不起作用了。

注册会员, 积分 179, 距离下一级还需 21 积分

弄了几个方案给领导选择。

    随着表的不断增大,对于新纪录的增加、查找、删除等(DML)的维护也更加困难。对于数据库中的超大型表,可通过把它的数据分成若干个小表,从而简化数据库的管理活动。对于每一个简化后的小表,我们称为一个单个的分区

对于分区的访问,我们不需要使用特殊的SQL查询语句或特定的DML语句,而且可以单独的操作单个分区,而不是整个表。同时可以将不同分区的数据放置到不同的表空间,比如将不同年份的销售数据,存放在不同的表空间,即年的销售数据存放到TBS_年的销售数据存放到TBS_2002,依次类推,从而实现了分散存储,这将大大的简化大容量表的管理,提高查询性能及I/O并发等。

    对于外部应用程序来说,虽然存在不同的分区,且数据位于不同的表空间,但逻辑上仍然是一张表

    关于分区表的功能实际上同SQL server 中的分区表是同样的概念,只不过SQL server中的数据存放到了文件组,相当于Oracle概念中的表空间,

    需要将历史数据和当前的数据分开单独处理,比如历史数据仅仅需要只读,而当前数据则实现DML

  • 共性:不同的分区之间必须有相同的逻辑属性,比如表名,列名,数据类型,约束等,
  • 分区独立性:即使某些分区不可用,其他分区仍然可用。
  • 特殊性:含有LONG、LONGRAW数据类型的表不能进行分区
  • 提高查询性能:只需要搜索特定分区,而非整张表,提高查询速度
  • 节约维护时间:单个分区的数据装载,索引重建,备份,维护等将远小于整张表的维护时间。
  • 节约维护成本:可以单独备份和恢复每个分区
  • 均衡I/O:将不同的分区映射到不同的磁盘以平衡I/O,提高并发

7、 分区表建立四种方式语法

8、 分区索引的结构图

二、案例 - 创建分区表


案例: 创建分区表bxj_emp,以性别区分数据分区方式,将资料分别存放两个男女表空间中

1. 创建两个表空空间

2. 创建分区表,以sex栏位区分

3. 建立测试资料,男女各一笔


 

1. 创建本地分区索引

2. 解析计划中索引遍历方式

四、案例 - 全局分区索引


 4. 无分区条件时,索引遍历全部

我要回帖

更多关于 oracle 分区索引 的文章

 

随机推荐