返回首页

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

更新日期:2024年09月11日

Efficient Transparent Compression
Efficient and transparent compression technology can automatically select the
optimal compression algorithm based on data type and distribution, minimizing the
storage
space
required,
reducing
I/O
consumption,
and
improving
query
performance. It supports compression options at the library, table, and column levels,
balancing performance and compression ratio flexibly, and the compression and
decompression process is transparent to users.
From the perspective of saving I/O resources, for analysis systems where I/O is the
main bottleneck, efficient and transparent compression technology can bring about a
performance improvement of about an order of magnitude compared to traditional
row-based databases.

GBase 8a MPP Cluster Technical White Paper
General Data Technology Co., Ltd.
- 11 -
Figure 3-2. Adaptive Transparent Compression Diagram.
1)
Compression ratio can reach 1:2 to 1:20 or even better, much higher than
row storage;
2)
Save 50% to 95% of storage space, greatly reducing data processing
energy consumption;
3)
Built-in
dozens
of
different
levels
of
compression
algorithms,
automatically select the best compression algorithm according to data
characteristics;
4)
The I/O requirements are greatly reduced in the compressed state, and data
loading and query performance are significantly improved.

lru_max_dirty 指定已修改页占 LRU 队列的百分比,
达到该百分比时将清除队列。
用于清空检查点之间缓冲池的 LRU 值
对于检查点性能不是特别重要。
lru_max_dirty 值通常仅在维持足够数
量的干净页以供替换时才显得必要。通
过设置 LRU 清空参数以将
lru_max_dirty 设置为 80 来启动。
有关更多信息,请参阅用于清空检查点
之间缓冲池的 LRU 值。
0 到 100(允许小数值)
如果超过值的范围指定参数,
那么缺省值将被设置为

GBase 8s ESQL/C 提供名为优化消息传输的功能,它可以让大多数 GBase 8s ESQL/C
语句使数据库服务器的信息传输最小化。
GBase 8s ESQL/C 通过将消息链接在一起,甚至消除一些小的消息数据包来实现优化
的消息传输。当优化的消息传输功能被启用时,GBase 8s ESQL/C 期望 SQL 语句将会成
功。因此,GBase 8s ESQL/C 在某些情况下消除了数据库服务器的确认消息。
当启用 OPTMSG 功能时,您的 GBase 8s ESQL/C 应用程序无法对任何链接的语句
执行错误处理。如果您不确定特定语句是否可能生成错误,请包括错误处理代码,并且不
要为该语句启用消息链接。
优化消息传输的限制
GBase 8s ESQL/C 不会链接以下 SQL 语句,即使您启用了优化消息传输:
COMMIT WORK
DESCRIBE
EXECUTE
FETCH
FLUSH
PREPARE
PUT
ROLLBACK WORK
SELECT INTO (singleton SELECT)
当 GBase 8s ESQL/C 到达以上任一语句时,
它将消息刷新到数据库服务器。
GBase 8s
ESQL/C 然后继续后续的 SQL 语句的消息链接。只有需要网络流量的 SQL 语句才能使
GBase 8s ESQL/C 刷新消息。
不需要网络流量的 SQL 语句(如 DECLARE 语句)不会导致 GBase 8s ESQL/C 将
消息队列发送到数据库服务器。
启用优化消息传输
要启用优化消息传输,或消息链接,您必须在客户端环境中设置以下变量:

在运行时设置 OPTMSG 环境变量,以使所有的合格 SQL 语句启用优化消息传输。
在 GBase 8s ESQL/C 应用程序中设置 OptMsg 全局变量,以控制哪些 SQL 语句使

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

用消息链接。
设置 OPTMSG 环境变量
OPTMSG 环境变量为应用程序中的所有 SQL 语句启用优化消息传输。

可以将以下值分配给 OPTMSG 环境变量:
1
该值启用优化消息传输, 实现后续任何连接的功能。
0
该值禁用优化消息传输。(缺省)

OPTMSG 环境变量的缺省值为 0。将 OPTMSG 设置为 0 来将禁用显示消息。您可
能需要禁用针对需要即时回复或用于调试目的的语句的优化消息传输。

要启用优化消息传输,您必须在启动 GBase 8s ESQL/C 应用程序前设置 OPTMSG 。


在 UNIX(TM) 操作系统中,可以使用 putenv() 系统调用在应用程序中设置 OPTMSG
(只要您的系统支持 putenv() 函数)

例如,
以下对 putenv() 的调用,
启用优化消息传输:
putenv("OPTMSG=1");

