zoukankan      html  css  js  c++  java
  • Greenplum 查看表的分区键与分区类型

    方法一

    查看表的分区键

    select d.nspname||'.'||a.relname as table_name,string_agg(b.attname,',') as column_name
    from
    pg_catalog.pg_class a
    inner join
    pg_catalog.pg_attribute b
    on a.oid=b.attrelid
    inner join
    pg_catalog.gp_distribution_policy c
    on a.oid=c.localoid
    inner join pg_catalog.pg_namespace d
    on a.relnamespace=d.oid
    where a.relkind='r' and b.attnum=any(c.attrnums)
    and a.relname not like '%prt%'
    group by table_name
    order by table_name desc;

    方法二

    创建一张表,在没有primary key 或者 unique key 的情况下,GreenPlum默认会把第一个column作为分布键 zwcdb=# create table tab01(id int,name varchar(20));NOTICE: Table doesnt have DISTRIBUTED BY clause -- Using column named id as the Greenplum Da

    创建一张表,在没有primary key 或者 unique key 的情况下,GreenPlum默认会把第一个column作为分布键

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    zwcdb=# create table tab01(id int,name varchar(20));

    NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table.

    HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.

    CREATE TABLE

    zwcdb=#

    zwcdb=# d+ tab01

                            Table "public.tab01"

     Column |         Type          | Modifiers | Storage  | Description

    --------+-----------------------+-----------+----------+-------------

     id     | integer               |           | plain    |

     name   | character varying(20) |           | extended |

    Has OIDs: no

    Distributed by: (id)

    使用以下语句修改分布键

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    zwcdb=# alter table tab01 set distributed by(name);

    ALTER TABLE

    zwcdb=# d+ tab01

                            Table "public.tab01"

     Column |         Type          | Modifiers | Storage  | Description

    --------+-----------------------+-----------+----------+-------------

     id     | integer               |           | plain    |

     name   | character varying(20) |           | extended |

    Has OIDs: no

    Distributed by: (name)

    在不确定哪个column为分布键的情况下可以使用randomly策略

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    zwcdb=# alter table tab01 set distributed randomly;

    ALTER TABLE

    zwcdb=# alter table tab01 set with(reorganize=true);

    ALTER TABLE

    zwcdb=# d+ tab01

                            Table "public.tab01"

     Column |         Type          | Modifiers | Storage  | Description

    --------+-----------------------+-----------+----------+-------------

     id     | integer               |           | plain    |

     name   | character varying(20) |           | extended |

    Has OIDs: no

    Distributed randomly

  • 相关阅读:
    理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
    Neutron VxLAN + Linux Bridge 环境中的网络 MTU
    理解 QEMU/KVM 和 Ceph(1):QEMU-KVM 和 Ceph RBD 的 缓存机制总结
    [译] 企业级 OpenStack 的六大需求(第 3 部分):弹性架构、全球交付
    [译] 企业级 OpenStack 的六大需求(第 2 部分):开放架构和混合云兼容
    [译] 企业级 OpenStack 的六大需求(第 1 部分):API 高可用、管理和安全
    Javascript中的Array(数组) 、{}(映射) 与JSON解析
    HTML中显示特殊字符,如尖括号 “<”,">"等等
    Ubuntu 12.04 安装配置 Apache2
    Python中函数的参数传递与可变长参数
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11138451.html
Copyright © 2011-2022 走看看