美文网首页系统运维专家
【gp数据库】查询表的分布键和字段信息

【gp数据库】查询表的分布键和字段信息

作者: 夏天_1233 | 来源:发表于2019-06-13 10:00 被阅读0次

Greenplum是关系型的分布式数据库,需要存储的数据库在进入数据库时,将先进行数据分布的处理工作,将一个表的数据按照某种方式分到每个节点上,并为每个表指定一个分发列(distribute Column),之后根据Hash来分布数据。

本篇介绍查询某模式下所有表的分布键信息,适用于:

排查是否有分布键创建不合理的表,如果分布键是重复率比较高的字段会造成数据分布不均匀,存储过于倾斜。

排查经常做表关联的表是否是相同分布键,这样会提高执行效率。


  具体sql如下:

SELECT

aaa.nspname AS "模式名",

aaa.relname AS "表名",

aaa.table_comment AS "中文表明",

ccc.attname AS "分布键"

FROM

(

SELECT

aa.oid,

obj_description (aa.oid) AS table_comment,

aa.relname,

bb.localoid,

bb.attrnums,

regexp_split_to_table(

array_to_string(bb.attrnums, ','),

','

) att,

dd.nspname

FROM

pg_class aa --原数据信息 最重要的表!

LEFT JOIN gp_distribution_policy bb ON bb.localoid = aa.oid --分布键表

LEFT JOIN pg_namespace dd ON dd.oid = aa.relnamespace --模式

LEFT JOIN pg_inherits hh ON aa.oid = hh.inhrelid --继承表

WHERE

dd.nspname = 'dim' -- 替换成需要的模式

AND hh.inhrelid IS NULL

) aaa

LEFT JOIN pg_attribute ccc ON ccc.attrelid = aaa.oid

AND ccc.attnum = aaa.att

WHERE

ccc.attnum > 0

ORDER BY

aaa.relname;

运行结果:

本篇使用GP数据库版本信息:PostgreSQL 8.2.15 (Greenplum Database 4.3.5.2 build 1)

亲们如果有更好的sql或者意见欢迎留言!


-- 查找dim模式下,哪些表有user_number字段

select obj_description (aa.oid) AS table_comment,

aa.relname "表名",

attname "字段",

dd.nspname "模式"

FROM pg_class aa

LEFT JOIN pg_namespace dd ON dd.oid = aa.relnamespace --模式

LEFT JOIN pg_inherits hh ON aa.oid = hh.inhrelid --继承表

LEFT JOIN pg_attribute tt ON tt.attrelid = aa.oid

WHERE dd.nspname = 'dim' -- 替换成需要的模式

AND hh.inhrelid IS NULL

AND attname = 'user_number'

order by relname,attname ;

相关文章:gp数据库】十条实用数据库SQL优化建议

修改分布键可参考:【gp数据库】工作中常用SQL语句干货

相关文章

  • 【gp数据库】查询表的分布键和字段信息

    Greenplum是关系型的分布式数据库,需要存储的数据库在进入数据库时,将先进行数据分布的处理工作,将一个表的数...

  • orm查询操作

    单表查询操作 外键的跨表查询 正向查询(在有外键字段的表向没有的表查询) 反向查询(没有外键的字段向有外键字段的表...

  • 2018-11-26 oracle查询表信息(索引,外键,列等)

    oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大...

  • MySQL查询表与表字段的信息

    环境: Mysql数据库 查询一个里面所有表的信息: 查询单个表的信息: 查询一张表的所有字段信息: 创建表 修改...

  • MySQL查看表注释或字段注释

    查询所有表的注释 查询所有表及字段的注释 查询某表的所有字段的注释 查询数据库下和表下的内容

  • mysql 常用语句

    查询数据库下所有表名、表注释 查询数据库下字典表下所有字段名、数据类型、字段注释 查询数据库下所有表下所有字段名、...

  • 修改MySQL表中的字段属性

    登录数据库 查询所有数据表 查询表的字段信息 1.修改某个表的字段类型及指定为空或非空 2.修改某个表的字段名称及...

  • 查询MYSQL表注释以及字段注释

    查询MYSQL数据库所有表名以及表注释 查询MYSQL数据库所有字段名以及字段注释

  • SQL SERVER 查看表说明,字段属性

    查询表字段属性,说明等: 只查询表字段说明: 查询表在那个数据库: 查询字段在那些表: 查询字段在那些存储过程中:

  • Mysql常用语句

    1.查询数据库所有表信息: 2.查询数据库所有表字段结构: 3.查询数据库所有视图定义: 4.mysql常用函数:

网友评论

    本文标题:【gp数据库】查询表的分布键和字段信息

    本文链接:https://www.haomeiwen.com/subject/bchjfctx.html