南大通用数据库-Gbase-8a-学习-36-查看SQL的数据分布情况

一、测试环境

名称
CPUIntel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
操作系统CentOS Linux release 7.9.2009 (Core)
内存3G
逻辑核数2
Gbase8a版本9.5.3.27.17c111049

二、数据库集群部署模式

[gbase@czg1 ~]$ gcadmin
CLUSTER STATE:         ACTIVE

======================================
|  GBASE GCWARE CLUSTER INFORMATION  |
======================================
| NodeName |   IpAddress    | gcware |
--------------------------------------
| gcware1  | 192.168.142.10 |  OPEN  |
--------------------------------------
| gcware2  | 192.168.142.11 |  OPEN  |
--------------------------------------
========================================================
|        GBASE COORDINATOR CLUSTER INFORMATION         |
========================================================
|   NodeName   |   IpAddress    | gcluster | DataState |
--------------------------------------------------------
| coordinator1 | 192.168.142.10 |   OPEN   |     0     |
--------------------------------------------------------
| coordinator2 | 192.168.142.11 |   OPEN   |     0     |
--------------------------------------------------------
=========================================================================
|                   GBASE VIRTUAL CLUSTER INFORMATION                   |
=========================================================================
|    VcName    | DistributionId |                comment                |
-------------------------------------------------------------------------
|     vc1      |       1        | comment message no more than 60 bytes |
-------------------------------------------------------------------------
|     vc2      |       2        | comment message no more than 60 bytes |
-------------------------------------------------------------------------

2 virtual cluster: vc1, vc2
2 coordinator node
0 free data node

三、集群分片情况

[gbase@czg1 ~]$ gcadmin showdistribution vc vc1

                                 Distribution ID: 1 | State: new | Total segment num: 1

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                 192.168.142.10                 |         1          |                                                |
========================================================================================================================
[gbase@czg1 ~]$ gcadmin showdistribution vc vc2

                                 Distribution ID: 2 | State: new | Total segment num: 1

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                 192.168.142.11                 |         1          |                                                |
========================================================================================================================

四、参数介绍

953版本之后才支持这个参数。

相当于在你原有的SQL中可以加入segment_id字段,查看SQL都是用哪些分片的数据。

参数名描述
gcluster_segment_id_replace说明:默认值为 0,不支持 segment_id(tbname) 函数,值设置为 1 时支持 Segment_id(tbname)函数。

修改方式:可使用 set 语句修改值也可在配置文件中修改值。适用于 session、global 范围均可。

五、参数测试实验

我这边由于是两个节点(主要是电脑带不动太多虚机),一个节点一个vc,所以实验效果并不明显,显示的都是1,实际生产环境查看数据分布情况肯定更加明显。

1、表结构

gbase> desc vc1.czg.czg;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| a     | int(11)      | YES  |     | NULL    |       |
| b     | varchar(100) | YES  | MUL | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (Elapsed: 00:00:00.00)

gbase> desc vc2.czg.czg;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| a     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (Elapsed: 00:00:00.00)

2、配置参数

gbase> show variables like '%seg%';
+-------------------------------------------------+------------+
| Variable_name                                   | Value      |
+-------------------------------------------------+------------+
| _gbase_segment_size                             | 2147483648 |
| _t_gcluster_single_segment_cluster_optimization | 0          |
| gcluster_segment_id_replace                     | 0          |
+-------------------------------------------------+------------+
3 rows in set (Elapsed: 00:00:00.00)

gbase> set gcluster_segment_id_replace = 1;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

3、单表

gbase> select segment_id from czg tab1 where tab1.a = 1 group by segment_id;
+------------+
| segment_id |
+------------+
|          1 |
+------------+
1 row in set (Elapsed: 00:00:00.07)

gbase> select segment_id from czg tab1 where tab1.a = 1;                                                                                         
+------------+
| segment_id |
+------------+
|          1 |
|          1 |
|          1 |
|          1 |
|          1 |
|          1 |
|          1 |
|          1 |
|          1 |
+------------+
1 row in set (Elapsed: 00:00:00.09)

4、多表

gbase> select segment_id(tab1),segment_id(tab2) from czg tab1, vc2.czg.czg tab2 where tab1.a = tab2.a and tab1.a = 1 limit 10;
+------------+------------+
| segment_id | segment_id |
+------------+------------+
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
|          1 |          1 |
+------------+------------+
10 rows in set (Elapsed: 00:00:00.31)

gbase> select segment_id(tab1),segment_id(tab2) from czg tab1, vc2.czg.czg tab2 where tab1.a = tab2.a group by segment_id(tab1),segment_id(tab2);
+------------+------------+
| segment_id | segment_id |
+------------+------------+
|          1 |          1 |
+------------+------------+
1 row in set (Elapsed: 00:00:00.12)

六、非953版本如何查看SQL数据分布情况

gbase> select crc32(tab1.a)%65536 as NewHashVal from sun tab1, moon tab2 where tab1.a = tab2.a group by tab1.a;
+------------+
| NewHashVal |
+------------+
|      40790 |
|      54049 |
+------------+
2 rows in set (Elapsed: 00:00:00.03)

gbase> select * from gbase.nodedatamap  where hashkey in (40790,54049);
+---------+--------+----------------------+
| hashkey | nodeid | data_distribution_id |
+---------+--------+----------------------+
|   40790 |      0 |                    1 |
|   54049 |      0 |                    1 |
+---------+--------+----------------------+
2 rows in set (Elapsed: 00:00:00.00)

查看nodeid字段,表示:表分片 id。从 0 开始,与分片一一对应关系。可以通过 gcadmin showdistribution 查看 segment id。这里的 nodeid = segment id - 1

如果是以下写法会提示不支持的错误,以后我再摸索一下。

gbase> select * from gbase.nodedatamap where hashkey in (select crc32(tab1.a)%65536 as NewHashVal from sun tab1, moon tab2 where tab1.a = tab2.a group by tab1.a);
ERROR 1733 (HY000): (GBA-01EX-700) The query includes syntax that is not supported by the Express engine. Either restructure the query with supported syntax, or enable the GBase Query Path in the configuration file to execute the query with reduced performance.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值