返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

日志查看
监控系统报错或者出现问题,如需要向开发人员反应报错信息,可将监控
系统本身的日志信息一并附件,下面介绍一下三个组件的日志位置。

统一数据平台监控与运维系统用户手册
南大通用数据技术股份有限公司
- 181 -

BETWEEN_JOIN:指连接条件类似于“t1.A BETWEEN t2.B AND t2.C”的JOIN,
包括“t1.A > t2.B AND t1.A < t2.C”这样的写法,简记为“A BETWEEN B AND C”。
如下以t1.A BETWEEN t2.B AND t2.C 进行说明。
1.
优化原理:
将(B,C)理解为一条条线段,
“A BETWEEN B AND C”即为找出与A 相交的所
有线段。
图5- 9 “A BETWEEN B AND C”的处理逻辑如下图所示
可以先将(B[key], C)排序,如上图所示,然后扫描t1 表,对于任意value A,
用二分法找到对应的位置pos,
pos 满足“B(pos) <= A < B(pos + 1)”,
如上图中
为2,对于该pos 及前面的所有数据,再进行“A between B and C”的check,
即需要check(0,1,2)。
为了提升check 的性能,在sort buffer 中加入index,如下图所示,
index 为指
向与当前区间有重叠的上一个区间的位置(图中向上的箭头)。找到对应的
位置pos 后,只需check 由index 组成的list 即可。例如图中的情况,对应的
A 只需check(2,0)即可。
图5- 10
Index 示意图如下:
2.
优化特性:
利用智能索引进行过滤的过程如下图所示,
如果阴影所示部分与(A,B)所构成

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1323
的所有区间都无交集时,则可以跳过当前DC,否则不可以跳过。方法为在
扫描A 列时,对当前A 列DC 做如下检查:

找到A_min 对应的位置pos;

如果A_max < B(pos+1),则继续,否则不可跳过当前DC,结束;

沿pos 的index 对A_min 做检查,如果未发现满足A_min between B and
C 的线段,则可以跳过当前DC,否则不可跳过当前DC。
图5- 11
智能索引过滤示意图如下:
当(B,C)所组成的区间段非常稀疏,
同时A 又是有序列时,
A 列的智能索
引将发挥重要作用。
3.
优化限制:
只有在t2 表非常小时(相对于t1 表),使用该优化性能非常好,当t2 表较
大时(如达到t1 表的1/2),性能较差,建议走原来逻辑,关闭该参数。
4.
优化参数:
gbase_optimizer_between_join=0(关闭)/1(开启-默认)/2(开启,并且含等值条件
的连接也优先使用between join)。

属性
JDBC 应用程序可连接至 Connection Manager,就像应用程序可能连接至数据库服务器一
样。然后,将应用程序连接请求重新指向高可用性集群中最恰当的服务器。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 43 -
可配置多个 Connection Manager,
然后在 Java™ 应用程序服务器使用的 sqlhost 文件中创建
一 Connection Manager 组条目。如果一个 Connection Manager 故障,则可将连接请求指
向正在工作的 Connection Manager。SQLH_FILE 连接属性指导 JDBC 驱动程序搜索组条
目。
要连接至一 GBase 8s Connection Manager,
然后再通过其连接至高可用性集群的服务器,

必须在连接 URL 或 DataSource 中包括下列属性:
GBASEDBTSERVER=CM_or_group_name
SQLH_TYPE=FILE
SQLH_FILE=sqlhosts
USER=user_name
PASSWORD=password
如果 Connection Manager 正在运行,但有一个挂起的连接,则在连接 URL 中包括下列属
性,可防止 Java 应用程序无限地等待。
GBASEDBTCONRETRY=value
GBASEDBTCONTIME=value
LOGINTIMEOUT=value
基于网络环境来设置这些值。
示例 1:通过 GBase 8s Connection Manager 来连接至高可用性集群
在此示例中,您有下列系统设置:

由四个服务器组成的高可用性集群(my_cluster)。

所有集群服务器上的用户名都是 my_user。

所有集群服务器上的口令都是 my_password。

