最近公司需要将oralce数据库替换掉,作为造型研究,去研究了一下PG库,作为研究成果,以文章形式固化下来。
由于本地电脑上安装的PG库版本为10.20,所以有些功能(比如默认分区)无法测试。
一、PG库分区表简介
一、PG的分区表创建
创建一张表,并指定分区字段,如果不指定,则默认为非分区字段
我们创建一张有两层分区的表,但此时建表时,指定第一级分区为partition_name
CREATE TABLE partition_test_table (
partition_name VARCHAR ( 20 ),
subpartitoin_name NUMERIC,
segment1 VARCHAR ( 20 ),
segment2 VARCHAR ( 20 ),
segment3 VARCHAR ( 20 ),
segment4 VARCHAR ( 20 ),
segment5 VARCHAR ( 20 )
) PARTITION BY list ( partition_name );
开始创建分区及指定二级分区字段
注意,如创建表一样,此时需要用partition by list 来指定二级分区,相当于为分区表创建分区。
create table p_a001 partition of partition_test_table for values in ('a001') partition by list(subpartitoin_name);
此时发现,创建分区的语句居然是create table。所以此时发现,在PG库里,分区本质上就是一张表,其结构与原表的表结构是一致的。
partition_test_table的表结构:
select * from pg_attribute a, pg_class b where a.attrelid = b.oid and b.relname = 'partition_test_table';
p_a001的表结构:
select * from pg_attribute a, pg_class b where a.attrelid = b.oid and b.relname = 'p_a001';