返回首页

gbase数据、南大通用产品文档:GBase8s用于对象关系数据库模型的用户定义的例程

更新日期:2024年09月11日

您可以在 superstores_demo 数据库上运行用户定义的例程样本。
superstores_demo 数据库未取代 stores_demo 数据库。两个数据库均可用。
superstores_demo 数据库模式与 stores_demo 较早的版本不兼容。在许多情况下,由于
表的差异,您不能针对 superstores_demo 的表使用为 stores_demo 开发的测试查询。
没有专门与 superstores_demo 关联的 SQL 命令文件。但是,有一些用户定义的例程可以
在 SQL 编辑器或系统编辑器中运行。
superstores_demo 数据库包括以下功能的示例:
l
集合类型:SET 和 LIST
l
已命名行类型:location_t、loc_us_t 和 loc_non_us_t
l
未命名行类型
l
类型和表继承
l
内置数据类型:BOOLEAN、SERIAL8 和 INT8
l
单值数据类型:percent
l
智能大对象:BLOB 和 CLOB
superstores_demo 数据库具有行类型和表来支持下表继承层次结构:
l
customer/retail_customer
l
customer/whlsale_customer
l
location/location_us
l
location/location_non_us


GBase 8s DB-Access 用户指南
南大通用数据技术股份有限公司 - 63 -





GBase 8s DB-Access 用户指南
南大通用数据技术股份有限公司 - 64 -


Null_only:SELECT t1.*,t2.* FROM t1 LEFT JOIN t2 on (t1.a=t2.a) WHERE
t2.id IS NULL;
说明
这条语句在修改前会先做join,然后用is null 条件对join 结果进行过滤;修改后,优化器
发现is null 条件是在补NULL 值的表上,在做join 时,自动忽略join 的匹配结果,只保
留补NULL 的结果,从而提升性能。
Distinct_only:SELECT ts.a,ts.b FROM
tt1
ts , tt ta WHERE ta.a>ts.a GROUP
BY ts.a,ts.b;
说明
这条语句在修改前是被当成了普通的JOIN,
用行号来保存结果,
因而产生了4 条记录
(两
条是重复的),修改后,优化器发现它满足distinct_only 优化,在做JOIN 时用filter 来保
存结果,行号相同的结果自动去了,因而只产生了2 条记录。
1.
优化特性:

Null_only 优化:
在原来的逻辑中,如果OUTER JOIN 中的outer 维度(补NULL 值的表)上
有is null 条件,则这个条件会被置成Delay,放到JOIN 之后执行。但如果is
null 操作的列本身没有NULL 值,则可以进行优化,因为最终的结果中只包
含补的NULL 值,即此次的NULL ONLY 优化:在做这个OUTER JOIN 时,
扔掉所有匹配的结果,只保留JOIN 中补的NULL 值。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1334

Distinct_only 优化:
这个优化是识别出最终结果只能是distinct 值的JOIN,
并用filter 来保存JOIN
结果。用上这个优化需满足的条件:

投影列只涉及一个表;

没有HAVING;

有GROUP BY 没聚合;

没GROUP BY 没聚合,但投影列里有DISTINCT;

没GROUP BY 有聚合,但聚合函数为MIN/MAX。
2.
优化限制:
Full join 不支持null_only 优化。

GLOBAL_GET_BGWRITER_STATUS 视图显示所有实例bgwriter 线程刷页信息,候选
buffer 链中页面个数,buffer 淘汰信息。
名称
类型
描述
node_name
text
实例名称。
bgwr_actual_flush
_total_num
bigint
从启动到当前时间bgwriter 线程总计刷脏页数量。
bgwr_last_flush_n
integer
bgwriter 线程上一批刷脏页数量。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1067
名称
类型
描述
um
candidate_slots
integer
当前候选buffer 链中页面个数。
get_buffer_from_l
ist
bigint
buffer 淘汰从候选buffer 链中获取页面的次数。
get_buffer_clock_
sweep
bigint
buffer 淘汰从原淘汰方案中获取页面的次数。