返回首页

gbase数据、南大通用产品文档:GBase8sPC_POOLSIZE 配置参数

更新日期:2024年09月11日

使用 PC_POOLSIZE 配置参数来指定存储在 UDR 高速缓存中的用户定义的例程的最大数
目。
onconfig.std 值
PC_POOLSIZE 127

一个正值 127 或更大,表示高速缓存中条目的初始最大数目的一半。最大值依赖于共享内
存配置和服务器实例的可用共享内存。
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wm 命令增加内存中的该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
高速缓存中条目的初始数目是 PC_POOLSIZE 配置参数值的两倍。例如,如果 PC_POOLSIZE
配置参数设置为 127,则高速缓存中允许 254 个条目。 如果高速缓存中所有条目填满,

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

则高速缓存大小自动地增长 10%。要降低高速缓存的大小,请减小 onconfig 文件中
PC_POOLSIZE 配置参数的值并重启服务器。

当您更新超级表的行时,更新的作用域是超级表及其子表。
当您对超级表构造 UPDATE 语句时,您可更新该超级表中的所有列,以及从该超级表继
承的子表的列。例如,下列语句更新来自 employee 和sales_rep 表的行,它们是超级
表 person 的子表:
UPDATE person
SET salary=65000
WHERE address.state = 'CA';
然而,对超级表的更新不允许您更新不在该超级表内的子表的列。例如,在前面的更新语
句中,您不可更新 sales_rep 表的 region_num 列,因为region_num 列未出现在 employee 表
中。
当您对超级表执行更新时,请注意该更新的作用域。例如,对 person 表的 UPDATE 语句
未包括 WHERE 子句来限定要更新的行,
该语句修改person、
employee 和 sales_rep 表的所
有行。
要限定为仅对超级表的行更新,
您必须在 UPDATE 语句中使用 ONLY 关键字。
例如,

列语句仅更新 person 表的行:
UPDATE ONLY(person)
SET address = ROW('14 Jackson St', 'Berkeley',
address.state, address.zip)
WHERE name = 'Sallie, A.';
重要: 当您更新超级表的行时,请小心使用,因为对超级表的更新的作用域包括该超级表及其
所有子表。

sql 语句
1.
在GBase JDBC 中,不要执行“set names”来设置字符集,因为驱动
不会发现字符集已经改变,而是会继续使用在初始化连接设置时使用
的字符集。
2.
在GBase JDBC 中,不要执行“use database”来试图改变当前
Statement 使用的数据库,因为驱动不会发现你已经切换了数据库,
针对使用人员不能通过接口明确知道当前使用的数据库,容易导致将
目标sql 执行到非预期的数据库上。
正确做法是通过Connection.setCatalog()方式切换数据库,且只能在
Statement 创建之前改变数据库,
一旦Statement 创建了就不能修改其使用
的数据库。
正确用例参考如下:
conn.setCatalog("test1");

Statement stm1= conn.createStatement();

conn.setCatalog("test2");

Statement stm2= conn.createStatement();
这样stm1,stm2 分别使用test1,test2。



- 2 -

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