云数据库 GAUSSDB-表设计:选择分区方案

时间:2024-12-04 14:31:01

选择分区方案

当表中的数据量很大时,应当对表进行分区,一般需要遵循以下原则:

  • 使用具有明显区间性的字段进行分区,比如日期、区域等字段上建立分区。
  • 分区名称应当体现分区的数据特征。例如,关键字+区间特征。
  • 将分区上边界的分区值定义为MAXVALUE,以防可能出现的数据溢出。
表2 表的分区方式及使用场景

分区方式

描述

Range

表数据通过范围进行分区。

List

表数据通过指定列按照具体值进行分区。

Hash

表数据通过Hash散列方式进行分区。

典型的分区表定义如下:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
--创建Range分区表。
CREATE TABLE staffS_p1
(
  staff_ID       NUMBER(6) not null,
  FIRST_NAME     VARCHAR2(20),
  LAST_NAME      VARCHAR2(25),
  EMAIL          VARCHAR2(25),
  PHONE_NUMBER   VARCHAR2(20),
  HIRE_DATE      DATE,
  employment_ID  VARCHAR2(10),
  SALARY         NUMBER(8,2),
  COMMISSION_PCT NUMBER(4,2),
  MANAGER_ID     NUMBER(6),
  section_ID     NUMBER(4)
)
PARTITION BY RANGE (HIRE_DATE)
( 
   PARTITION HIRE_19950501 VALUES LESS THAN ('1995-05-01 00:00:00'),
   PARTITION HIRE_19950502 VALUES LESS THAN ('1995-05-02 00:00:00'),
   PARTITION HIRE_maxvalue VALUES LESS THAN (MAXVALUE)
);

--创建List分区表。
CREATE TABLE test_list (col1 int, col2 int)
partition by list(col1)
(
partition p1 values (2000),
partition p2 values (3000),
partition p3 values (4000),
partition p4 values (5000)
);

--创建Hash分区表。
CREATE TABLE test_hash (col1 int, col2 int)
partition by hash(col1)
(
partition p1,
partition p2
);

更多的表分区语法信息请参见CREATE TABLE PARTITION

support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0046.html