• 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

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

  • 相关阅读:
    button label textfield对齐 textview UI样式
    iOS真机测试
    Android学习
    CoreMontion加速计
    一些用xib加载主界面的过程
    英特尔公司
    CISC和RISC
    Terminating app due to uncaught exception 'NSGenericException' 类崩溃文章收集
    UICollectionView 介绍 <转>
    流媒件应用FreeStreamer 学习2
  • 原文地址:https://www.cnblogs.com/star521/p/14886343.html
Copyright © 2020-2023  润新知