返回首页

gbase数据、南大通用产品文档:GBase8sSRV_FET_BUF_SIZE 环境变量

更新日期:2024年09月11日

使用 SRV_FET_BUF_SIZE 环境变量,可以指定本地数据库服务器用于数据库服务器中
分布式 DML 事务的访存缓冲区的大小。

size 是一个不超过 1048576 (1 MiB) 的正整数,指定用于保存服务器中分布式查询
所检索数据的访存缓冲区的大小(以字节计)。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 198 -
例如,要在使用 C shell 的 UNIX™ 系统上将缓冲区大小设置为 5,000 字节,请输
入以下命令来设置 SRV_FET_BUF_SIZE:
setenv SRV_FET_BUF_SIZE 5000
将 SRV_FET_BUF_SIZE 设置为有效值后,新值将覆盖 SRV_FET_BUF_SIZE 的缺
省值(或先前设置的任何值)。仅当数据库服务器的启动环境中设置了该设置时,它才生
效。
如果未设置 SRV_FET_BUF_SIZE,那么访存缓冲区的缺省设置取决于行大小。
如果将 SRV_FET_BUF_SIZE 设置为小于缺省大小的值或大于 1048576 (1 MiB) 的
值,那么不会发生任何错误。如果为 SRV_FET_BUF_SIZE 指定大于 1048576 的大小,
那么该值将设置为 1048576。
有效的 SRV_FET_BUF_SIZE 设置仅在服务器上的 DML 事务中生效(在这些事务中,
本地数据库服务器作为协调器或作为下级数据库服务器参与其中)。
但是,它对仅访问本地服务器实例的数据库的查询无效,并且不会影响客户机与本地
服务器通信中的访存缓冲区的大小。
BYTE 和 TEXT 对象的处理不会受 SRV_FET_BUF_SIZE 设置的影响。
为本地数据库服务器环境设置 SRV_FET_BUF_SIZE 不会重置在服务器上的 DML
事务中协调本地服务器实例或参与其中的远程服务器实例的访存缓冲区大小。
缓冲区的大小越大,可返回的行就越多,因而本地服务器必须等待数据库服务器返回
行的频率就越低。大型缓冲区可提高在服务器之间传输大量数据的性能。

Insufficient information given for building a time or timestamp Java™ object.
要为构建 java.sql.Timestamp 或 java.sql.Time 对象正确执行字符串到二进制的转换,必须为
所选日期字符串表示指定所有 DATETIME 字段。对于java.sql.Timestamp 对象,必须在字
符串中指定年、月、日,小时,分钟和秒部分。对于 java.sql.Time 对象,必须在字符串表
示中指定小时、分钟和秒部分。

为了提高查询性能,
GBase 8a MPP Cluster 提供了将数据直接加载到内存中的管理
功能,
用户可以将频繁使用的整张表的全部数据或者指定列的数据加载到内存中,
并且在内存中一直保存加载的数据,这样可以减少I/O 操作,实现直接从内存中
访问表数据,提高查询性能的目的。对于集群产品来说,缓存的装载与释放,都
在gnode 层体现。
对于表级、
列级缓存的装载与释放,
主要会涉及到缓存中的两种状态,
即LOCKED
状态和KEEP 状态。

LOCKED 状态DC:
正在被其它线程或算子访问的DC,
访问DC 时要首先对
DC 加锁(LOCK),访问完成再解锁(UNLOCK)。

KEEP 状态DC:
对于访问频繁的表,
为提高访问效率,
通过ALTER TABLE …
CACHE 命令将表中的全部数据(或某列的数据)装载到缓存中,当内存不
足时,不允许对这些DC 进行缓存交换,KEEP 状态的DC 只能通过ALTER
TABLE …NOCACHE 命令进行释放。
KEEP 状态会使数据常驻内存,
减少磁
盘I/O 操作。
对于用户而言,我们建议一般装载表数据占用的内存的空间不要超过可用物理内
存空间的50%。