在 Windows(TM) 环境中,可以使用 ifx_putenv() 函数在应用程序中设置 OPTMSG。
例如,以下 ifx_putenv()调用,启用优化消息传输:
ifx_putenv("OPTMSG=1");

当您在应用程序中设置 OPTMSG 时,可以激活或停用每个连接或每个线程中优化的
消息传输。要启用优化消息传输,必须在建立连接前设置 OPTMSG。
设置 OptMsg 全局变量
OptMsg 全局变量在 GBase 8s ESQL/Csqlhdr.h 头文件中定义。

当将 OPTMSG 环境变量设置为 1 后,您必须设置 OptMsg 全局变量来指定消息链
接是否对每个后续 SQL 语句生效。您可以将以下值分配给 OptMsg:
1
该值对每一条后续 SQL 语句启用消息链接。

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

0
该值对每一条后续 SQL 语句禁用消息链接。

将 OPTMSG 环境变量设置为 1,您仍然必须将 OptMsg 全局变量设置为 1 来启用
消息链接。如果您从程序中忽略以下语句,则 GBase 8s ESQL/C 不会执行消息链接:
OptMsg = 1;

当您已经将 OPTMSG 环境变量设置为 1 时,您可能会出于以下原因禁用链接:
某些 SQL 语句需要立即回复。

限制 SQL 语句完成后重新启用 OPTMSG 功能。

出于调试目的
当您尝试确定每个 SQL 语句的响应方式时,可以禁用 OPTMSG 功能。

在程序中的最后一个 SQL 语句执行之前,确保数据库服务器在应用程序退出之前处
理所有消息。如果启用 OPTMSG,则该消息将排队等待数据库服务器,但不会发送进行处
理。

要避免意外链接,
请在需要的 SQL 语句之后立即重置 OptMsg 全局变量。
以下代码
片段为 DELETE 语句启用消息链接:
OptMsg = 1;
EXEC SQL delete from customer;
OptMsg = 0;
EXEC SQL create index ix1 on customer (zipcode);

此示例启用消息链接因为 DELETE 语句的执行不可能失效。因此,它可以安全地链
接到下一个 SQL 语句。GBase 8s ESQL/C 延迟发送 DELETE 语句的信息。该示例在
DELETE 语句之后禁用消息链接,
以使 GBase 8s ESQL/C 刷新下一个 SQL 语句执行时已
排队的所有消息。通过禁用 DELETE 之后的消息链接,代码片段避免了意外的消息链接。
当发生意外的链接时,可能很难确定哪些链接的语句失败。

在 CREATE INDEX 语句中,
GBase 8s ESQL/C 将 DELETE 和 CREATE INDEX 语
句发送给数据库服务器。

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

使用优化消息传输处理错误
当启用 OPTMSG 功能时,您的 GBase 8s ESQL/C 应用程序无法对任何链接的语句
执行错误处理。如果您不确定特定语句是否可能生成错误,请包括错误处理代码,并且不
要为该语句启用消息链接。

当在链接的语句中发生错误时,数据库服务器停止执行。此错误之后的任何 SQL 语
句都不会执行。例如,以下代码旨在链接五个 INSERT 语句(该片段假设 OPTMSG 环境
变量设置为 1):
EXEC SQL create table tab1 (col1 INTEGER);

/* enable message chaining */
OptMsg = 1;

/* these two INSERT statements execute successfully */
EXEC SQL insert into tab1 values (1);
EXEC SQL insert into tab1 values (2);

/* this INSERT statement generates an error because the data
* in the VALUES clause is not compatible with the column type */
EXEC SQL insert into tab1 values ('a');

/* these two INSERT statements never execute */
EXEC SQL insert into tab1 values (3);
EXEC SQL insert into tab1 values (4);

/* disable message chaining */
OptMsg = 0;

/* update one of the tab1 rows */
EXEC SQL update tab1 set col1 = 5 where col1 = 2;
if ( SQLCODE < 0 )
?


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

在此代码片段中,GBase 8s ESQL/C 在到达 UPDATE 语句时刷新消息队列。将五个
INSERT 语句和 UPDATE 语句发送到数据库服务器执行。
因为第三个 INSERT 语句发生
错误,所以数据库服务器不执行剩余的 INSERT 语句和 UPDATE 语句。UPDATE 语句
(它是链接语句中的最后一个语句)从失败的 INSERT 语句返回错误。tab1 表包含 col1
值为 1 和 2 的行。