zoukankan      html  css  js  c++  java
  • 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

    表关联列尽量使用相同的数据类型

  • 相关阅读:
    菜鸟的it之路-起航
    实验报告四
    实验报告三
    实验报告二
    实验报告一
    远程连接
    操作系统安装
    服务器硬件组成
    linux系统下排查cpu过高原因
    windows系统下排查Java项目cpu过高原因
  • 原文地址:https://www.cnblogs.com/star521/p/14886343.html
Copyright © 2011-2022 走看看