按表统计磁盘占用及数据分布是否均匀工具
1. 主要解决问题
(1)项目中经常遇到的统计每张表的实际占用存储情况
(2)项目中经常遇到的统计哪些表存在数据分布不均匀情况
2. 部署方式
(1)使用gbase用户,在/home/gbase目录下新建balance目录
(2)将balance config.ini文件放在该目录内,给balance文件可执行权限 chmod +x balance ,根据实际情况修改config.ini中的内容,参考如下:
[default]
host=192.168.56.101 --表示gbase8a coordinator节点
user=gbase --表示数据库登录用户
password='gbase20110531' --表示数据库登录用户密码
database=gbase --表示默认登录的数据库名
port=5258 --数据库链接端口
flag=2 --flag=1 表示统计每张表的实际占用存储情况(注:不包含副本,计算副本需*2) -flag=2 表示统计哪些表存在数据分布不均匀情况
num=8 --表示显示的行数
3. 使用方法
(1) 使用gbase用户执行
(2) 根据实际情况修改config.ini 参数文件
(3) 执行: ./balance 即可
(4) 确定需要显示的函数,可修改num参数。如需要显示所有表,应先参考gbase.table_distribution的行数最大值
(5) 程序执行结果以回显方式输出,如需要记录统计信息到文件中, 可以执行./balance > my.log
(6) 回显结果中,前三个字段分别代表 vc名称,库名,表名。如果flag=1 ,第四个字段,表示表的实际存储占用,其数值单位是字节。 如果flag=2,第四个字段,表示表的数据偏移程度,该数值一般小于0.5 表示 数据分布均衡,如果大于0.5 则表示数据存在一定程度的倾斜,数值越大,一般代表倾斜程度越严重。
(7)回显结果一般是按照第四个字段的数值从高到低排列的,所以一般第一行代表全库占用磁盘最多的表,或者数据倾斜最严重的表
4. 参考样例
(1) 如以下回显,代表part 表是占用磁盘最高的表,以下按照大小依次类推。
vcname000001 ssbm part 8885039
vcname000001 ssbm part2 8736163
vcname000001 ssbm t11 11557
vcname000001 ssbm dwdate 7863
vcname000001 ssbm lineorder 7845
vcname000001 ssbm customer 6278
vcname000001 gclusterdb rebalancing_status 5127
vcname000001 ssbm supplier 3402
(2)如以下回显,代表 part2 test customer表有倾斜问题,从图中可以验证
vcname000001 ssbm part2 0.751
vcname000001 ssbm test 0.551
vcname000001 ssbm customer 0.55
vcname000001 ssbm t11 0.169
vcname000001 gclusterdb dual 0
vcname000001 ssbm part 0.0
vcname000001 ssbm supplier 0.0
vcname000001 ssbm lineorder 0.0



5 参考文件
(1) 注: 该版本为centos7环境下编译。
(2) 文件下载:
通过百度网盘分享的文件:balance.zip
链接:https://pan.baidu.com/s/1iY_CP2NBn4VgTF_aiQIszQ
提取码:ycmi
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528