本文从以下几个方面梳理了分区表的概念和操作:
1。表空和分区表
2之间的概念。表分区的具体功能
3。表分区的优缺点
4。表分区的几种类型和操作方法
以及分区表的概念
Table 空 Room:
是一个或多个数据文件的集合。所有的数据对象都存储在指定的table 空 room中,但主要存储的是表,所以称为table 空 room。
分区表:
当表中的数据量不断增加时,数据查询的速度会变慢,应用程序的性能会下降。此时,您应该考虑对表进行分区。表分区后,逻辑表仍然是一个完整的表,但是表中的数据物理上存储在多个tables 空(物理文件)中,这样查询数据时就不会每次都扫描整个表。
( 2)。表分区的具体功能
oracle的表分区功能通过提高可管理性、性能和可用性,为各种应用带来了巨大的好处。通常,分区可以大大提高某些查询和维护操作的性能。此外,分区可以大大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。
分区函数可以将表、索引或索引组织表进一步细分为段,这些数据库对象的段称为分区。每个分区都有自己的名称,您也可以选择自己的存储特征。从数据库管理员的角度来看,一个分区对象有多个段,可以集中管理,也可以单独管理,这使得数据库管理员在管理分区对象时有相当大的灵活性。但是从应用的角度来看,分区表和非分区表是完全一样的,用SQL DML命令访问分区表时不需要修改。
何时使用分区表:
1。该表的大小超过2GB。
2。该表包含历史数据,新数据被添加到新分区中。
(3)。表分区的优缺点
表分区有以下优点:
1 .提高查询性能:查询分区对象时可以只搜索自己关心的分区,提高检索速度。
2。增强可用性:如果表的某个分区出现故障,该表在其他分区的数据仍然可用;
3。易维护:如果表的某个分区出现故障,需要修复数据,只需修复该分区即可;
4。平衡的I/O:您可以将不同的分区映射到磁盘,以平衡I/O并提高整个系统的性能。
缺点:
分区表关联:没有办法直接把现有的表转换成分区表。但是,Oracle提供了在线重定义表的能力。
(4)。表分区的几种类型和操作方法
一、范围分区:
范围分区根据范围将数据映射到各个分区,范围由您在创建分区时指定的分区键决定。这种分区方法是最常用的,分区键经常采用日期。例如,您可以按月对销售数据进行分区。
使用范围分区时,请考虑以下规则:
1。每个分区都必须有一个VALUES LESS THEN子句,该子句指定不包括在分区中的上限值。键值等于或大于该上限值的任何记录都将被添加到下一个更高的分区中。
2。除了第一个分区,所有分区都会有一个隐式的下限,也就是这个分区的上一个分区的上限。
3。在最高的分区中,定义了MAXVALUE。MAXVALUE表示一个不确定的值。该值高于其他分区中任何分区键的值,也可以理解为高于任何分区中指定的VALUE LESS THEN的值,包括空的值。
例1:
假设有一个客户表,有200,000行数据。我们按照CUSTOMER_ID对这个表进行分区,每个分区存储100,000行。我们将每个分区保存到单独的表空中,这样数据文件就可以跨多个物理磁盘。下面是创建表和分区的代码,如下:
create table CUSTOMER
(
CUSTOMER _ ID number NOT NULL主键,
first _ NAME varchar 2(30)NOT NULL,
LAST _ NAME varchar 2(30)NOT NULL,
PHONE VARCHAR2(15) NOT NULL,
EMAIL VARCHAR2(80),
STATUS CHAR(1)
) [/br
Partitioncus _ Part 2值小于(200000)表空间Cus _ TS02
]
示例2:除以时间
创建表Order _ Activities
(
Order _ ID NUMBER(7)NOT NULL,
Order _ DATE DATE DATE,
TOTAL_AMOUNT NUMBER,
CUSTOTMER_ID NUMBER(7),
payed CHAR(1)
)
例3:maxvalue
create table RANGE table
(
IDD INT primary key,
iname varchar (10),
grade INT
)
PARTITION BY RANGE(grade)
(
PARTITION part 1值小于(1000)表空间Part1_tb,
part part 2值小于(max value)表空间part 2 _ TB
);
二。List partition:
这个分区的特征是某一列只有几个值。基于这个特点,我们可以采用列表分区。
示例1
创建表problem _ tickets
(
problem _ ID NUMBER(7)NOT NULL主键,
description varchar2 (2000),
CUSTOMER _ ID NUMBER(7)NOT NULL,
DATE _ enter DATE NOT NULL,
STATUS VARCHAR 2(20)
)
PARTITION BY LIST(STATUS)
(
PARTITION PROB
]
三。散列分区:
这种分区对列值使用散列算法来确定将行放入哪个分区。当列的值没有合适的条件时,建议使用哈希分区。
Hash partition是一种通过指定分区号来平均分配数据的分区类型,因为通过在I/O设备上执行Hash分区,这些分区具有相同的大小。
示例1:
Create Table HASH _ Table
(
colnumber(8),
INF varchar 2(100)
)
Part 01 Part TABLESPACE HASH _ TS01,
Part 02 TABLESPACE HASH _ TS02,
Part 03 TABLESPACE HASH _ TS03
][]
哈希分区最重要的机制是根据哈希算法计算出一条特定的记录应该插入哪个分区。哈希算法中最重要的一个就是哈希函数。如果您想在Oracle中使用散列分区,只需指定分区的数量。建议分区数为2的n次方,这样可以使分区间的数据分布更加均匀。
四。组合范围哈希分区
这种分区基于范围分区和列表分区。该表首先按某一列进行范围分区,然后按某一列进行列表分区。分区之间的分区称为子分区。
创建表SALES
(
PRODUCT _ ID varchar 2(5),
SALES _ DATE DATE DATE,
SALES_COST NUMBER(10),
STATUS varchar 2(20)
)
PARTITION BY RANGE(SALES _ DATE)SUBPARTITION BY LIST(STATUS)
(
PARTITION P1值小于(TO_DATE('2003-01-01),' YYYY
本文链接:http://www.123down.cn/gonglue/227445.html