Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1345021
  • 博文数量: 169
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3800
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-30 13:00
个人简介

About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc

文章分类

全部博文(169)

文章存档

2024年(24)

2023年(28)

2022年(43)

2020年(62)

2014年(3)

2013年(9)

分类: Oracle

2020-06-29 00:06:25

接PART1:http://blog.chinaunix.net/uid/7655508.html

11g interval分区:

1)11g之前创建日期范围分区,经常是预先创建一部分,等即将用完重新增加,如果一开始分区加了max分区,则还需要split,在管理上是非常麻烦的。
2)11g interval分区彻底解决了这个麻烦,它支持DATE/TIMESTAMP/NUMBER类型的分区,按照指定格式,根据插入的数据动态创建分区,不需要人工add分区,提高了管理和维护效率。



11g虚拟列分区:

1)11g之前,如果需要按照列的函数运算进行分区,除非额外增加一列,否则无法实现。
2)11g支持虚拟列进行分区,增强了分区的功能,比如按照日期的月份1-12每年12个分区,循环使用,则可以采用本例子的方式进行分区。
3)虚拟列分区只支持内置函数,不支持自定义函数。




分区pruning及其注意点:

1)Partition pruning是分区的重要特性,它可以根据where条件中的分区键的范围,查找需要的分区,避免不必要的分区扫描,从而提高效率。
2)Partition pruning根据分区键的查询条件,分为静态pruning和动态pruning,其中静态pruning在执行计划中的Pstart和Pstop显示具体分区范围,动态pruning显示KEY。

 

3)正确的静态分区pruning和索引的使用类似,不要对分区键进行运算或者使用函数,分区的范围条件类型应该与分区键一致,避免对分区键隐式类型转换。



分区索引类型:

  
1)Local partition index是随表对索引完成相应的分区,每个表分区都有一个索引分区,而且只索引该分区,分区表尽量使用局部分区索引。它分为前缀和非前缀局部分区索引,分区数目与表分区数目一致。
2)Global partition index是按区间对索引进行分区,一个索引分区可对应多个(或所有)表分区,分区数目可以和表分区数目不一致。

 

分区索引选择策略:
?OLTP系统中的建议
–Global和unique local index性能优于

 nonunique local index

–Local index提供了更好的可用性
?数据仓库系统中的建议
–Local index更适合于数据装载和分区维护
–在大量数据统计时,能充分利用Local index并行查询能力
?在性能、高可用性和可管理性之间进行平衡


分区索引注意点:
当对分区进行move、splite、truncate、drop等DDL 操作时,Global partition index会失效,最好加上update global indexes。




分区表设计原则:
1)表的大小:当表的大小超过2GB,或对于OLTP系统,表的记录超过1000万,持续增长,都应考虑对表进行分区。
2)数据访问特性:基于表的大部分查询应用,只访问表中少量的数据。对于这样表进行分区,可充分利用分区排除无关数据查询的特性。
3)数据维护:按时间段删除成批的数据,例如按月删除历史数据。对于这样的表需要考虑进行分区,以满足维护的需要。
4)数据备份和恢复: 按时间周期进行表空间的备份时,将分区与表空间建立对应关系。
5)只读数据:如果一个表中大部分数据都是只读数据,通过对表进行分区,可将只读数据存储在只读表空间中,对于数据库的备份是非常有益的。
6)并行数据操作:对于经常执行并行操作(如Parallel Insert,Parallel Update等)的表应考虑进行分区。
7)表的可用性:当对表的部分数据可用性要求很高时,应考虑进行表分区。
阅读(7716) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~