更新日期:2024年09月11日
游标函数是返回一行或多行数据的用户定义的函数,因此需要游标来执行。游标函数可为
系列函数之一:
其 RETURN 语句包括 WITH RESUME 的 SPL 函数
定义作为迭代函数的外部函数
GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 321 -
游标函数的行为与 SPL 函数或外部函数都一样。然而,SPL 游标函数每迭代可返回多个
值,而外部游标函数(迭代函数)每迭代仅可返回一个值。
要从 SPL 例程执行游标函数,您必须在 SPL 例程的 FOREACH 循环中包括该函数。下
列示例展示在 FOREACH 循环中执行游标函数的不同方式:
FOREACH SELECT cur_func1(col_name) INTO spl_var FROM tab1
INSERT INTO tab2 VALUES (spl_var);
END FOREACH
FOREACH EXECUTE FUNCTION cur_func2() INTO spl_var
INSERT INTO tab2 VALUES (spl_var);
END FOREACH
参数说明:
设置在维护性操作
(比如VACUUM、
CREATE INDEX、
ALTER TABLE ADD
FOREIGN KEY 等)中可使用的最大的内存。该参数的设置会影响VACUUM、VACUUM
FULL、CLUSTER、CREATE INDEX 的执行效率。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,1024~INT_MAX,单位为KB。
默认值:16MB
设置建议:
建议设置此参数的值大于work_mem 可以改进清理和恢复数据库转储的速度。
因为
在一个数据库会话里,
任意时刻只有一个维护性操作可以执行,
并且在执行维护性
操作时不会有太多的会话。
当自动清理线程运行时,autovacuum_max_workers 倍数的内存将会被分配,所以
此时设置maintenance_work_mem 的值应该不小于work_mem。
如果进行大数据量的cluster 等,可以在session 中调大该值。