分区

一、分区的特征

1、partition key

分区键,是指用来设置分区的一个或多个列。

2、partition strategies

分区策略,是指控制数据库如何把数据放进分区里面。

2.1、Range Partitioning:顾名思义,根据分区键的范围确定数据行在哪一个分区里。如:

CREATE TABLE time_range_sales
( prod_id NUMBER(6)
, cust_id NUMBER
, time_id DATE
, channel_id CHAR(1)
, promo_id NUMBER(6)
, quantity_sold NUMBER(3)
, amount_sold NUMBER(10,2)
)
PARTITION BY RANGE ( time_id)
(PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),
PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')),
PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')),
PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE)
);

2.2、List Partitioning:顾名思义,相同的单独值存放在指定的分区。如:

CREATE TABLE list_sales
( prod_id NUMBER(6)
, cust_id NUMBER
, time_id DATE
, channel_id CHAR(1)
, promo_id NUMBER(6)
, quantity_sold NUMBER(3)
, amount_sold NUMBER(10,2)
)
PARTITION BY LIST (channel_id )
(PARTITION even_channels VALUES (2,4),
PARTITION odd_channels VALUES (3,9)
);

2.3、Hash Partitioning:根据一个内部的散列算法,把输入值映射到特定的分区中。如:

CREATE TABLE hash_sales
( prod_id NUMBER(6)
, cust_id NUMBER
, time_id DATE
, channel_id CHAR(1)
, promo_id NUMBER(6)
, quantity_sold NUMBER(3)
, amount_sold NUMBER(10,2)
)
PARTITION BY HASH (prod_id)
PARTITIONS 2;

二、分区的类型

2.1、分区表

2.2、分区索引.索引从分区的角度,可以分为以下类型:


2.2.1、Local Partitioned Indexes

Local Partitioned Indexes依赖于所定义的表,跟表分区拥有相同的分区数量、相同的列、相同的绑定。同时,各个分区之间具有相对的独立性,如果其中一个分区发生改变,只会影响到该分区。你不能显示地删除子分区索引或往分区索引中添加分区,这些只能对表子分区进行改变,进而影响到索引分区。当然,该局部索引也可以是位图索引。

如果SQL语句中的WHERE中包含了分区键列,则数据库就会根据该语句中的键列识别分区,而忽略其他分区。这叫 partition elimination (或 partition pruning )。

另外,局部分区索引还分为Local prefixed indexes和Local nonprefixed indexes两种。Local prefixed indexes表示分区键将会在索引定义的头部。

实例:CREATE INDEX hash_sales_idx ON hash_sales(time_id) LOCAL;


2.2.2、Global Partitioned

全局分区索引,是独立于所在表分区的的索引分区,一个全局索引分区可以指向多个表分区。全局分区索引不能是位图索引,其可以采用range或hash的分区策略。实例:

CREATE INDEX time_channel_sales_idx ON time_range_sales ( channel_id )
GLOBAL PARTITION BY RANGE ( channel_id )
(PARTITION p1 VALUES LESS THAN (3),
PARTITION p2 VALUES LESS THAN (4),
PARTITION p3 VALUES LESS THAN (MAXVALUE));


3.Partitioned Index-Organized Tables

你可以采用三种策略来对索引组织表来进行分区,需要注意的是:

  • 分区键必须是主键的子集;
  • secondary index可以是局部的,也可以是全局的;
  • OVERFLOW指定的溢出区必须跟表分区一样。

对于索引组织表来说,位图索引都支持,不管其是否分区。


---------------------------------------------------------------------------------------------------
如有错误,欢迎指正


技术交流QQ:1732035211
技术交流邮箱:1732035211@qq.com
新浪微博:数据库小菜鸟http://weibo.com/u/3132578390

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值