返回首页

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

更新日期:2024年09月11日

Invalid transaction isolation level
如果数据库服务器无法完成回滚,则发送此错误。请参阅 SQLException 消息的剩余部分,
来了解回滚失败的详细原因。
如果无效的事务隔离级别传送到 setTransactionIsolation(),则该错误还会发生。有效值为:
TRANSACTION_NONE
TRANSACTION_READ_UNCOMMITTED
TRANSACTION_READ_COMMITTED
TRANSACTION_REPEATABLE_READ

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

TRANSACTION_SERIALIZABLE
TRANSACTION_LAST_COMMITTED

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 开发人员使用 PAM 来与启用了 PAM 的 GBase 8s 服务器通讯,必须实
现 com.gbasedbt.jdbc.IfmxPAM 接口。
要这么做,
请在 Java™ 类文件中的类声明行上放置下
列内容:
implements IfmxPAM
然后,该 Java 必须实现符合 Java 标准和先前提供的详细信息的 IfmxPAM 接口。下一步
就是通知 JDBC 驱动程序什么 Java 类已实现了IfmxPAM 接口。有两种方式来这么做:

将键-值对 IFX_PAM_CLASS=your.class.name 添加至连接 URL,在此,
值 your.class.name 是至已实现了 IfmxPAM 接口的类的路径。
当通过使用 DriverManager.getConnection
(URL)
途径来连接至 GBase 8s 服务器时,
通常使用此方法。

在尝试连接至启用了 PAM 的服务器之前,将带有值 your.class.name 的属
性 IFX_PAM_CLASS 添加至属性列表。
当通过使用 DataSource.getConnection() 途径来连接至 GBase 8s 服务器时,
使用此方
法。
在实现 IfmxPAM 时,
JDBC 开发人员拥有广泛的自由。
在使用 PAM 的认证期间,
发生下
列活动:
1. 当正在检测与启用了 PAM 的服务器的通讯时,JDBC 驱动程序联系 IfxPAM() 方
法,并将它转给包含 PAM 质询问题的一个IfxPAMChallenge 对象。
2.
出现一个您创建的对话框,带有一个包含由 PAM 发送的质询消息的文本问题。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 63 -
3. 当用户提供响应时,将它打包至 IfxPAMResponse 对象内,并通过退出返
回 IfxPAMResponse 对象的 IfxPAM() 方法,来将它返回至 JDBC 驱动程序。
4. 当 PAM 收到对质询问题的响应时,它可授权该用户、拒绝该用户访问,或发出另
一质询问题,在此情况下,重复前面的过程。
此过程继续,直到或者授权该用户,或者拒绝该用户访问为止。通过调用带有值 TRUE
的 IfxPAMResponse.setTerminateConnection() 方法,Java 开发人员或用户可终止 PAM 授
权序列。