GBase 8a
性能调优
文章

南大通用GBase 8a之通过量化分析节点层数据集中度评估数据在DC包中的分布情况

发表于2025-03-25 17:50:2573次浏览1个评论

主要解决问题

(1)  在SQL性能分析中,横向节点间表的数据分布情况

           可依赖这篇文章所述的方法(https://www.gbase.cn/community/post/4935)

           但当需要分析表在某个节点上的数据分布情况

           就鲜有分析渠道了【即纵向的,单表单分片的,数据在数据文件里(DC包里)的分布】

部署方式

(1) 新建localbalance目录,将 conf.ini和localbalance文件放入其中,

          并赋可执行权限 chmod +x localbalance

(2) conf.ini文件样例:

[default]
nodelist=192.168.1.5                                                                     --分析data节点ip (只允许填一个)
user=gbase                                                                                   --数据库用户名 
password='**************'                                                          --密码 
database=test                                                                                --默认登录数据库
port=5050                                                                                       --节点层端口 
sql=select * from lineorder_n1 a where lo_shipmode='RAIL'        --sql语句注意只接受select语句,sql尽量只包含筛选数据的条件,表为_nX (分片表)

 

使用方式 
(1) 配置好以后,直接执行 ./localbalance 即可。 

 

演示样例

(1)以下样例为分析lineorder表,货运方式为铁路的数据,在192.168.1.5节点层上,数据在数据文件中的分布情况

表内数据量:
gbase> select count(*) from test.lineorder_n1;
+----------+
| count(*) |
+----------+
| 34276944 |
+----------+
1 row in set (Elapsed: 00:00:00.01)

条件命中数据量:
gbase> select count(*) from test.lineorder_n1 a where lo_shipmode='RAIL';
+----------+
| count(*) |
+----------+
| 13707120 |
+----------+
1 row in set (Elapsed: 00:00:00.70)

该SQL命中的数据在数据文件中的集中度为:
[gbase@locahost localbalance]$ ./localbalance
该数据的集中度为: 0.01340384

注:该值比较低,说明命中数据在数据文件中分布比较离散

然后,将该批数据删除后再重新批量插入:
gbase> create table  tmp as select * from lineorder a where lo_shipmode='RAIL';
Query OK, 13707120 rows affected (Elapsed: 00:01:10.79)

gbase> delete from lineorder a where lo_shipmode='RAIL';
Query OK, 13707120 rows affected (Elapsed: 00:00:08.67)

gbase> insert into lineorder select * from tmp;
Query OK, 13707120 rows affected (Elapsed: 00:00:31.72)
Records: 13707120  Duplicates: 0  Warnings: 0 

同样的,再次,计算该SQL命中的数据在数据文件中的集中度为: 
[gbase@locahost localbalance]$ ./localbalance
该数据的集中度为: 0.04624894

注:数值提升了3.5倍

再次,做同样查询,性能理论上也应该提升3.5倍,验证一下,果然。(刨去建表插数的相同时间)
gbase> create table  tmp2 as select * from lineorder a where lo_shipmode='RAIL';
Query OK, 13707120 rows affected (Elapsed: 00:00:32.59)

无论是从测试还是量化分析的角度看,说明数据都更加集中了。

5. 参考文件

(1) 注: 该版本为centos8环境下编译。

(2) 文件下载: 

通过网盘分享的文件:localbalance.zip
链接: https://pan.baidu.com/s/1bzgTRwqiqctwbyCTCCBpJw 提取码: 8rsf

评论

登录后才可以发表评论
BYRAN发表于 1年前
板凳