oracle 分区表完全讲解.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Βιβλιοθήκη Baidu
• CREATE TABLE PROBLEM_TICKETS ( PROBLEM_ID NUMBER(7) NOT NULL PRIMARY KEY, DESCRIPTION VARCHAR2(2000), CUSTOMER_ID NUMBER(7) NOT NULL, DATE_ENTERED DATE NOT NULL, STATUS VARCHAR2(20) ) PARTITION BY LIST (STATUS) ( PARTITION PROB_ACTIVE VALUES ('ACTIVE') TABLESPACE PROB_TS01, PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
• 按时间划分
• CREATE TABLE ORDER_ACTIVITIES ( ORDER_ID NUMBER(7) NOT NULL, ORDER_DATE DATE, TOTAL_AMOUNT NUMBER, CUSTOTMER_ID NUMBER(7), PAID CHAR(1) ) PARTITION BY RANGE (ORDER_DATE) (
分区表的分类
1、范围分区 2、列表分区 3、散列分区 4、组合范围散列分区 5、复合范围散列分区
范围分区
范围分区将数据基于范围映射到每一个分 区,这个范围是你在创建分区时指定的分 区键决定的。这种分区方式是最为常用的, 并且分区键经常采用日期。如:将销售数 据按照月份进行分区
使用范围分区时,需要注意以下几个规则
范围分区例1
假设有一个CUSTOMER表,表中有数据 200000行,我们将此表通过CUSTOMER_ID 进行分区,每个分区存储100000行,我们 将每个分区保存到单独的表空间中,这样 数据文件就可以跨越多个物理磁盘
• CREATE TABLE CUSTOMER ( CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY, FIRST_NAME VARCHAR2(30) NOT NULL, LAST_NAME VARCHAR2(30) NOT NULL, PHONE VARCHAR2(15) NOT NULL, EMAIL VARCHAR2(80), STATUS CHAR(1) ) PARTITION BY RANGE (CUSTOMER_ID) ( PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 )
分区表
分区表概述
• 当表中的数据量不断增大,查询数据的速 度就会变慢,应用程序的性能就会下降, 这时就应该考虑对表进行分区。表进行分 区后,逻辑上表仍然是一张完整的表,只 是将表中的数据在物理上存放到多个表空 间(物理文件上),这样查询数据时,不至于 每次都扫描整张表。
• 从应用程序的角度来看,分区后的表与非 分区表完全相同,使用 SQL DML 命令访问 分区后的表时,无需任何修改。
4、均衡I/O:可以把不同的分区映射到磁盘 以平衡I/O,改善整个系统性能。
分区技术提高可用性
• 分区的数据库对象具有分区独立性。该分区独立性 特点可能是高可用性战略的一个重要部分,例如, 如果分区表的分区不能用,但该表的所有其他分区 仍然保持在线并可用。那么这个应用程序可以继续 针对该分区表执行查询和事务处理,只要不是访问 那个不可用的分区,数据库操作仍然能够成功运行。 数据库管理员可以指定各分区存放在不同的表空间 里,从而让管理员独立于其它表分区针对每个分区 进行备份与恢复操作。 还有,分区功能可以减少计 划停机时间。性能由于分区功能得到了改善,使数 据库管理员在相对较小的批处理窗口完成大型数据 库对象的维护工作。
• 1、每一个分区都必须有一个VALUES LESS THEN子句, 它指定了一个不包括在该分区中的上限值。分区键 的任何值等于或者大于这个上限值的记录都会被加 入到下一个高一些的分区中。
• 2、所有分区,除了第一个,都会有一个隐式的下 限值,这个值就是此分区的前一个分区的上限值。
• 3、在最高的分区中,MAXVALUE被定义。MAXVALU E代表了一个不确定的值。这个值高于其它分区中 的任何分区键的值,也可以理解为高于任何分区中 指定的VALUE LESS THEN的值,同时包括空值。
PARTITION part1 VALUES LESS THEN (1000) T ABLESPACE Part1_tb,
PARTITION part2 VALUES LESS THEN (MAXVA LUE) TABLESPACE Part2_tb );
列表分区
该分区的特点是某列的值只有几个,基于 这样的特点我们可以采用列表分区
• PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE( '01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01,
• PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE( '01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,
什么时候使用分区表
1、表的大小超过2GB。 2、表中包含历史数据,新的数据被增加都
新的分区中。
表分区有以下优点
1、改善查询性能:对分区对象的查询可以 仅搜索自己关心的分区,提高检索速度。
2、增强可用性:如果表的某个分区出现故 障,表在其他分区的数据仍然可用;
3、维护方便:如果表的某个分区出现故障, 需要修复数据,只修复该分区即可;
• PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE( '01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03
•)
• MAXVALUE • CREATE TABLE RangeTable
( idd INT PRIMARY KEY , iNAME VARCHAR(10), grade INT ) PARTITION BY RANGE (grade) (
• CREATE TABLE PROBLEM_TICKETS ( PROBLEM_ID NUMBER(7) NOT NULL PRIMARY KEY, DESCRIPTION VARCHAR2(2000), CUSTOMER_ID NUMBER(7) NOT NULL, DATE_ENTERED DATE NOT NULL, STATUS VARCHAR2(20) ) PARTITION BY LIST (STATUS) ( PARTITION PROB_ACTIVE VALUES ('ACTIVE') TABLESPACE PROB_TS01, PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
• 按时间划分
• CREATE TABLE ORDER_ACTIVITIES ( ORDER_ID NUMBER(7) NOT NULL, ORDER_DATE DATE, TOTAL_AMOUNT NUMBER, CUSTOTMER_ID NUMBER(7), PAID CHAR(1) ) PARTITION BY RANGE (ORDER_DATE) (
分区表的分类
1、范围分区 2、列表分区 3、散列分区 4、组合范围散列分区 5、复合范围散列分区
范围分区
范围分区将数据基于范围映射到每一个分 区,这个范围是你在创建分区时指定的分 区键决定的。这种分区方式是最为常用的, 并且分区键经常采用日期。如:将销售数 据按照月份进行分区
使用范围分区时,需要注意以下几个规则
范围分区例1
假设有一个CUSTOMER表,表中有数据 200000行,我们将此表通过CUSTOMER_ID 进行分区,每个分区存储100000行,我们 将每个分区保存到单独的表空间中,这样 数据文件就可以跨越多个物理磁盘
• CREATE TABLE CUSTOMER ( CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY, FIRST_NAME VARCHAR2(30) NOT NULL, LAST_NAME VARCHAR2(30) NOT NULL, PHONE VARCHAR2(15) NOT NULL, EMAIL VARCHAR2(80), STATUS CHAR(1) ) PARTITION BY RANGE (CUSTOMER_ID) ( PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 )
分区表
分区表概述
• 当表中的数据量不断增大,查询数据的速 度就会变慢,应用程序的性能就会下降, 这时就应该考虑对表进行分区。表进行分 区后,逻辑上表仍然是一张完整的表,只 是将表中的数据在物理上存放到多个表空 间(物理文件上),这样查询数据时,不至于 每次都扫描整张表。
• 从应用程序的角度来看,分区后的表与非 分区表完全相同,使用 SQL DML 命令访问 分区后的表时,无需任何修改。
4、均衡I/O:可以把不同的分区映射到磁盘 以平衡I/O,改善整个系统性能。
分区技术提高可用性
• 分区的数据库对象具有分区独立性。该分区独立性 特点可能是高可用性战略的一个重要部分,例如, 如果分区表的分区不能用,但该表的所有其他分区 仍然保持在线并可用。那么这个应用程序可以继续 针对该分区表执行查询和事务处理,只要不是访问 那个不可用的分区,数据库操作仍然能够成功运行。 数据库管理员可以指定各分区存放在不同的表空间 里,从而让管理员独立于其它表分区针对每个分区 进行备份与恢复操作。 还有,分区功能可以减少计 划停机时间。性能由于分区功能得到了改善,使数 据库管理员在相对较小的批处理窗口完成大型数据 库对象的维护工作。
• 1、每一个分区都必须有一个VALUES LESS THEN子句, 它指定了一个不包括在该分区中的上限值。分区键 的任何值等于或者大于这个上限值的记录都会被加 入到下一个高一些的分区中。
• 2、所有分区,除了第一个,都会有一个隐式的下 限值,这个值就是此分区的前一个分区的上限值。
• 3、在最高的分区中,MAXVALUE被定义。MAXVALU E代表了一个不确定的值。这个值高于其它分区中 的任何分区键的值,也可以理解为高于任何分区中 指定的VALUE LESS THEN的值,同时包括空值。
PARTITION part1 VALUES LESS THEN (1000) T ABLESPACE Part1_tb,
PARTITION part2 VALUES LESS THEN (MAXVA LUE) TABLESPACE Part2_tb );
列表分区
该分区的特点是某列的值只有几个,基于 这样的特点我们可以采用列表分区
• PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE( '01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01,
• PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE( '01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,
什么时候使用分区表
1、表的大小超过2GB。 2、表中包含历史数据,新的数据被增加都
新的分区中。
表分区有以下优点
1、改善查询性能:对分区对象的查询可以 仅搜索自己关心的分区,提高检索速度。
2、增强可用性:如果表的某个分区出现故 障,表在其他分区的数据仍然可用;
3、维护方便:如果表的某个分区出现故障, 需要修复数据,只修复该分区即可;
• PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE( '01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03
•)
• MAXVALUE • CREATE TABLE RangeTable
( idd INT PRIMARY KEY , iNAME VARCHAR(10), grade INT ) PARTITION BY RANGE (grade) (