【gp数据库】查询系统表看模式下所有表的分布键信息
2024-08-26 19:29:59
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 ;
运行结果:
亲们如果有更好的sql或者意见欢迎留言!
修改分布键可参考:【gp数据库】工作中常用SQL语句干货
最新文章
- Android四种点击事件和五中存储方式
- css 表格
- 应用matplotlib绘制地图
- Ubuntu 虚拟机空间不足增加空间笔记
- LINUX 自动备份脚本文件
- Unity-Animator深入系列---FAQ
- Monkey学习(2)简单命令合集
- iOS多线程的初步研究(十)-- dispatch同步
- *ecshop 模板中foreach用法详解
- 【BestCoder】【Round#29】
- spot 5、ALOS监督分类波段组成
- angualrjs学习总结三(http、select、表格、指令以及事件)
- openwrt使用3G上网卡
- StackExchange.Redis 二次封装
- 插件开发之360 DroidPlugin源码分析(五)Service预注册占坑
- 【NodeJS】基础知识
- nexus5 root
- 前端(各种demo)一:css实现三角形,css实现梯形,pop弹层,css伪类before,after使用,svg使用(持续更新中)
- Codeforces Round #428 (Div. 2) D. Winter is here 容斥
- Vue(四)事件和属性