数据库内存管理
GBase 8s共享内存按类型分为3类:常驻内存段(Resident Segment)、虚拟内存段(Virtual Segment)和消息段(Message Segment)。
内存的管理通过ONCONFIG参数来设置。通过onstat命令查看内存使用情况。
一、数据库常驻内存段
简单介绍常驻内存中几个重要部分的参数设置。
PHYSBUFF 128,单位为K,物理日志缓存,最大值为:(32767*pagesize/1024),pagesize为系统默认的pagesize,Linux为2K,AIX 4K。一般设置为128~1024即可,负责项目中的一个实际环境设置的是2048。现在正式环境下一般直接用16K,数据空间也用16K。
LOGBUFF 64,单位为K,逻辑日志换成,最大值为:(32767*pagesize/1024),pagesize为系统默认的pagesize,Linux为2K,AIX 4K。一般设置128以上,负责项目中的一个实际环境设置的是1024,从性能角度建议比较大的值。如果采用了Buffer的日志模式,那么从数据丢失的安全角度考虑,LOGBUFF值应设置得尽量低。
BUFFERPOOL修改:
BUFFERPOOL default,buffers=10000,lrus=8,lru_min_dirty=50.00,lru_max_dirty=60.50
BUFFERPOOL size=2k,buffers=435000,lrus=32,lru_min_dirty=50,lru_max_dirty=60
BUFFERPOOL size=16k,buffers=425000,lrus=64,lru_min_dirty=50,lru_max_dirty=60
二、数据库虚拟内存段:
RESIDENT 0:是否将内存段、包括常驻内存驻留,即启动时将内存从系统分配给GBase 8s,如果内存较大,则启动过程较长。
SHMBASE 0x4000000L:一般为默认值即可,特别是在单服务器安装多个实例的情况下。
SHMVRTSIZE 1024000:虚拟内存段大小,按性能考虑,一般配置在4GB以上。
SHMADD 1024000:虚拟内存段每次自动扩展的大小。
SHMTOTAL 0:GBase 8s使用内存总量设置(包括常驻内存、虚拟内存段、消息内存段)、0表示不限制大小,直至系统使用完。建议:在生产系统中为保障系统安全、防止系统存在内存溢出、导致系统内存耗尽的情况下,可以设置一个合理的上限值。
三、数据库消息段
当应用程序和服务器部署在同一台物理服务器上时,采用共享内存通信的机制,GBase 8s将使用一块独立的内存来进行应用程序和服务器间的通信,可以提高通信的效率。
数据库网络连接管理
一、数据库网络配置
数据库服务器可以通过共享内存、流通道和TCP/IP协议方式连接。在默认情况下服务器会生成一个poll线程(poll thread),该线程允许至多50个用户访问数据库。如果使用DBSERVERNANE命令设置数据库服务器的名称,那么CPU VP就会启动一个poll thread;如果通过DBSERVERALIAS命令设置数据库服务器的名称,那么会先启动一个网络VP(SHM、STR、TLI或SOC),然后该VP会启动一个针对网络协议的poll thread。
GBase 8s数据库服务器支持多种连接协议和方式,因此可以设置多个NETTYPE。配置NETTYPE时可以采用如下格式:
NETTYPE protocol,#poll_threads,max_connections,vp_class
NETTYPE中字段说明如下表:
Protocol 在sqlhost文件中记录的该servername对应的网络协议
#poll_threads poll thread的个数
max_connections 可以连接到每个poll thread的最大用户个数
vp_class 取值为CPU或NET:当取值为CPU时,poll thread将由VPCLASS设置的CPU VP启动;当取值为NET时,当服务器启动时,将由相应的SHM、STR、TLI或SOC VP启动
以下例子为配置一个拥有两个poll thread,允许最多100个用户同时连接的socket连接:
NETTYPE soctcp,2,100,CPU
二、数据库网络监控
可以通过onstat -g命令查看数据库实例的网络状态,命令选项如表
ntu 显示网络用户的线程读写信息
ntt 显示网络用户的线程访问时间
ntm 显示网络消息信息
ntd 显示网络分派信息
nss sessionid 显示sessionid指定的会话的网络共享内存状态
nsc clientid 显示clientid指定的用户网络共享内存状态
nsd 显示网络共享内存状态




