greenplum 分割槽表
greenplum分割槽表的原理和postgresql的原理相同,都是把一張大表進行按照適合的維度進行分割,通過表的繼承,規則,約束實現的。
在greenplum中,乙個表是否分割槽表儲存在pg_partition中.
gp在建表的時候會有乙個distributed by選項,這個是表進行物理拆分,理解一下分割槽和分布:
1.分割槽,按照字段邏輯進行邏輯劃分的區域,比如,時間按天,按月等等
2.分布,按照字段進行物理分割槽,會分散到每個segment
分布式為了並行查詢效率,充分利用每個segment節點的資源,分割槽是為了減少查詢時的資料掃瞄,對大表維護更加方便。
支援的分割槽型別:
範圍分割槽
列表分割槽
組合分割槽
例項:create table test_partition (id int,*** varchar(1))
distributed by (id)
partition by list(***)
(partition man values ('m'),
partition woman values ('w'),
default partition other);
notice: create table will create partition "test_partition_1_prt_man" for table "test_partition"
notice: create table will create partition "test_partition_1_prt_woman" for table "test_partition"
notice: create table will create partition "test_partition_1_prt_other" for table "test_partition"
insert into test_partition values(1,'m');
insert into test_partition values(2,'m');
insert into test_partition values(3,'m');
insert into test_partition values(4,'w');
insert into test_partition values(5,'w');
insert into test_partition values(6,'w');
insert into test_partition values(7,'w');
insert into test_partition values(8,'o');
insert into test_partition values(9,'o');
select gp_segment_id,count(*) from test_partition group by 1;
gp_segment_id | count
---------------+-------
8 | 1
62 | 1
47 | 1
57 | 1
52 | 1
13 | 1
3 | 1
42 | 1
18 | 1
可見分布在不同的segment
檢視分割槽:
gpadmin=# select * from test_partition_1_prt_man;
id | ***
----+-----
1 | m
2 | m
3 | m
(3 rows)
gpadmin=# select * from test_partition_1_prt_woman;
id | ***
----+-----
7 | w
4 | w
5 | w
6 | w
(4 rows)
gpadmin=# select * from test_partition_1_prt_other;
id | ***
----+-----
8 | o
9 | o
(2 rows)
參考:可見分割槽表儲存了相關分割槽的記錄
分割槽表介紹
通常情況下,我們建立的表都是未分割槽的表,或者說,只有乙個分割槽的表,資料只能儲存在乙個檔案組 file group 中,預設情況下,表資料儲存在primary檔案組。對錶進行分割槽後,每乙個分割槽都獨立儲存在檔案組 file group 中。把錶分割槽,實際上是把邏輯上完整的表,按照特定的字段拆分...
greenplum分割槽表檢視所佔空間大小
在使用greenplum資料庫的時候,有的時候想要檢視表所占用空間的大小,會使用如下二個函式pg relation size和pg size pretty.前者用來檢視資料大小,後者是human readable的調整.方法如下 select pg size pretty pg relation s...
把非分割槽表改為分割槽表
把非分割槽表改為分割槽表 說明 把非分割槽表改為分割槽表適用於歷史表 1 建立分割槽表 結構和非分割槽表tbl stock balance log相同 createtabletbl stock balance log part1 account id varchar2 20 byte occur d...