返回首页

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

更新日期:2024年09月11日

参数说明:用于调试简单查询是否进行查询优化。设置成log 级别可以在数据库节点的
执行计划中看到没有查询优化的具体原因。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:枚举类型

off 表示不打开该功能。

log 表示打开该功能,可以在数据库节点的执行计划中看到没有查询优化的具体原
因。
须知:
提供在log 中显示语句没有查询优化的具体原因,需要将参数设置成log 级别,
log_min_messages 设置成debug4 级别,logging_module 设置'on(OPFUSION)',注意log 内容
可能会比较多,尽可能在调优期间执行少量作业使用。
默认值:off

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

本节提供有关以下主题的信息:
GBase 8s 通用库是什么?
esql 命令的哪些命令行选项与 GBase 8s ESQL/C 程序链接 GBase 8s 通用库的版
本?
如何使用 GBase 8s ESQL/C 程序链接可用于 UNIX™ 和 Windows™ 操作系统的静
态 GBase 8s 通用库?
如何使用 GBase 8s ESQL/C 程序链接共享 GBase 8s 通用库?

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 383 -
您需要考虑哪些因素来确定要使用哪种类型的 GBase 8s 通用库?
GBase 8s 通用库
以下是GBase 8s ESQL/C 在 UNIX™ 操作系统上的 GBase 8s 通用库列表。
libgen
包含一般任务的函数。
libos
包含操作系统需要的任务的函数。
libsql
包含在客户端应用程序和数据库服务器之间发送 SQL 语句的函数。
libgls
包含为 GBase 8s 产品通过全球语言支持(GLS)的函数。
libasf
包含处理客户端应用程序和数据库服务器之间通信协议的函数。
GBase 8s 通用库位于 UNIX 操作系统的 $GBASEDBTDIR/lib/esql 和
$GBASEDBTDIR/lib 目录 中。
GBase 8s ESQL/C For Windows™ 的 GBase 8s 通用库只是一个名为的 isqlt09a.dll的
DLL。该文件在 %GBASEDBTDIR%\lib 目录中。
GBase 8s ESQL/C For Windows 的静态库名为 isqlt09s.lib。该文件在
$GBASEDBTDIR/lib 目录中。
在许多平台上有一个名为 libgen.a 的系统库。要避免编译错误,建议您不要使用
libgen.a GBase 8s 库。而是使用 libifgen.a GBase 8s 库,它包含一个到 libgen.a 的符号链
接。
esql 命令
要确定您 GBase 8s ESQL/C 应用程序的要链接的 GBase 8s 通用库的类型,
esql 命令
支持下表的命令行选项。
表 1. GBase 8s 通用库的 esql 命令行选项
要链接的 GBase
8s 库版本
esql 命令行选

请参阅
共享库
没有选项
(缺省)

链接共享 GBase 8s 通用库
静态库
-static
链接静态 GBase 8s 通用库.

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 384 -
线程安全共享库
-thread
UNIX 系统上将线程安全 GBase 8s 通用库链接
到 ESQL/C 模块和将线程安全的 GBase 8s 通用库链
接到 Windows 环境中的 ESQL/C 模块
线程安全静态库
-thread -static
在 UNIX 操作系统上创建动态线程库
链接静态 GBase 8s 通用库
从 GBase 8s Client Software Development Kit 版本 3.0 开始,Windows™ 和 UNIX™
操作系统上提供了静态版本的 GBase 8s 通用库。
静态 GBase 8s 通用库保留其 Version 7.2 的名称,静态库名称具有以下格式:
非程序安全的静态 GBase 8s 通用库的名称 libxxx.a。
线程安全的静态 GBase 8s 通用库的名称为 libthxxx.a。
在这些静态库名称中,
xxx 标识了特定的静态 GBase 8s 通用库。
对于 Version 7.2 和
更高版本,静态和线程安全的静态 GBase 8s 通用库将使用此格式的名称作为其实际名称。
以下示例输出显示 libos 静态(libos.a)和线程安全静态(libthos.a)库:
% cd $GBASEDBTDIR/lib/esql
% ls -l lib*os.a
-rw-r--r-- 1 gbasedbt 145424 Nov 8 01:40 libos.a
-rw-r--r-- 1 gbasedbt 168422 Nov 8 01:40 libthos.a
esql 命令将与静态 GBase 8s 通用库的实际名称相关联的代码链接到 GBase 8s
ESQL/C 应用程序。运行时,您的 GBase 8s ESQL/C 程序可以直接从它的可执行文件访问
这些 GBase 8s 通用库函数。
将静态 GBase 8s 通用库链接到 ESQL/C 模块中
要使用 GBase 8s ESQL/C 模块链接 GBase 8s 通用库,
请使用 -static 命令行选项编
译您的程序。
以下命令使用 file.exe 可执行文件链接非线程安全 GBase 8s 库:
esql -static file.ec -o file.exe
esql 命令还可以将线程安全的 GBase 8s 通用库的代码与 GBase 8s ESQL/C 应用程
序链接。
提示: Version 7.2 之前的 GBase 8s ESQL/C esql 命令链接了 GBase 8s 通用库的静
态版本。因为 esql 命令缺省链接这些库的共享版本。您必须指定 -static 选项将静态版本
与 GBase 8s ESQL/C 应用程序链接。
链接共享 GBase 8s 通用库
GBase 8s ESQL/C 可以自动链接共享库,它将此库放置到共享内存中。当共享库在共
享内存中时,其它 GBase 8s ESQL/C 应用程序也会使用它。共享库在多用户环境中最为有
用,其中所有应用程序只需要一个库副本。
重要: 要在 GBase 8s ESQL/C 应用程序中使用共享库,您的操作系统必须支持共享

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 385 -
库。
支持共享库的操作系统包括 Sun 和 HP 版本的 UNIX™ 和 Windows™。
您应该熟悉
创建共享库以及 C 编程器需要构建它们的编译选项。
链接共享库(UNIX)的符号名称
当 esql 命令使用 GBase 8s ESQL/C 应用程序链接共享或线程安全共享 GBase 8s 库
时,它使用这些函数的 symbolic 名称。
非线程安全共享 GBase 8s 通用库具有 libxxx.yyy. 格式的符号名称。
线程安全共享 GBase 8s 通用库具有 libthxxx.yyy 格式的符号名称。
在这些静态库名称中,xxx 标识特定的库,yyy 是一个特定于平台的文件扩展名,用
于标识共享库文件。
提示: 要引用指定的共享库文件,此版本经常使用 Sun UNIX™ 操作系统的文件扩
展名,.so 文件扩展名。对于 UNIX 操作系统使用的共享库文件扩展名,请参阅 UNIX 操
作系统文件。
当您安装 GBase 8s ESQL/C 产品时,安装脚本将实际共享成品库名称与符号名称的
文件进行符号链接。下图显示了 GBase 8s 库的共享和线程安全共享版本的实际名称格式。

