返回首页

gbase数据、南大通用产品文档:GBase8sifx_int8solong() 函数

更新日期:2024年09月11日

ifx_int8solong() 函数将 int8 类型数值转换为 C long 类型数值。
语法
mint ifx_int8solong(int8_val, lng_val)
ifx_int8_t *int8_val;
int4 *lng_val;
int8_val

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 767 -
指向 ifx_int8solong() 将其值转换为 int4 整数类型值的 int8 结构的指针。
lng_val
指向 ifx_int8solong() 放置转换的结果处的 int4 整数的指针。

返回代码
0
转换成功。
-1200
int8 类型的数值的大小大于 2,147,483,647。

示例

demo 目录中的文件 int8solong.ec 包含下列样例程序。
/*
* ifx_int8solong.ec *
The following program converts three strings to INT8 types and converts the INT8 type
values to C long type values.Then the values are displayed.

*/

#include

EXEC SQL include "int8.h";

char string1[] = "-1,555,345,698";
char string2[] = "3,235,635";
char string3[] = "553.24";

main()
{
int x;
long l =0;
ifx_int8_t num1, num2, num3;

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

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

if (x = ifx_int8cvasc(string1, strlen(string1), &num1))
{
printf("Error %d in converting string1 to INT8\n", x);
exit(1);
}
if (x = ifx_int8cvasc(string2, strlen(string2), &num2))
{
printf("Error %d in converting string2 to INT8\n", x);
exit(1);
}
if (x = ifx_int8cvasc(string3, strlen(string3), &num3))
{
printf("Error %d in converting string3 to INT8\n", x);
exit(1);
}
printf("\nConverting INT8 to long\n");
if (x= ifx_int8solong(&num1, &l))
{
printf("\tError %d in converting INT8 to long\n", x);
exit(1);
}
else
{
printf("String 1= %s\n", string1);
printf("INT8 value is = %d\n", l);
}

printf("\nConverting second INT8 to long\n");
if (x= ifx_int8solong(&num2, &l))
{

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 769 -
printf("\tError %d in converting INT8 to long\n", x);
exit(1);
}
else
{
printf("String2 = %s\n", string2);
printf("INT8 value is = %d\n",l);
}
printf("\nConverting third INT8 to long\n");

/* Note that the decimal places will be truncated. */

if (x= ifx_int8solong(&num3, &l))
{
printf("\tError %d in converting INT8 to long\n", x);
exit(1);
}
else
{
printf("String3 = %s\n", string3);
printf("INT8 value is = %d\n",l);
}
printf("\nIFX_INT8sOLONG Sample Program over.\n\n");
exit(0);
}
输出

IFX_INT8sOLONG Sample ESQL Program running.

Converting INT8 to long

Executing: ifx_int8solong(&num1,&l)
String 1= -1,555,345,698

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 770 -
The value of the first long is = -1555345698


Converting second INT8 to long

Executing: ifx_int8solong(&num2, &l)
String2 = 3,235,635
The value of the second long is = 3235635


Converting third INT8 to long

Executing: ifx_int8solong(&num3, &l)
String3 = 553.24
The value of the third long is = 553
IFX_INT8sOLONG Sample Program over.

列中当被修改的页达到多少百分比时不再强制清除页。
在有些环境下,页清除程序可以在超过特定百分比时继续清除。
如果启用 AUTO_LRU_TUNING 环境变量,则这个值根据需要自动地更
新。
lrus
缺省是 8。如果启用 MULTIPROCESSOR 配置参数,则缺省大于 8 或
CPU VP 的数目。
number_lrus 值是一个正整数,指定缓冲池中 LRU(最近最少使用)
队列的数目。
取值范围依赖于操作系统的位大小:
 32-bit 平台:8 - 128
 64-bit 平台:8 - 512
指定 LRU 队列越多,就有越多页清除程序并行工作。然而,设置
lrus 域的值过高,可能导致过度的页清除程序活动。
lrus 域的值与 lru_min_dirty 和 lru_max_dirty 域组合在一起,
控制共享内存缓冲区清空到磁盘的频率。
要了解更多信息,请参阅 BUFFERPOOL 及其对页清除的影响。
max_extend
缺省是 8。
extends 表示数据库服务器可扩展缓冲池的最大次数。extends 的
值时从 0 到段的最大数目,依赖于操作系统和位大小:
 32 bit = 16
 UNIX 64 bit = 24
 Windows 64 bit = 8
只有设置 buffers 和 extendable=1,max_extend 域才有效。
memory
缺省是 auto。
max_size 表示缓冲池大小的最大值。max_size 取值范围是:
 一个表示 32
MB
-
4
TB 的整数。您可指定 KB、MB 或 GB 的
大小单位。如果您不指定单位,则缺省单位是 KB。
 auto = 数据库服务器决定分配给缓冲池的共享内存的最大
数量。如果设置,AUTO_TUNE_SERVER_SIZE 配置参数的值
控制缓冲池大小的最大值。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 46 -


