Welcome 微信登录

首页 / 数据库 / MySQL / Oracle Database Partition 技术

Partition介绍

分区就是将一个非常大的table或者index 按照某一列的值,分解为更小的,易于管理的逻辑片段---分区。将表或者索引分区不会影响SQL语句以及DML语句,就和使用非分区表一样,每个分区拥有自己的segment,因为,DDL能够将比较大的任务分解为更小的颗粒。分区表只有定义信息,只有每个存放数据的分区才有各自的segment。就好象拥有多个相同列名,列类型的一个大的视图。

收益

使用分区功能,可以提供的收益,可以从下面几个方面阐述:

性能

可以减少检索数据的总量,因为拥有partitionpruing 以及partition-wise joins。partition pruing:当谓词中(连接条件)带有partition key的时候,OracleDatabase可以自动的将不需要的partition裁剪掉,不需检索额外的partition 。partition-wise joins:两个表做join的时候,partitionkey 作为连接条件,OracleDatabase可以将连接操作分成多个单表和每个partition的join piece。对于单线程来说,每次join的工作量小了,可以减少系统的开销。而对于多线程来说,每个join piece 都可以使用多线程,可以加快检索时间(但是消耗更多的cpu)。

管理

使用分区技术,可以将管理维护大表或者索引的操作,分成多个维护片段,可以更灵活的管理和维护这些schema object。举个具体的例子来说,这里有一个装有重要文件的重达100公斤的箱子,你需要将它搬到办公室去,这是非常累的,甚至是无法达成的。但是如果使用了分区技术,等于将100公斤的箱子10等分,这时候,就可以每次搬一个小箱子即可。

可用性

因为分区表中的每个分区在物理层面上都是隔离的------每个分区拥有自己的segment。所以当其中的一个分区不可用的时候,不会影响另外的分区。

Partition 分类

Partition可以简单分为范围、哈希、列表三种方式。以下说明了每种分区方式的适用场景。

Range Partitioning 适用场景

  • 表中的数据经常被执行范围扫描,比如说订单时间。这个时候使用Range Partitioning OracleDatabase可以提供Partition pruing 功能,大大减少了查询时间。
  • 维护定期清理的数据,比如说,应用需求,为了保证效率,只要求12个月内的在线数据。如果使用了Range分区,可以在每个月数据来的时候使用分区交换的功能,将新的数据加载到分区表中,然后直接将最老的那个月的数据删除,或者归档。分区使用的是多个segment,所以这些操作都是非常有效率的。如果单表,那么可能需要dml语句,查询后再删除数据,性能非常低下,备份操作也是如此。如果使用Range分区,那么可能只需要一个ddl语句即可。
  • 维护大表数据。一个非常大的表数据的备份,恢复,消耗都是非常巨大的。但是如果使用Range分区,按照时间维护数据的性能将会有很大的提升。比如说备份操作,假设使用数据泵来备份某一个月份的数据,如果是非分区表,需要使用查询语句。但是如果使用Range分区,则可以省略掉查询这部分的操作,保证了效率。
Range Partitioning 比较适用时间列,当然也有其他的适用场景,比如说那些连续的Column Value映射的行有特殊意义的,人的年龄、商品价位等。11g开始,支持一种新的RangePartition方式,Interval partition,它可以根据选项自动创建需要的分区。

List Partitioning适用场景

  • 相对于Range Partition ,适合分散的Column Value 映射的行有特殊意义的情况。比如说统计国内数据,可以使用区域来创建分区。这样可以在加载或者统计区域数据的时候更加有效率。

Hash Partitioning适用场景

  • 这个分区比较适合平均I/O的场景。比如说,有一个大表,经常被访问,那么大表所在的表空间上面的I/O操作将非常频繁,这个时候可以将Hash Partition 放在不同的表空间上(表空间在不同的物理磁盘上),平均每个磁盘上面的I/O负载。防止单一磁盘I/O负载过高的情况。(Hash partition 也支持partition pruing ,但这无疑是没有意义的)
MySQL带参数的存储过程小例子Oracle备份时发生断电的对策相关资讯      Oracle入门基础教程  Oracle Partition  Oracle 技术 
  • 详述Oracle 11g中的Reference   (05/26/2015 09:25:46)
  • Linux x86 and x86-64 系统中的  (08/05/2014 10:12:29)
  • Oracle系统繁忙时,快速定位  (02/18/2013 19:31:55)
  • 详解Oracle partition分区表  (05/06/2015 10:47:08)
  • Oracle 中极易混淆的几个 NAME 的  (07/29/2014 21:04:17)
  • Oracle数据库用SQL实现快速分页  (12/29/2012 14:02:30)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图