返回首页

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

更新日期:2024年09月11日

参数说明:设置每个数据库会话使用的LOCAL 临时缓冲区的大小。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
在每个会话的第一次使用临时表之前可以改变temp_buffers 的值,
之后的设置将是无效
的。
一个会话将按照temp_buffers 给出的限制,根据需要分配临时缓冲区。如果在一个并不
需要大量临时缓冲区的会话里设置一个大的数值,
其开销只是一个缓冲区描述符的大小。

缓冲区被使用,就会额外消耗8192 字节。
取值范围:整型,100~1073741823,单位为8KB。
默认值:1MB

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


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 328 -

您可使用 RAISE EXCEPTION 语句生成您自己的错误,如下图所示。
图: RAISE EXCEPTION 语句。
BEGIN
ON EXCEPTION SET esql, eisam -- 捕获所有错误
IF esql = -206 THEN -- 未找到表
-- 某种恢复
ELSE
RAISE exception esql, eisam; -- 放过该错误
END IF
END EXCEPTION
-- 执行某操作
END
在该示例中,ON EXCEPTION 语句使用两个变量 esql 和 eisam,来保存数据库服务器返回
的错误编号。如果发生错误且如果 SQL 错误编号为 -206,则执行 IF 子句。如果捕获任
何其他 SQL 错误,则将它从此 BEGINEND 块传至前面的示例的最后 BEGINEND 块。

模拟 SQL 错误
您可产生错误来模拟 SQL 错误,如下图所示。如果用户为 pault, 则 SPL 运行如同那个
用户没有 update 权限一样,即使该用户实际确实拥有那个权限。
图: 模拟 SQL 错误。
BEGIN
IF user = 'pault' THEN
RAISE EXCEPTION -273; -- 拒绝 Paul 的 update 权限
END IF
END

使用 RAISE EXCEPTION 来退出嵌套的代码
下图展示您可如何使用 RAISE EXCEPTION 语句来退出深度嵌套的块。
图: RAISE EXCEPTION 语句。
BEGIN
ON EXCEPTION IN (1)
END EXCEPTION WITH RESUME -- do nothing significant (cont)

BEGIN

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 329 -

FOR i IN (1 TO 1000)
FOREACH select ..INTO aa FROM t
IF aa < 0 THEN
RAISE EXCEPTION 1; -- emergency exit
END IF
END FOREACH
END FOR
RETURN 1;
END

--do something; -- emergency exit to
-- this statement.
TRACE 'Negative value returned';
RETURN -10;
END
如果最内层的条件为真(如果 aa 为负),则发生异常,且执行跳至跟在该块的 END 之后
的代码。在此情况下,执行跳至 TRACE 语句。
请记住,BEGINEND 块为单个语句。如果在块中的某处发生错误,且在该块之外捕获,则
当执行恢复时,跳过该块剩余的部分,并从下一语句开始执行。
除非您在该块的某处为此错误设置捕获,否则,将错误条件传回至包含该调用的块,并传
回至包含该块的任何块。如果不存在设置处理该错误的 ON EXCEPTION 语句,则停止该
SPL 例程的执行,为正在执行该 SPL 例程的例程创建一个错误。

下表显示了可以配置 SQL 语句高速缓存的不同方法。
表 1. 配置 SQL 语句高速缓存
配置参数
用途
onmode 命令
STMT_CACHE
打开、启用或禁用内存中的 SQL
语句高速缓存。
如果已打开,
请指
定 SQL 语句高速缓存能否保存
已解析和优化的 SQL 语句。
onmode -e mode
STMT_CACHE_HITS
指定将语句完全插入到 SQL 语
句高速缓存之前,命中(引用)该
语句的次数。
onmode -W
STMT_CACHE_HITS
STMT_CACHE_NOLIMIT
控制是否在 SQL 语句高速缓存
的大小大于
STMT_CACHE_SIZE 值之后将
语句插入到该高速缓存中。
onmode -W
STMT_CACHE_NOLIMIT
STMT_CACHE_NUMPOOL 定义 SQL 语句高速缓存的内存
池数。

STMT_CACHE_SIZE
指定 SQL 语句高速缓存的大小。

使用以下 onstat 选项可监视 SQL 语句高速缓存:

onstat -g ssc

onstat -g ssc all

onstat -g ssc pool
有关这些配置参数、onstat -g 选项以及 onmode 命令的更多信息,请参阅《GBase 8s 管理
员参考》。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 147 -
有关使用 SQL 语句高速缓存、使用 onstat -g 选项监视该高速缓存以及调整配置参数的更
多信息,请参阅《GBase 8s 性能指南》中有关提高查询性能的部分。有关限定和恒等语句
的详细信息,请参阅《GBase 8s SQL 指南:语法》。