首页 > 数据库 > > 数据库对象设计-表设计
GaussDB 200是分布式架构。数据分布在各个DN上。总体上讲,良好的表设计需要遵循以下原则:
【建议】表的存储类型是表定义设计的第一步,客户业务类型是决定表的存储类型的主要因素,表存储类型的选择依据请参考表1。
分布方式 | 描述 | 适用场景 |
|---|---|---|
Hash | 表数据通过Hash方式散列到集群中的所有DN上。 | 数据量较大的事实表。 |
Replication | 集群中每一个DN都有一份全量表数据。 | 维度表、数据量较小的事实表。 |
当表中的数据量很大时,应当对表进行分区,一般需要遵循以下原则:
典型的分区表定义如下:
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)
);Hash表的分布键选取至关重要,如果分布键选择不当,可能会导致数据倾斜,从而导致查询时,I/O负载集中在部分DN上,影响整体查询性能。因此,在确定Hash表的分布策略之后,需要对表数据进行倾斜性检查,以确保数据的均匀分布。分布键的选择一般需要遵循以下原则:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3125460/ ,如需转载,请注明出处,否则将追究法律责任。