1. 程式人生 > 其它 >021.PGSQL-調優3-審視和修改表定義:儲存模型、分佈方式、分佈列、分割槽表、資料型別

021.PGSQL-調優3-審視和修改表定義:儲存模型、分佈方式、分佈列、分割槽表、資料型別

1.選擇儲存模型(列式、行式)

行存:點查詢(返回記錄少,基於索引的簡單查詢)

    增刪改比較多

列存:統計分析類查詢 (group 、join多)

    即席查詢(查詢列不確定,行存無法確定索引)

2.選擇分佈方式

hash 雜湊在叢集的各DN例項上

replication 叢集中每個DN例項上都有一份全量表資料

建表時,最後加上 ( )distribute by hash(rid);

3.選擇分佈列

列值比較離散的作為分佈列,支援多分佈列,防止出現數據傾斜

檢查是否出現數據傾斜

select 
xc_node_id -- DN
, count(1) from tablename
group by xc_node_id order by xc_node_id desc;

不同DN相差超過5% 視為資料傾斜,超過10%必須要調整

4.使用區域性聚簇

5.使用分割槽表

  • 建立表空間
    CREATE TABLESPACE example1 RELATIVE LOCATION 'tablespace1/tablespace_1';
    CREATE TABLESPACE example2 RELATIVE LOCATION 'tablespace2/tablespace_2';
    CREATE TABLESPACE example3 RELATIVE LOCATION 'tablespace3/tablespace_3';
    CREATE TABLESPACE example4 RELATIVE LOCATION 'tablespace4/tablespace_4';

    當結果顯示為如下資訊,則表示建立成功。

    CREATE TABLESPACE
  • 建立分割槽表
    CREATE TABLE tpcds.customer_address
    (
        ca_address_sk       integer                  NOT NULL   ,
        ca_address_id       character(16)            NOT NULL   ,
        ca_street_number    character(10) 
    ,
    ca_street_name character varying(60) , ca_street_type character(15) , ca_suite_number character(10) , ca_city character varying(60) , ca_county character varying(30) , ca_state character(2) , ca_zip character(10) , ca_country character varying(20) , ca_gmt_offset numeric(5,2) , ca_location_type character(20) ) TABLESPACE example1 DISTRIBUTE BY HASH (ca_address_sk) PARTITION BY RANGE (ca_address_sk) ( PARTITION P1 VALUES LESS THAN(5000), PARTITION P2 VALUES LESS THAN(10000), PARTITION P3 VALUES LESS THAN(15000), PARTITION P4 VALUES LESS THAN(20000), PARTITION P5 VALUES LESS THAN(25000), PARTITION P6 VALUES LESS THAN(30000), PARTITION P7 VALUES LESS THAN(40000), PARTITION P8 VALUES LESS THAN(MAXVALUE) TABLESPACE example2 ) ENABLE ROW MOVEMENT;

6.選擇資料型別

如果可以用smallint就儘量不用int,如果可以用int就儘量不用bigint

表關聯列儘量使用相同的資料型別