ToB企服应用市场:ToB评测及商务社交产业平台

标题: 人大金仓数据库KingbaseES 分区表 [打印本页]

作者: 勿忘初心做自己    时间: 2024-9-27 05:48
标题: 人大金仓数据库KingbaseES 分区表
关键字:

分区表
分区表概述

分区表就是根据分区战略,将数据分散到不同的子表中,并通过父表创建关联关系,从而实现数据物理上的分区。在KingbaseES数据库中,分区能够将大表和索引分解成更小、更易于管理子分区。每个分区是一个独立的对象,具有其自己的名称和存储特性。
分区的好处

(1)、在某些环境下查询性能能够显著提升,特殊是当那些访问压力大的行在一个分区或者少数几个分区时。划分可以取代索引的主导列、减小索引尺寸以及使索引中访问压力大的部分更有大概被放在内存中。
(2)、当查询或更新访问一个分区的大部分行时,可以通过该分区上的一个顺序扫描来取代分散到整个表上的索引和随机访问,如许可以改善性能。
(3)、分区表具有多个分片,可以将其作为一个团体来管理,也可以单独管理各个分片。
DDL 语句可以单独处理分区,而不是整个表或索引。因此,您可以分解大量占用资源的任务,如重建索引或表。比方,您可以一次只修改一个表分区。如果发生了题目,则只需重新修改该分区,而不是整个表。而且,删除一个分区可以制止执行很多 DELETE语句。
常用分区类型

(1)、范围分区:表被根据一个关键列或一组列划分为范围,不同的分区范围之间没有重叠。
(2)、列表分区:通过表现地列出每一个分区中出现的键值来划分。
(3)、哈希分区:通过为每个分区指定模数和余数来对表举行分区。
分区表利用

4.1 范围分区
CREATE TABLE student_range
(
sno NUMERIC(4,0),
sname CHARACTER VARYING(20 char),
gender CHARACTER VARYING(20 char),
birthday date,
address CHARACTER VARYING(128 char)
) PARTITION BY RANGE (birthday);
CREATE TABLE student_range1 PARTITION OF student_range FOR VALUES FROM ('2024-01-01') TO ('2024-03-01');
CREATE TABLE student_range2 PARTITION OF student_range FOR VALUES FROM ('2024-03-02') TO ('2024-05-01');
CREATE TABLE student_range3 PARTITION OF student_range FOR VALUES FROM ('2024-05-02') TO ('2024-07-01');
CREATE TABLE student_range4 PARTITION OF student_range FOR VALUES FROM ('2024-07-02') TO ('2024-09-01');
CREATE TABLE student_range5 PARTITION OF student_range FOR VALUES FROM ('2024-09-02') TO ('2024-11-01');
CREATE TABLE student_range6 PARTITION OF student_range FOR VALUES FROM ('2024-11-02') TO ('2025-01-01');
INSERT INTO student_range values(1,'tom',1,'2024-04-25','tianjin');
查看执行计划:
EXPLAIN SELECT * FROM student_range;


EXPLAIN SELECT * FROM student_range WHERE birthday BETWEEN '2024-03-30' AND '2024-04-30';

4.2 列表分区
CREATE TABLE student_list
(
sno NUMERIC(4,0),
sname CHARACTER VARYING(20 char),
gender CHARACTER VARYING(20 char),
birthday date,
address CHARACTER VARYING(128 char)
) PARTITION BY LIST (address);
CREATE TABLE student_list1 PARTITION OF student_list FOR VALUES IN ('tianjin');
CREATE TABLE student_list2 PARTITION OF student_list FOR VALUES IN ('beijing');
CREATE TABLE student_list3 PARTITION OF student_list FOR VALUES IN ('shanghai');
CREATE TABLE student_list4 PARTITION OF student_list FOR VALUES IN ('chongqin');
INSERT INTO student_list values(1,'tom',1,'2024-04-25','tianjin');
查看执行计划:
EXPLAIN SELECT * FROM student_list;

EXPLAIN SELECT * FROM student_list WHERE address = 'tianjin';


4.3 哈希分区
CREATE TABLE student_hash
(
sno NUMERIC(4,0),
sname CHARACTER VARYING(20 char),
gender CHARACTER VARYING(20 char),
birthday date,
address CHARACTER VARYING(128 char)
) PARTITION BY HASH (sno);
CREATE TABLE student_hash1 PARTITION OF student_hash FOR VALUES WITH (MODULUS 4, REMAINDER 0);
CREATE TABLE student_hash2 PARTITION OF student_hash FOR VALUES WITH (MODULUS 4, REMAINDER 1);
CREATE TABLE student_hash3 PARTITION OF student_hash FOR VALUES WITH (MODULUS 4, REMAINDER 2);
CREATE TABLE student_hash4 PARTITION OF student_hash FOR VALUES WITH (MODULUS 4, REMAINDER 3);
INSERT INTO student_hash values(1,'tom1',1,'2024-04-25','tianjin');
INSERT INTO student_hash values(2,'tom2',1,'2024-04-25','tianjin');
INSERT INTO student_hash values(3,'tom3',1,'2024-04-25','tianjin');
INSERT INTO student_hash values(4,'tom4',1,'2024-04-25','tianjin');
查看执行计划:
EXPLAIN SELECT * FROM student_hash;

EXPLAIN SELECT * FROM student_hash WHERE sno = 2;

参考资料

《KingbaseES产品手册》

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4