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

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

  • 相关阅读:
    恭喜发财
    狗腿子的一天
    向系统分析员爬进
    解决SqlTransaction用尽的问题
    Localhost与数据库连接
    《成都,今夜请将我遗忘》读后感
    如何快速掌握一门技术
    怎样做一个iOS App的启动分层引导动画?
    怎么去掉Xcode工程中的某种类型的警告
    iOS 8 AutoLayout与Size Class自悟
  • 原文地址:https://www.cnblogs.com/star521/p/14886343.html
Copyright © 2011-2022 走看看