cmhost1.example.com 上的 connection_manager 使用下列配置文件:
NAME connection_manager

CLUSTER my_cluster
{
GBASEDBTSERVER my_servers
SLA sla_primary DBSERVERS=PRI
SLA sla_secondaries DBSERVERS=SDS,HDR,RSS
}


在 host1.example.com 上有一 Java 应用程序服务器,
该 Java 应用程序服务器使用
下列 sqlhost 文件条目:
#dbservername nettype hostname servicename options

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 44 -
sla_primary onsoctcp cmhost1.example.com cm_port_1
sla_secondaries onsoctcp cmhost1.example.com cm_port_1

如果客户机的初始连接尝试失败,则想要它再试两次。

想要 CONNECT 语句等待 10 秒,来建立连接。

如果侦听服务器端口,且在 10 毫秒之内未连接,则想要连接失败。
要 Java 应用程序客户机连接至 my_cluster 的主服务器,请使用下列 URL:
jdbc:gbasedbt-sqli://GBASEDBTSERVER=sla_primary;
SQLH_TYPE=FILE;SQLH_FILE=sqlhosts;
USER=my_user_name;PASSWORD=my_password;

GBASEDBTCONRETRY=2;GBASEDBTCONTIME=10;LOGINTIMEOUT=10
要 Java 应用程序客户机连接至 my_cluster 的辅助服务器,请使用下列 URL:
jdbc:gbasedbt-sqli://GBASEDBTSERVER=sla_secondaries;
SQLH_TYPE=FILE;SQLH_FILE=sqlhosts;
USER=my_user_name;PASSWORD=my_password;

GBASEDBTCONRETRY=2;GBASEDBTCONTIME=10;LOGINTIMEOUT=10
示例 2:通过多个 GBase 8s Connection Manager 连接至高可用性集群
在此示例中,您有下列系统设置:

由四个服务器组成的高可用性集群(my_cluster)。

所有集群服务器上的用户名都是 my_user。

所有集群服务器上的口令都是 my_password。

cmhost1.example.com 上的 connection_manager_1 使用下列配置文件,
用于客户机重
新指向和故障转移:
NAME connection_manager_1

CLUSTER my_cluster
{
GBASEDBTSERVER my_servers
SLA sla_primary_1 DBSERVERS=PRI
FOC ORDER=ENABLED \
PRIORITY=1
CMALARMPROGRAM
$GBASEDBTDIR/etc/CMALARMPROGRAM.sh

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 45 -
}

cmhost2.example.com 上的 connection_manager_2 使用下列配置文件,
用于客户机重
新指向和故障转移:
NAME connection_manager_2

CLUSTER my_cluster
{
GBASEDBTSERVER my_servers
SLA sla_primary_1 DBSERVERS=PRI
FOC ORDER=ENABLED \
PRIORITY=2
CMALARMPROGRAM
$GBASEDBTDIR/etc/CMALARMPROGRAM.sh
}


在 host1.example.com 上有一 Java 应用程序服务器,且 Java 应用程序服务器使用
下列 sqlhost 文件条目:
#dbservername nettype hostname servicename options
g_primary group - -
c=1,e=sla_primary_2
sla_primary_1 onsoctcp cmhost1.example.com
cm_port_1 g=g_primary
sla_primary_2 onsoctcp cmhost2.example.com
cm_port_2 g=g_primary



如果客户机的初始连接尝试失败,则想要它重试两次。

想要 CONNECT 语句等待 10 秒,来建立连接。

如果侦听服务器端口,且在 10 毫秒之内未连接,则想要连接失败。
要通过 connection_manager_1 或 connection_manager_2,Java 应用程序客户机连接
至 my_cluster 的主服务器,请使用下列 URL:
jdbc:gbasedbt-sqli://GBASEDBTSERVER=g_primary;
SQLH_TYPE=FILE;SQLH_FILE=sqlhosts;
USER=my_user_name;PASSWORD=my_password;

GBASEDBTCONRETRY=2;GBASEDBTCONTIME=10;LOGINTIMEOUT=10

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 46 -