next_extend
缺省是 1000。
number_buffers 值是一个大于等于 1000 的整数,指定数据库服务
器用于扩展缓冲池的共享内存缓冲区数目。number_buffers 的最大
值受虚拟共享内存数量的限制。
每四次扩展,number_buffers 值翻倍。
只有设置 buffers 和 extendable=1,next_extend 域才有效。
size
page_size 值指定缓冲区的页大小,
以 KB 为单位。
页大小必须是 2
-
16
KB 且必须是缺省页大小的倍数。
例如,
如果缺省页大小是 2
KB,
则页大小可是 2、4、6、8、10、12、14 或 16。如果缺省页大小是
4 KB,则页大小可是 4、8、12 或 16。缺省值依赖于系统缺省页大
小:
 2 KB 缺省页大小:size=2k
 4 KB 缺省页大小:size=4k
k 是可选的。
start_memory
缺省是 32 MB。
start_size 值表示当数据库服务器启动时缓冲池的初始大小:
 一个表示 32
MB 直到可用共享内存的最大数量的整数。
您可
指定大小单位 KB、MB 或 GB。如果不指定单位,则缺省单
位是 KB。缓冲池的初始大小可以大于 start_size 的值,
因为该大小必须是共享内存段大小的倍数。
 auto = 数据库服务器决定分配给缓冲池的共享内存的初始
数量。
如果您不设置 start_memory 域,则缓冲池的初始大小等于 memory
域的值。
只有设置 memory 域,start_memory 域才有效。
内存格式的缓冲池的大小
如果您使用内存格式,则缺省状态下,缓冲池大小根据需要增长。当平均高速缓存读命中
率低于阈值时,共享内存段添加到缓冲池。您可设置缓冲池的初始大小和大小的最大值,
或允许数据库服务器最优的大小。
如果 extendable 域设置为零,
则缓冲池不增长。
如果设置,
则大小等于 start_memory 域
的值,否则,等于 memory 域的值。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 47 -
当您重启服务器时,缓冲池的大小重置为 start_memory 域的值。
缓冲区格式的缓冲池大小
如果您使用 buffers 格式,则缺省情况下,缓冲池大小不增长。大小等于 buffers 域的
值。
如果您设置 extendable 域为 1,则当平均高速缓存读命中率低于阈值时,共享内存段添
加到缓冲池。您必须在 buffers 域中设置缓冲区的初始数目。您可选择通过设置缓冲区的
数目来扩展缓冲池,以及缓冲池可扩展的最大次数,以及高速缓存命中率。每四次扩展,
添加到缓冲池的缓冲区数目翻倍。
示例:添加一个带 memory 域的 BUFFERPOOL 条目
下列条目创建一个有 10 KB 页大小的缓冲池:
BUFFERPOOL size=10k,start_memory=auto,memory=4gb
缓冲池可扩展到 4 GB。数据库服务器决定缓冲池的初始大小和扩展到缓冲池的大小。
示例:添加一个带有 buffers 域的 BUFFERPOOL 条目
下列条目创建一个有 2 KB 页大小的缓冲池:
BUFFERPOOL
size=2k,extendable=1,buffers=1000,next_buffers=2000,max_extends=8
缓冲池可扩展八次。缓冲池启动时有 1000 个缓冲区。最初三个缓冲池扩展添加 2000 个
缓冲区。第四次到第七次扩展添加 4000 个缓冲区。第八次扩展添加 8000 个缓冲区。
示例:通过添加一个带有不同页大小的 dbspace 来添加一个 BUFFERPOOL 条目
当您用 onspaces 实用程序添加一个带有不同页大小的 dbspace 时,或者当您用
onparams 实用程序添加一个缓冲池时,
在 onconfig 文件中添加一个 BUFFERPOOL 配置参
数条目。下列示例显示一个第三条目:
BUFFERPOOL default,buffers=10000,lrus=8,lru_min_dirty=50.00,lru_max_dirty=60.50
BUFFERPOOL
size=2k,buffers=10000,lrus=8,lru_min_dirty=50,lru_max_dirty=60
BUFFERPOOL size=6k
当您创建一个非缺省页大小的 dbspace 时,如果现有的 BUFFERPOOL 条目存在,则数据库
服务器使用那个条目的页大小。否则,数据库服务器使用来自 BUFFERPOOL 缺省行的值。

显示各节点的命名空间中所有普通表和toast 表的事务状态信息。
名称
类型
描述
node_name
name
数据库进程名称。
relid
oid
表的OID。
schemaname
name
此表的模式名。
relname
name
表名。
seq_scan
bigint
此表发起的顺序扫描数。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
981
名称
类型
描述
seq_tup_read
bigint
顺序扫描抓取的活跃行数。
idx_scan
bigint
此表发起的索引扫描数。
idx_tup_fetc
h
bigint
索引扫描抓取的活跃行数。
n_tup_ins
bigint
插入行数。
n_tup_upd
bigint
更新行数。
n_tup_del
bigint
删除行数。
n_tup_hot_u
pd
bigint
HOT 更新行数(比如没有更新所需的单独索引)。