返回首页

gbase数据、南大通用产品文档:GBase8a错误处理

更新日期:2024年09月11日


如果没有出现错误,初始化函数应该返回0,否则返回1;

如果发生一个错误,
func_init()应该在message 参数中存储错误信息返回给客
户;

错误信息缓冲区是GBASE_ERRMSG_SIZE
(目前在GBase 中这个长度是512
字符)个字符长,该缓冲区长度不宜设置过大,一般不要超过80 字符。

GBase 8c 的总体性能调优思路为性能瓶颈点分析、关键参数调整以及SQL 调优。在调
优过程中,通过系统资源、吞吐量、负载等因素来帮助定位和分析性能问题,使系统性能达
到可接受的范围。
性能调优过程需要综合考虑多方面因素,因此,调优人员应对系统软件架构、
软硬件配
置、数据库配置参数、并发控制、查询处理和数据库应用有广泛而深刻的理解。
性能调优有时候需要重启数据库,可能会中断当前业务。因此,业务上线后,当性能调
优操作需要重启数据库时,操作窗口时间需向管理部门提出申请,经批准后方可执行。
调优流程
调优流程如图14-1 所示。
图14- 1 性能调优流程

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
508
调优各阶段说明,如表15-14-1 所示。
表14- 1 性能调优流程说明
阶段
描述
确定性能调优范围
获取GBase 8c 节点的CPU、内存、I/O 和网络资源使用情况,
确认这些资源是否已被充分利用,是否存在瓶颈点。
系统调优指南
进行操作系统级以及数据库系统级的调优,
更充分地利用机器的
CPU、内存、I/O 和网络资源,避免资源冲突,提升整个系统查
询的吞吐量。
SQL 调优指南
审视业务所用SQL 语句是否存在可优化空间,包括:
通过ANALYZE 语句生成表统计信息:
ANALYZE 语句可收集与
数据库中表内容相关的统计信息,统计结果存储在系统表
PG_STATISTIC 中。执行计划生成器会使用这些统计数据,以确
定最有效的执行计划。
分析执行计划:EXPLAIN 语句可显示SQL 语句的执行计划,
EXPLAIN PERFORMANCE 语句可显示SQL 语句中各算子的执
行时间。
查找问题根因并进行调优:
通过分析执行计划,
找到可能存在的
原因,进行针对性的调优,通常为调整数据库级SQL 调优参数。
编写更优的SQL:介绍一些复杂查询中的中间临时数据缓存、
结果集缓存、结果集合并等场景中的更优SQL 语法。

decadd() 函数将两个 decimal 类型值相加。

语法
mint decadd(n1, n2, sum)
dec_t *n1;
dec_t *n2;
dec_t *sum;
n1
指向第一个运算对象的 decimal 结构的指针。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 620 -

n2
指向第二个运算对象的 decimal 结构的指针。
sum
指向包含总和(n1 + n2)的 decimal 结构的指针。

用法
sum 可与 n1 或 n2 相同。

返回代码
0
操作成功。
-1200
导致溢出的操作。
-1201
导致下溢的操作。

示例

demo 目录中的文件 decadd.ec 包含下列样式程序。
/*
* decadd.ec *

The following program obtains the sum of two DECIMAL numbers.
*/
#include

EXEC SQL include decimal;
/* leading spaces will be ignored */
char string1[] = " 1000.6789";
char string2[] = "80";
char result[41];


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 621 -

main()
{
mint x;
dec_t num1, num2, sum;

printf("DECADD Sample ESQL Program running.\n\n");

if (x = deccvasc(string1, strlen(string1), &num1))
{
printf("Error %d in converting string1 to DECIMAL\n", x);
exit(1);
}
if (x = deccvasc(string2, strlen(string2), &num2))
{
printf("Error %d in converting string2 to DECIMAL\n", x);
exit(1);
}
if (x = decadd(&num1, &num2, ∑))
{
printf("Error %d in adding DECIMALs\n", x);
exit(1);
}
if (x = dectoasc(∑, result, sizeof(result), -1))
{
printf("Error %d in converting DECIMAL result to string\n", x);
exit(1);
}
result[40] = '\0';
/* display result */
printf("\t%s + %s = %s\n", string1, string2, result);
printf("\nDECADD Sample Program over.\n\n");
exit(0);
}

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 622 -

输出
DECADD Sample ESQL Program running.

1000.6789 + 80 = 1080.6789

DECADD Sample Program over.