返回首页

gbase数据、南大通用产品文档:GBase8s随同 GBase 8s JDBC 驱动程序的 GBase 8s

更新日期:2024年09月11日

环境变量
下表罗列客户机 JDBC 驱动程序支持的大多数 GBase 8s 环境变量。对于服务器侧 JDBC,
请使用数据库 URL 中的参数设置,而不设置环境变量,因为环境变量会应用于数据库服
务器中运行的所有程序。要获取更多关于属性的信息,请参阅 指定属性。
要了解提供全球化特性的环境变量列表,请参阅 全球化和日期格式。要了解用于故障排除
的环境变量列表,请参阅 调优和故障排除。
受支持的 GBase 8s 环境变量
描述
APPENDISAM
当设置为 TRUE 时,
APPENDISAM 环境变量将 ISAM
错误代码和消息
(如果出现的话)
附加至 SQL 异常消
息,当调用 SQL 异常
的 .toString() 或 .getMessage() 时展示。以
下列格式展示该异常消息:
()
ISAM error: ()
CSM
指定要使用的“通讯支持模块”。 GBase 8s JDBC
Driver 3.0 和后来的版本支持加密 CSM。要获取更
多信息,请参阅 加密选项。
DBANSIWARN
当设置为 1 时,请检查对 ANSI 标准语法
的 GBase 8s 扩展
DBSPACETEMP
指定在其中构建临时表的 dbspace
DBTEMP
指定您想要 GBase 8s Enterprise Gateway 产品将

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 30 -
受支持的 GBase 8s 环境变量
描述
它们的临时文件和临时表置于其内的目录的完整路径
名称。
驱动程序不使用此变量;它只是将该值传至服务器。
DBUPSPACE
当它在 sqexplain.out 文件中构建多列分布,
或者
以索引排序,以及或者为计算列分布来保存规划时,
指定 UPDATE STATISTICS 语句可用于行排序所需的
磁盘空间和内存的数量。
DELIMIDENT
当设置为 Y 时,
指定由双引号划分的字符串为定界
的标识符
ENABLE_TYPE_CACHE
当设置为 TRUE 时,为 opaque、distinct 或 row
数据类型高速缓存数据类型信息。
当 Struct 或 SQLData 对象将数据插入至列内,
且 getSQLTypeName() 返回类型名称时,驱动程序
使用高速缓存了的信息,而不是查询数据库服务器。
ENABLE_HDRSWITCH
当设置为 TRUE 时,如果主服务器不可用,则使用
辅助服务器属性来连接至辅助服务器。
FET_BUF_SIZE
对于除大对象之外的所有数据,覆盖访存缓冲区大小
的缺省设置
缺省大小为 4096 字节。在服务器侧 JDBC 中不支持
此变量。
IFX_AUTOFREE
当设置为 1 时,
如果在数据库服务器中已关闭了游
标,
则指定 Statement.close() 方法不需要网络往
返地释放数据库服务器游标资源。
在由 ResultSet.close() 方法显式地关闭游标之
后,
或通过 OPTOFC 环境变量隐式地关闭游标之后,
数据库服务器自动释放游标资源。在已释放了游标资

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 31 -
受支持的 GBase 8s 环境变量
描述
源之后,不可再引用该游标。要获取更多信息,请参
阅 “自动释放”特性。
IFX_BATCHUPDATE_PER_SPEC
当设置为 1(缺省值)时,返回 SQL 语句影响的行
数,通过 executeBatch() 方法,在批量操作中执
行该语句
IFX_CODESETLOB
如果设置为大于或等于 0 的数值,
则在客户机与数据
库语言环境之间自动进行 TEXT 与 CLOB 数据类型的
代码集转换。此变量的值确定是在内存中还是在临时
文件中来进行代码集转换。如果设置为 0,则代码集
转换使用临时文件。
如果设置为大于 0 的值,
则代码
集转换发生在客户机计算机的内存中,且该值表示为
转换分配的内存字节数。
要获取更多信息,
请参阅 使
用 IFX_CODESETLOB 环境变量转换。
IFX_DIRECTIVES
确定优化器是否允许来自查询内的查询优化伪指令。
在客户机上设置此值。驱动程序不使用此变量;它只
是将该值传至服务器。
IFX_EXTDIRECTIVES
指定查询优化器是否允许将来
自 sysdirectives 系统目录表的外部查询优化伪
指令应用于现有的应用程序中。 缺省值为 OFF。可
能的值:
ON
接受外部优化器伪指令
OFF
不接受外部优化器伪指令
1
接受外部优化器伪指令
0
不接受外部优化器伪指令
IFX_GET_SMFLOAT_AS_FLOAT
当设置为 0
(缺省值)
时,
将 GBase
8s SMALLFLOAT

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 32 -
受支持的 GBase 8s 环境变量
描述
数据类型映射至 JDBC REAL 数据类型。此设置符合
JDBC 规范。当设置为 1 时,将 GBase
8s SMALLFLOAT 数据类型映射至 JDBC FLOAT 数据
类型。此设置使得能够与较早版本的 GBase
8s
JDBC
Driver 相兼容。
IFX_ISOLATION_LEVEL
定义在尝试同时访问同一行的进程之中的并发程度。
取得 IFX_ISOLATION_LEVEL 变量的值,其特定
于 GBase 8s 。缺省值为 2(Committed Read)。
如果显式地设置了该值,则它返回设置的值。返回:
整数。
设置 IFX_ISOLATION_LEVEL 变量的值,其特定
于 GBase 8s 。可能的值:
0
等同于 TRANSACTION_NONE
1
Dirty Read (等同
于 TRANSACTION_READ_UNCOMMITTED),
2
Committed Read(等同
于 TRANSACTION_READ_COMMITTED),
3
Cursor Stability(等同
于 TRANSACTION_READ_COMMITTED),
4
Repeatable Read(等同

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 33 -
受支持的 GBase 8s 环境变量
描述
于 TRANSACTION_REPEATABLE_READ)
5
Committed Read LAST COMMITTED(等同于
TRANSACTION_LAST_COMMITTED)
8
等同于 TRANSACTION_SERIALIZABLE
在模式之后指定 U 意味着保留更新锁。
(请参阅表后
的重要说明。)例如,值会为:2U(等同于 SET
ISOLATION TO COMMITTED READ RETAIN UPDATE LOCKS)

