下面从 操作系统层、数据库参数层、存储与 SQL 层 三个维度,系统讲一下 Informix 在 CentOS 上的常见优化思路(以较常见的 Informix 11.x / 12.x / 14.x 为例,具体版本会有差异)。
常见需要调整的:
kernel.shmmax = 物理内存的 80%+
kernel.shmall = shmmax / page_size
kernel.sem = 250 32000 100 128
net.core.rmem_max = 4194304
net.core.wmem_max = 4194304
vm.swappiness = 10
执行:
sysctl -p
xfs 或 ext4noatime,nodiratime,barrier=0
(生产环境 barrier 需评估)
对内存大的实例建议开启:
vm.nr_hugepages = 内存/2MB
Informix 可配置使用大页。
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 2048
BUFFERS = 物理内存 20%~40%
LRUS = CPU 核数
CLEANERS = LRUS / 2 ~ LRUS
SHMVIRTSIZE = 初始虚拟内存
SHMADD = 增量
NUMCPUVPS = CPU 核数(或略少)
MULTIPROCESSOR = 1
VPCLASS cpu = 显式配置
DBSPACETEMP = 多块 temp dbspace
RA_PAGES = 16~64
RA_THRESHOLD = 一半
LOGBUFF = 64~256
PHYSBUFF = 64~256
CKPTINTVL = 按业务调整
不要全放一块盘
大表按:
UPDATE STATISTICS HIGH FOR TABLE tab1;
定期执行(尤其数据变化大时)
SELECT *SET EXPLAIN ON 看执行计划onstat -g mgm
onstat -g ses
onstat -g ioq
onstat -g buf
onstat -p
重点看:
如果你能提供:
我可以给你一套 可直接用的 onconfig 示例参数。