openGauss每日一练第8天 | 分区表 from seven
学习目标
学习openGauss分区表
分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。
分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。
课程学习
连接openGauss
#第一次进入等待15秒#数据库启动中...
su - omm
gsql -r
1.创建分区表
–范围分区表
create table update_table
(
c1 int,
c2 CHAR(2)
)
partition by range (c1)
(
partition update_table_p0 values less than (50),
partition update_table_p1 values less than (100),
partition update_table_p2 values less than (150)
);
–查看分区表信息
\d+ update_table;
select * from pg_partition;
–插入数据
insert into update_table values (1, 'a'), (50, 'b'), (100, 'c');
–超出范围的数据会报错
insert into update_table values (150, 'd');
–查看各区上的数据
select * from update_table partition(update_table_p0);
2.创建分区
alter table update_table add partition update_table_p3 values less than (200);
insert into update_table values (150, 'd');
3.修改分区属性
alter table update_table rename partition update_table_p1 to update_table_p1_1;
4.删除分区
alter table update_table drop partition update_table_p0;
5.删除分区表
drop table update_table;
课程作业
1. 创建一个含有5个分区的范围分区表store,在每个分区中插入记录
create table store
(
store_id int,
address CHAR(50),
staff int
)
partition by range (store_id)
(
partition store_p0 values less than (10),
partition store_p1 values less than (20),
partition store_p2 values less than (30),
partition store_p3 values less than (40),
partition store_p4 values less than (50)
);
omm=# insert into store values(1,'beijing',200);
INSERT 0 1
omm=# insert into store values(11,'shenyang',50),(22,'shanghai',300),(33,'shenzhen',400),(44,'hangzhou',200);
INSERT 0 4
omm=# select * from store;
store_id | address | staff
----------+----------------------------------------------------+-------
1 | beijing | 200omm=#
11 | shenyang | 50
22 | shanghai | 300
33 | shenzhen | 400
44 | hangzhou | 200
(5 rows)
2. 查看分区1上的数据
omm=# select * from store partition(store_p0);
store_id | address | staff
----------+----------------------------------------------------+-------
1 | beijing | 200
(1 row)
3. 重命名分区2
omm=# alter table store rename partition store_p1 to store_p11;
ALTER TABLE
4. 删除分区5
omm=# alter table store drop partition store_p4;
5. 增加分区6
omm=# alter table store add partition store_p5 values less than(60);
6. 在系统表pg_partition中查看分区信息
omm=# select * from pg_partition;
relname | parttype | parentid | rangenum | intervalnum | partstrategy | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | reltoastidxid | indextblid | indisusable | reldeltarelid | reldeltaidx | relcud
escrelid | relcudescidx | relfrozenxid | intspnum | partkey | intervaltablespace | interval | boundaries | transit | reloptions | relfrozenxid64
-----------+----------+----------+----------+-------------+--------------+-------------+---------------+----------+-----------+---------------+---------------+---------------+------------+-------------+---------------+-------------+-------
---------+--------------+--------------+----------+---------+--------------------+----------+------------+---------+---------------------------------------------------+----------------
store | r | 16406 | 0 | 0 | r | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | t | 0 | 0 |
store_p0 | p | 16406 | 0 | 0 | r | 16410 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | t | 0 | 0 |
0 | 0 | 0 | | 1 | | | | | {orientation=row,compression=no,wait_clean_gpi=n} | 0
store_p2 | p | 16406 | 0 | 0 | r | 16412 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | t | 0 | 0 |
0 | 0 | 9328 | | | | | {30} | | {orientation=row,compression=no} | 9328
0 | 0 | 9328 | | | | | {10} | | {orientation=row,compression=no} | 9328
0 | 0 | 9328 | | | | | {40} | | {orientation=row,compression=no} | 9328
store_p3 | p | 16406 | 0 | 0 | r | 16413 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | t | 0 | 0 |
store_p11 | p | 16406 | 0 | 0 | r | 16411 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | t | 0 | 0 |
0 | 0 | 9328 | | | | | {20} | | {orientation=row,compression=no} | 9328
store_p5 | p | 16406 | 0 | 0 | r | 16415 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | t | 0 | 0 |
0 | 0 | 9333 | | | | | {60} | | {orientation=row,compression=no} | 9333
(6 rows)
7.删除分区表
omm=# drop table store;
DROP TABLE




