greenplum 检测表倾斜率高的shell脚本
时间:2022-06-23
本文章向大家介绍greenplum 检测表倾斜率高的shell脚本,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
greenplum-table-percentage
此项目主要检测greenplum集群中膨胀的表,经过检测会生成一个csv文件,以便技术人员分析原因及解决问题
项目结构介绍
greenplum-table-percentage.sh
主脚本,修改以下信息即可运行改脚本。
1、修改该脚本中的数据库连接信息
2、修改需要检测的schema_inspect,添加时请以英文逗号分割,例如:main,history
3、运行完改脚本会在log/20190603/table-percentage/下生成一个csv文件,该文件是以膨胀率都排序
log
日志目录,主要记录临时的生产的文件,以及检测结果文件
20190603
当前检测的日期文件
table-percentage
最后生产csv的文件夹
temp-percentage-results
存放脚本生产的临时文件
table-percentage-sql
all-table.sql-ori
查看制定schema下的所有的表
table-percentage.sql-ori
查看制定表的膨胀率
运行项目输出详细日志如下
time sh greenplum-table-percentage.sh
*****************
进度的百分比为: 18.18% 当前的行212 总行 1166 当前的表 data_quality.*********
进度的百分比为: 99.97% 当前的行10647 总行 10650 当前的表 summary.*******
进度的百分比为: 99.98% 当前的行10648 总行 10650 当前的表 summary.********
进度的百分比为: 99.99% 当前的行10649 总行 10650 当前的表 summary.***********
进度的百分比为: 100.00% 当前的行10650 总行 10650 当前的表 summary.********
表的倾斜率检测完毕,请下载 greenplum-table-percentage/log/20190603/table-percentage/20190603-finish.csv csv文件,以便分析结果......
遇到警告信息如下
当出现以下错误时说明有的表没有收集相关的统计信息,可使用命更新表的统计信息 analyze tablename
psql:greenplum-table-percentage/table-percentage-sql/table-percentage.sql:1:NOTICE:One or more columns in the following table(s) do not have statistics: ******
HINT: For non-partitioned tables, run analyze <table_name>(<column_list>). For partitioned tables, run analyze
生成的CSV文件格式如下
表名,最大segment的行,最小segment的行,倾斜率(%),表的大小,表的分布键
datafix.enterp*******,10362661,84146,99,95GB, by (s_ext_nodenum)
data_quality.dq_qg_*******,107,1,99,26kB, by (entid)
data_quality.f_ent_*******,16495396,140377,99,5503MB, by (s_ext_nodenum)
data_quality.f_ent_*******,12777242,107989,99,7824MB, by (s_ext_nodenum)
data_quality.f_ent_*******,12759334,107950,99,7315MB, by (s_ext_nodenum)
- 大白话-prototype属性
- Effective Modern C++翻译(5)-条款4:了解如何观察推导出的类型
- Effective Modern C++翻译(4)-条款3:了解decltype
- 大白话-constructor
- Effective Modern C++翻译(3)-条款2:明白auto类型推导
- React Native在Android平台运行gif的解决方法
- Effective Modern C++翻译(2)-条款1:明白模板类型推导
- Android ormLite复杂条件查询
- Effective Modern C++翻译(1):序言
- C++操作mysql方法总结(2)
- Linux基础(day3)
- C++操作mysql方法总结(1)
- javascript实现最基本、最简单的继承
- C++操作mysql方法总结(3)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 动手写简单的嵌入式操作系统二
- C++核心准则E.6:使用RAII防止资源泄露
- C++核心准则E.12: 当不可能或不愿意通过抛出异常退出函数时使用noexcept
- C++核心准则E.13: 直接拥有一个对象所有权时永远不要抛出异常
- C++核心准则E.14:使用根据目的设计的用户定制类型异常(非内置类型)
- C++核心准则E.16:析构函数,内存释放和swap操作永远不能失败
- Eclipse配合GDB和jlinkGDBServer仿真调试STM32
- 单片机程序构架
- 打卡群刷题总结0730——格雷编码
- 常用的vim配置,_vimrc文件
- 算法篇:链表之删除和为0的元素
- 算法篇:链表之反转链表
- 算法篇:链表之排序
- 算法篇:链表之删除链表中重复节点
- 小小验证码,作用可真不小!