返回首页

gbase数据、南大通用产品文档:GBase8a关联顺序优化

更新日期:2024年09月11日

1.
优化原因
GCluster 的优化器不会调整LEFT JOIN 语句的顺序,而用户语句的JOIN 顺
序可能不是最优,导致查询性能较低。
2.
SQL 特征
语句包含多个LEFT JOIN,
多个LEFT JOIN 的ON 条件均为t1.colX = tn.colX
如:
SELECT x1.* FROM x1
LEFT JOIN x2 ON x1.many_duplicate_value = x2.many_duplicate_value
LEFT JOIN x3 ON x1.no_duplicate_value = x3.no_duplicate_value
LEFT JOIN x4 ON x1.hash_col = x4.hash_col;
3.
优化场景
语句特征满足上面的特征描述。
LEFT JOIN 的右表,一些表可以直接与左表形成Hash JOIN 关系,一些表可
能会导致左表发生膨胀。
4.
优化效果
让形成Hash JOIN 关系的LEFT JOIN 先执行,避免拉表。
例如SQL 特征中描述的语句,因为left join x4 on x1.hash_col = x4.hash_col
是Hash 分布式JOIN,因此可以提到最前面,直接分布式执行。
让膨胀率小的LEFT JOIN 先执行,减小拉表数据量。
如果参与JOIN 条件的列的值的重复度较高,则很可能会造成LEFT JOIN 结
果发生膨胀。一般来说,使用主键列参与的JOIN 条件,膨胀率是最小的;
而重复值越多的列,膨胀率就越可能高。
例如SQL 特征中描述的语句,因left join x3 on x1.no_duplicate_value =
x3.no_duplicate_value 对x1 的膨胀率比left join x2 on x1.many_duplicate_value
= x2.many_duplicate_value 小,因此可以把left join x3 提到left join x2 前面。
通过这种调整,避免对膨胀后的数据拉表,减小了拉表数据量。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1298
示例语句:
SELECT x1.* FROM x1
LEFT JOIN x2 ON x1.many_duplicate_value = x2.many_duplicate_value
LEFT JOIN x3 ON x1.no_duplicate_value = x3.no_duplicate_value
LEFT JOIN x4 ON x1.hash_col = x4.hash_col;
改写后语句
SELECT x1.* FROM x1
LEFT JOIN x4 ON x1.hash_col = x4.hash_col
LEFT JOIN x3 ON x1.no_duplicate_value = x3.no_duplicate_value
LEFT JOIN x2 ON x1.many_duplicate_value = x2.many_duplicate_value;
说明

因x1.hash_col = x4.hash_col 使用Hash 分布列,因此left join x4 调
整到第1 个位置;

因x1.no_duplicate_value = x3.no_duplicate_value 的膨胀率比
x1.many_duplicate_value = x2.many_duplicate_value 的膨胀率低,因
此把left join x3 调整到left join x2 之前。

sbspace 归还空间到存储池(SQL 管理 API)
随同 admin() 或 task() 函数,使用 drop
sbspace
to
storagepool 参数来从空 sbspace
归还空间到存储池。
语法

元素
描述
关键考虑
sbspace
空 sbspace 名。

示例
下列命令删除名为 sbspace8 的空 sbspace,并将所有释放的空间添加到存储池。
EXECUTE FUNCTION task("drop sbspace to storagepool", "sbspace8");

功能说明
用户权限表,给出了关于全局权限的信息。
表结构说明
表5- 241 表结构信息说明:





GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1485
GRANTEE
权限所有者
TABLE_CATALOG
登记目录名,NULL
PRIVILEGE_TYPE
权限类型
IS_GRANTABLE
是否具有赋予权限的权限