下列示例展示您将用于指定隔离级别的代码:
conn.setTransactionIsolation
(IfxConnection.TRANSACTION_LAST_COMMITTED);
IFX_FLAT_UCSQ
覆盖全局设置,并指导优化器对所有会话使用子查询
扁平化。缺省值为 1。
IFX_LOCK_MODE_WAIT
应用程序可使用此属性来覆盖用于访问锁定的行或表
的缺省服务器进程。取得 IFX_LOCK_MODE_WAIT 变量
的值,其特定于 GBase 8s 。缺省值为 0(不等待
锁)。如果显式地设置了该值,则它返回设置的值。
返回:整数。
设置 IFX_LOCK_MODE_WAIT 变量的值,其特定
于 GBase 8s 。可能的值:
-1
等待,直到释放锁为止。
0

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 34 -
受支持的 GBase 8s 环境变量
描述
不等待,结束操作,并返回错误。
nn
等待释放锁 nn 秒。
IFX_PAD_VARCHAR
当使用 Connection 类时,
可在连接 URL 上设置,

当使用 DataSource 类时,设置作为属性。有效值
为 0(缺省值)和 1。

当设置为 0 时,仅传送包含数据的 VARCHAR
的一部分(截去后跟的空格)。

当设置为 1 时,
将整个 VARCHAR 数据结构在
服务器间传送。
IFX_SET_FLOAT_AS_SMFLOAT
当设置为 0(缺省值)时,将 JDBC
FLOAT 数据类型
映射至 GBase 8s FLOAT 数据类型。此设置符合
JDBC 规范。当设置为 1 时,将 JDBC FLOAT 数据
类型映射至 GBase
8s SMALLFLOAT 数据类型。此设
置使得能够与较早版本的 GBase 8s JDBC
Driver 兼容。
IFX_TRIMTRAILINGSPACES
移除后跟的空格。缺省值为 1。
IFX_USEPUT
当设置为 1 时,启用批量插入。要获取更多信息,
请参阅 执行批量插入。
IFX_XASPEC
当设置为 y 时,紧密地结合带有相同全局 ID 的
XA 事务,并分享锁空间。这仅适用于 XA 连接,且不
可在数据库 URL 中指定。
通过 DataSource setter
(请参阅 DataSource 扩展)

