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

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

  1. 排查是否有分布键创建不合理的表,如果分布键是重复率比较高的字段会造成数据分布不均匀,存储过于倾斜。
  2. 排查经常做表关联的表是否是相同分布键,这样会提高执行效率。

具体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 ;

运行结果:

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

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

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

【gp数据库】查询系统表看模式下所有表的分布键信息的更多相关文章

  1. 【 PostgreSQL】查询某模式下所有表的分布键信息

    想看下某模式下所有表创建的分布键是否合理,查找系统表文档拼出如下sql,亲们如果有更好的sql或者意见欢迎留言! ​SELECT     aaa.nspname AS "模式名", ...

  2. KindEditor设置为过滤模式,但在代码模式下提交表单时不过虑HTML标签的解决方法

    KindEditor设置filterMode为true,但在代码模式下提交表单的话,发现并没有过虑掉自己不想保留的HTML标签. 这时只需同步内容前加上红色部分内容即可: onClick=" ...

  3. ORM数据库查询操作之基于双下划线的跨表查询

     创建表结构 from django.db import models class Book(models.Model): title=models.CharField(max_length=32) ...

  4. .NET Core采用的全新配置系统[4]: “Options模式”下各种类型的Options对象是如何绑定的?

    旨在生成Options对象的配置绑定实现在IConfiguration接口的扩展方法Bind上.配置绑定的目标类型可以是一个简单的基元类型,也可以是一个自定义数据类型,还可以是一个数组.集合或者字典类 ...

  5. 一次在CentOS系统单用户模式下使用passwd命令破密失败的案例

    某次遇到需要进入系统的单用户模式进行破密操作,结果却显示如下: 根据提示:Permission denied(缺少权限) 此时查看/usr/bin/passwd 权限: 正常情况下的权限应该是如下: ...

  6. .NET Core采用的全新配置系统[3]: “Options模式”下的配置是如何绑定为Options对象

    配置的原子结构就是单纯的键值对,并且键和值都是字符串,但是在真正的项目开发中我们一般不会单纯地以键值对的形式来使用配置.值得推荐的做法就是采用<.NET Core采用的全新配置系统[1]: 读取 ...

  7. 两人团队项目-石家庄地铁查询系统(web版)psp表

    结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/Aduorisk/p/10652917.html 队友:冯利伟 PSP: PSP0 Personal Softwar ...

  8. Local模式下Spark程序只输出关键信息

    使用spark-submit提交local任务时,会输出很多Info信息: ------------------------------------------- Time: ms --------- ...

  9. 实验测试之------创建DBlink,查询远端的yang用户下的abcdedfa表,创建同义词

    --测试环境,20远端,30本地: --准备1,20远端建立表的同义词,用户信息: 1.11 ---------------------------------------------------准备 ...

随机推荐

  1. Virtualbox下载与安装步骤

    不多说,直接上干货! 本主主要介绍一下如何从官方网站下载正版的 虚拟化 Oracle VM VirtualBox ,以及说明一下去官方下载正版软件的重要性. 一.为了系统的稳定以及数据的安全,建议下载 ...

  2. 关于作用域范围Scope

    举个例子,如下: public class C { public int a = 2; public void test(int b) { int c = 3; for (int d = 3; a & ...

  3. 笛卡尔积算法的sku

    1.笛卡尔积在形式上比较容易理解,但作为按钮操作DOM的时候,我的思路大体还可以,有些偏差.看到这种矩行方阵,首先联想到二维数组,事实上这种方法完全可以实现,但是在性能和编码速度上都有弊端. 2.以下 ...

  4. 忽略“Signal: SIGSEGV (Segmentation fault)”

    1. touch ~/.gdbinit 2. 在.gdbinit文件中添加“handle SIGSEGV nostop noprint pass”

  5. linux-统计文本中符合条件的内容

    1, 单个条件匹配, cat results.log | grep 'status=402' 2, 多个条件匹配 1), 2个条件都要满足 cat results.log | grep "s ...

  6. Jquery的toggle()方法

    toggle()并不是仅仅能 显示/隐藏而已 它的格式如下 toggle(fn1,fn2,fn3.....) 也就是说,它的参数可以说不定数目的 若干个方法,然后每个方法按顺序轮番调用 $(docum ...

  7. pthread和semaphore的简单应用以及四个典型的多线程问题

    pthread和semaphore的简单应用以及四个典型的多线程问题 pthread常用函数简单介绍 创建线程 int  pthread_create(pthread_t  *  thread, pt ...

  8. C语言中的条件编译

    通常情况,我们想让程序选择性地执行,多会使用分支语句,比如if-else 或者switch-case 等.但有些时候,可能在程序的运行过程中,某个分支根本不会执行. 比如我们要写一个跨平台项目,要求项 ...

  9. SpringBoot入门 (二) 属性文件读取

    在上一篇中介绍了在idea中创建springboot工程及使用web工程输出“helloworld”到前端页面,本文学习在springboot工程中读取属性文件中的属性值. 一 自定义属性 在appl ...

  10. .Net Core使用 MiniProfiler 进行性能分析(转)

    转自:http://www.cnblogs.com/ideacore/p/9505425.html 官方文档: https://miniprofiler.com/dotnet/AspDotNetCor ...