返回首页

gbase数据、南大通用产品文档:GBase8s对比类和结构

更新日期:2024年09月11日

下表对比了 .NET 提供程序对数据类型类和结构的支持差异。
表 3. .NET 提供程序对数据类型类和结构的支持差异
类/结构
GBase
8s .NET
Provider
GBASE Data Server .NET Provider
IfxBlob
支持
有限支持。某些方法返回 NotImplemented 异常。
IfxClob
支持
有限支持。某些方法返回 NotImplemented 异常。
IfxTimeSpan
支持
不支持
IfxMonthSpan
支持
不支持
IfxSmartLOBLocator 支持
不支持
IfxSmartLOB
支持
不支持
IfxDecimal
支持
有限支持。某些方法返回 NotImplemented 异常。
IfxDateTime
支持
有限支持。
DRDA 客户机支持 DateTime 的小数部分带 6 位数字。
GBase
8s 服务器支持小数值带 5 位数字。由于此差异,最
不重要的小数位将被截断。从 GBase 8s 服务器读取的
DateTime 值会在最不重要的小数位添加一个 0(零),以
符合 DRDA 格式。
此更改会影响从 GBase
8s
.NET
Provider
访问 IfxDateTime 类型的应用程序。

Hint 的错误、冲突及告警
Plan Hint 的结果会体现在计划的变化上,可以通过explain 来查看变化。
Hint 中的错误不会影响语句的执行,
只是不能生效,
该错误会根据语句类型以不同方式
提示用户。对于explain 语句,hint 的错误会以warning 形式显示在界面上,对于非explain
语句,会以debug1 级别日志显示在日志中,关键字为PLANHINT。
hint 的错误分为以下类型:

语法错误
语法规则树归约失败,会报错,指出出错的位置。
例如:
hint 关键字错误,
leading hint 或join hint 指定2 个表以下,
其它hint 未指定表等。
一旦发现语法错误,则立即终止hint 的解析,所以此时只有错误前面的解析完的hint 有效。
例如:
leading((t1 t2)) nestloop(t1) rows(t1 t2 #10)
nestloop(t1)存在语法错误,则终止解析,可用hint 只有之前解析的leading((t1 t2))。

语义错误

表不存在,存在多个,
或在leading 或join 中出现多次,均会报语义错误。

scanhint 中的index 不存在,会报语义错误。

另外,如果子查询提升后,
同一层出现多个名称相同的表,
且其中某个表
需要被hint,hint 会存在歧义,无法使用,需要为相同表增加别名规避。

hint 重复或冲突
如果存在hint 重复或冲突,只有第一个hint 生效,其它hint 均会失效,会给出提示。

hint 重复是指,
hint 的方法及表名均相同。
例如:
nestloop(t1 t2) nestloop(t1

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
575
t2)。

hint 冲突是指,table list 一样的hint,存在不一样的hint,hint 的冲突仅对
于每一类hint 方法检测冲突。
例如:nestloop (t1 t2) hashjoin (t1 t2),则后面与前面冲突,此时hashjoin 的hint 失效。
注意:nestloop(t1 t2)和no mergejoin(t1 t2)不冲突。
leading hint 中的多个表会进行拆解。例如:leading ((t1 t2 t3))会拆解成:leading((t1 t2))
leading(((t1 t2) t3)),此时如果存在leading((t2 t1)),则两者冲突,后面的会被丢弃。
(例
外:
指定内外表的hint 若与不指定内外表的hint 重复,
则始终丢弃不指定内外表的hint。


子链接提升后hint 失效
子链接提升后的hint 失效,会给出提示。通常出现在子链接中存在多个表连接的场景。
提升后,子链接中的多个表不再作为一个整体出现在join 中。

列类型不支持重分布
对于skew hint 来说,目的是为了进行重分布时的调优,所以当hint 列的类型不支持重
分布时,hint 将无效。

hint 未被使用

非等值join 使用hashjoin hint 或mergejoin hint。

不包含索引的表使用indexscan hint 或indexonlyscan hint。

通常只有在索引列上使用过滤条件才会生成相应的索引路径,
全表扫描将
不会使用索引,因此使用indexscan hint 或indexonlyscan hint 将不会使用。

indexonlyscan 只有输出列仅包含索引列才会使用,否则指定时hint 不会
被使用。

多个表存在等值连接时,
仅尝试有等值连接条件的表的连接,
此时没有关
联条件的表之间的路径将不会生成,所以指定相应的leading、join、rows hint 将不
使用,例如:t1 t2 t3 表join,t1 和t2,t2 和t3 有等值连接条件,则t1 和t3 不会优
先连接,leading(t1 t3)不会被使用。

生成stream 计划时,
如果表的分布列与join 列相同,
则不会生成redistribute
的计划;如果不同,且另一表分布列与join 列相同,只能生成redistribute 的计划,

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
576
不会生成broadcast 的计划,指定相应的hint 则不会被使用。

如果子链接未被提升,则blockname hint 不会被使用。

对于skew hint,hint 未被使用可能由于:

计划中不需要进行重分布。

hint 指定的列为包含分布键。

hint 指定倾斜信息有误或不完整,如对于join 优化未指定值。

倾斜优化的GUC 参数处于关闭状态。

GBA-01BR-0019

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1676
错误码
错误标识
错误显示信息
GBA-01BR-0019

RollBack Error
错误出现原因
回滚失败
分析与建议
查看具体错误码或日志,进一步定位错误