或通过设置带有相同
名称的 System (JVM) 属性,可设置它。
DataSource 属性覆盖 System 属性。忽略y、Y、
n 或 N 之外的属性值。
IfxDataSource.getIfxIFX_XASPEC 返回最终的

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 35 -
受支持的 GBase 8s 环境变量
描述
IFX_SPEC 值,其或为 y 或为 n。例如,如果
DataSource IFX_XASPEC 的值等于 n 且
System IFX_XASPEC 的值等于 Y 或 y,则返
回 n。
IFX_XASTDCOMPLIANCE_XAEND
当返回 XA_RB* 时,指定 XA_END 的行为。
0
不忘记 XID。事务处于 Rollback Only 状态。这
符合 XA_SPEC+,且是 GBase 8s的默认行为。
1
忘记 XID。事务为 Nonexistent。
要获取更多信息,请参阅《GBase 8s SQL 指南:
参考》
DISABLE_B162428_XA_FIX (IDS 10.0)
ENABLE_B162428_XA_FIX (IDS 9.40)
IFXHOST
设置主机名称和主机 IP 地址
IFXHOST_SECONDARY
设置辅助主机名称和主机 IP 地址,
用于 HDR 连接重
定向
GBASEDBTCONRETRY
指定附加的连接尝试的最大数,在
由 GBASEDBTCONTIME 的值指定的时间限制期间,

户机可尝试连接至每一数据库服务器
GBASEDBTCONTIME
为连接至数据库服务器的尝试设置超时期间。如果在
此期间连接尝试不成功,则终止尝试,并报告连接错
误。
缺省值为 0 秒。
此变量为阻塞 socket 方法以
及为 socket 连接添加超时。
GBASEDBTOPCACHE
为客户机应用程序的 staging-area blobspace 指定
内存高速缓存的大小
GBASEDBTSERVER
指定客户机应用程序对其进行显式或隐式连接的缺省

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 36 -
受支持的 GBase 8s 环境变量
描述
数据库服务器
GBASEDBTSERVER_SECONDARY
指定 HDR 对中的辅助数据库服务器,
如果主数据库服
务器不可用,则由客户机应用程序对其进行显式或隐
式连接。
GBASEDBTSTACKSIZE
指定以 KB 计的堆栈大小,数据库服务器将其用于特
殊的客户机会话
JDBCTEMP
指定在哪里创建用于处理智能大对象的临时文件。您
必须提供绝对路径名称。
LOBCACHE
确定从数据库服务器访存的大对象数据的缓冲区大
小。可能的值为:
大于 0 的数值
在内存中分配来保存数据的最大字节数。如果数
据大小超过 LOBCACHE 值,则将数据存储在临
时文件中;
如果在创建此文件期间发生安全违规,
则将数据存储在内存中。

