oraclePartitioning

oracle分区提高了大型数据库应用的可管理型、性能和可用性

分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。

分区是一个运行将表、索引和索引组织表差拆分更小的块,从而实现对这些数据库对象耕细粒度的管理和访问。Oracle提供了全面的分区方案,可满足各种业务需求,由于分区在sql语句中完全透明,分区可用于任何应用,从打包的OLTP应用到数据仓库。

image-20200803183715797

优点

  • 增加可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用
  • 维护方便:如果表的某个分区出现故障,只需要修复这个分区即可
  • 均衡io:可以把不同的分区映射到磁盘以平衡io,改善系统性能
  • 该晒查询性能:对分区对象的查询可以仅搜索自己关系的分区,提供检索速度

缺点

  • 已经存在的表没有方法直接转换为分区表,不过oracle提供了在线重新定义表的功能

分区方法

范围分区

  1. 范围分区是通过对数据中的某个值的范围就行分区,根据某个值的范围决定存储在那个分区上,比如根据序号,创建日期等,是一种常用的分区方式

hash分区(散列分区)

散列分区为通过制定分区编号来均匀分布数据的一种分区类型,通过I/O设备上进行散列分区,使得这些分区大小一致

list分区(列表分区)

当你需要明确地控制如何将行映射到分区时,就使用列表分区方法。与范围分区和散列分区所不同,列表分区不支持多列分区。如果要将表按列分区,那么分区键就只能由表的一个单独的列组成,然而可以用范围分区或散列分区方法进行分区的所有的列,都可以用列表分区方法进行分区。

范围-散列分区(复合分区)

有时候我们需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法(注意:先一定要进行范围分区)

范围-列表分区(复合分区)

范围和列表技术的组合,首先对表进行范围分区,然后用列表技术对每个范围分区再次分区。与组合范围-散列分区不同的是,每个子分区的所有内容表示数据的逻辑子集,由适当的范围和列表分区设置来描述。(注意:先一定要进行范围分区)

常用操作

查询是否支持分区

oracle企业版支持此功能,sql查询为

  1. select * from v$option where parameter = 'Partitioning';