图: GBase 8s 共享库名称的格式


以下示例输出显示了 libos.a 静态库和 libos.so 共享库(在 Sun 平台上)的符号以
及实际名称:
%ls -l $GBASEDBTDIR/esql/libos*
-rw-r--r-- 1 gbasedbt 145424 Nov 8 01:40 libos.a
lrwxrwxrwx 1 root 11 Nov 8 01:40 libos.so -> iosls07a.so*
esql 命令使用 GBase 8s ESQL/C 应用程序链接符号共享库名称。运行期间,当程序
需要 GBase 8s 通用库函数时,GBase 8s ESQL/C 动态链接共享 GBase 8s 通用库的代码。

将共享 GBase 8s 通用库链接到 ESQL/C 模块中
要将共享 GBase 8s 通用库链接到 ESQL/C 模块中:
在运行时设置指定库搜索路径的环境变量,以便它在 UNIX™ 操作系统上包含
$GBASEDBTDIR/lib 和 $GBASEDBTDIR/lib/esql 路径;在 Windows™ 环境中包
含 %GBASEDBTDIR%lib。
在许多 UNIX 操作系统上,
LD_LIBRARY_PATH 环境变量指定库搜索路径。
以下命
令在 C shell 中设置 LD_LIBRARY_PATH:
setenv LD_LIBRARY_PATH $GBASEDBTDIR/lib:$GBASEDBTDIR/

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 386 -
lib/esql:/usr/lib
在 Windows 环境中,使用以下命令:
set LIB = %GBASEDBTDIR%\lib\;%LIB%
使用 esql 命令编译程序。
要使用 GBase 8s ESQL/C 模块链接 GBase 8s 通用库,您不需要指定命令行选项。
GBase 8s ESQL/C 缺省链接共享库。以下命令使用共享 GBase 8s 库编译 file.ec 源文件:
esql file.ec -o file.exe
当 esql 命令使用 GBase 8s ESQL/C 应用程序链接线程安全共享 GBase 8s 通用库时,
还会使用信号名称。
在共享和静态库版本之间选择
从 GBase 8s Client Software Development Kit 版本 3.0 开始,GBase 8s 通用库的静态
版本适用于 Windows™ 和 UNIX™ 操作系统。
共享库在多用户环境中十分有用,其中所有应用程序只需要一个库副本。共享库为您
的 GBase 8s ESQL/C 应用程序带来以下好处:
共享库减少可执行文件的大小,因为这些库函数是在需要的基础上动态链接的。
运行时,共享库的单个副本会链接到多个程序,这导致更少的内存使用。
GBase 8s ESQL/C 可执行文件中共享库的效果对用户来说是透明的。
尽管共享库保存磁盘和内存空间,但是当 GBase 8s ESQL/C 应用程序使用它们时,
它必须执行以下所有任务:
首次将共享库动态加载到内存中
执行链接编辑操作
执行库位置无关代码
这些开销任务可能会导致运行时迟缓,并且在使用静态库时不是必需的。但是,一旦
操作系统语句加载并映射了 GBase 8s 共享库,输入/输出(I/O)访问时间就可以抵消这些
成本。
重要: 当第一次执行应用程序加载共享库时,可能会对应用程序的客户端的性能造
成一次性负面影响。有关更多信息,请参阅操作系统文档。
由于操作系统需要加载程序及其库的真实 I/O 时间,
通常不会超过保存的 I/O 时间,
所以使用共享库的查询的性能明显与使用静态库的程序一样好或更好。但是,如果应用程
序不进行共享,或者如何您的处理器在应用程序调用共享库例程时饱和,则可能无法实现
这些节省。
还可以使用 GBase 8s ESQL/C 应用程序链接静态和共享 GBase 8s 通用库的线程安
全版本。

查看侵害分析结果
要查看侵害分析结果,操作如下:
1、双击“审计分析”-“潜在侵害”节点,如下图所示:

图:双击潜在侵害节点

GBase 8s 审计工具用户手册

南大通用数据技术股份有限公司

- 29 -
2、在出现的审计信息详细界面中输入指定时间段,然后点击“查询”按钮,界面将会显示
出指定时间段的审计日志。

图:查看侵害日志