始终将数据存储在文件中。如果发生安全违规,
则驱动程序不尝试在内存中存储数据。
负数
始终将数据存储在内存中。如果得不到所需的内
存量,则发生错误。
如果未指定 LOBCACHE 值,则缺省为 4096 字节。
LOGINTIMEOUT
确定 GBase 8s 数据库服务器是否正在运行。如果
服务器正在运行,则立即建立至服务器的连接。如果
服务器未运行,则此环境变量指定监听该服务器端口
多少毫秒,以建立连接。如果在指定的时间内,您的
应用程序未连接至 GBase 8s 数据库服务器,则返
回错误。
NEWNLSMAP
允许在 NLS 与 JDK 语言环境以及要定义的 JKD 代

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 37 -
受支持的 GBase 8s 环境变量
描述
码集之间映射。
要获取更多信息,请参阅 用户定义的语言环境。
NODEFDAC
当在未以 LOG
MODE
ANSI 创建了的数据库中创建新的
表或 UDR 时,
在缺省情况下,
防止 PUBLIC 组接收表
或例程权限。必需的 yes 设置是区分大小写的。
OPT_GOAL
指定优化器的查询性能目标。在启动应用程序之前,
请在用户环境中设置此变量。
驱动程序不使用此变量;
它只是将该值传给服务器。
OPTCOMPIND
指定查询优化器使用的连接方法
OPTOFC
当设置为 1 时,
如果在客户机元组缓冲区中已检索了
所有符合条件的行,
则 ResultSet.close() 方法不
需要网络往返。在检索了所有行之后,数据库服务器
自动关闭游标。在调用下一ResultSet.next() 方法
之前,在客户机元组缓冲区中,GBase 8s JDBC
Driver 可能没有附加的行。因此,除非 GBase 8s
JDBC Driver 已从数据库服务器接收了所有行,否
则,当设置 OPTOFC 为 1 时,
ResultSet.close() 方法可能仍需要网络往返。
PATH
为可执行程序指定要搜索的目录
PDQPRIORITY
确定数据库服务器使用的并行程度
PORTNO_SECONDARY
指定 HDR 对中辅助数据库服务器的端口号。
该端口号
罗列在 /etc/services 文件中。
PROXY
指定 HTTP 代理服务器。要获取更多信息,请参
阅 HTTP 代理服务器。
PSORT_DBTEMP
指定当执行排序时,数据库服务器将它使用的临时文
件写至的一个或多个目录
PSORT_NPROCS
通过为排序分配更多线程,来使得数据库服务器能够

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 38 -
受支持的 GBase 8s 环境变量
描述
提高并行处理排序包的性能
SECURITY
使用 56 位加密来将口令发送至服务器。要获取更多
信息,请参阅 口令加密。
SQLH_TYPE
当设置为 FILE 时,指定在 sqlhosts 文件中指定
的数据库信息(诸如 host-name、port-number、
user 和 password)。
当设置为 LDAP 时,指定在 LDAP 服务器中指定此信
息。要获取更多信息,请参阅 动态地读取 GBase
8s
sqlhosts 文件。
SQLIDEBUG
指定要将二进制 SQLI 踪迹写至其中的文件的路径名
称。为每个连接生成新的踪迹文件,并以时间戳做前
缀。
当受到 GBase 技术支持代表指导时,
请仅使用
SQLI 踪迹功能。
SRV_FET_BUF_SIZE
在与其他数据库服务器的分布式事务中,覆盖访存缓
冲区大小的缺省设置。例如,该访存缓冲区保存由跨
服务器分布式查询检索的数据。
STMT_CACHE
当设置为 1 时,
使得在会话中能够使用共享语句高速
缓存。
此特性可减少内存消耗,并提高不同用户会话之间的
查询处理速度。驱动程序不使用此变量;它只是将该
值传给服务器。
TRUSTED_CONTEXT
当设置为 TRUE 时,
从客户机发送受信的连接请求。
或者建立成功的受信连接,或者从服务器返回下列错
误:SQL Exception: -28021(Trusted Connection
request rejected.)
要获取特殊环境变量的详尽描述,请参阅 《GBase 8s SQL 指南:参考》。
代码示例 IFX_LOCK_MODE_WAIT 环境变量

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 39 -
IFX_LOCK_MODE_WAIT
Connection conn = DriverManager.getConnection ( "jdbc:GBASEDBT-sqli://cleo:1550:
GBASEDBTSERVER=cleo_921;IFXHOST=cleo;PORTNO=1550;user=rdtest;
password=my_passwd;
IFX_LOCK_MODE_WAIT=1";);
代码示例 IFX_ISOLATION_LEVEL 环境变量
IFX_ISOLATION_LEVEL
Connection conn = DriverManager.getConnection( "jdbc:GBASEDBT-sqli://cleo:1550:
GBASEDBTSERVER=cleo_921;IFXHOST=cleo;PORTNO=1550;user=rdtest;
password=my_passwd;
IFX_ISOLATION_LEVEL=1U";);
重要:
当它是至数据库的显式连接时,
可在 URL 中设置隔离属性。
对于仅限于服务器的连接,
在连接时刻忽略此属性。
代码示例 IFX_ISOLATION_LEVEL 环境变量
Connection conn = DriverManager.getConnection( "jdbc:gbasedbt-sqli://localhost:9088
/csdk_db:GBASEDBTSERVER=ol_ids_1150_1;user=gbasedbt;password=inform123;
LOGINTIMEOUT=60000";);

本节提供有关以下主题的信息:
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 通用库的线程安
全版本。

集群中有:
数据加工用户:UserA, UserB;
查询用户:UserC,UserD,UserE;
抽查用户:UserCheck;
要求抽查用户UserCheck 查询时能够得到最高的优先级,并且能够预留内存和磁盘
I/O 资源给UserCheck。