下面从 操作系统层、数据库参数层、SQL/索引层、监控与工具 四个方面,系统性地说明 Informix 在 CentOS 上的调优方法(以较常见的 Informix 11.7 / 12.10 / 14.10 为例)。
重点关注 共享内存、信号量、文件句柄:
kernel.shmmax = 68719476736
kernel.shmall = 16777216
kernel.sem = 250 32000 100 1024
fs.file-max = 655360
执行:
sysctl -p
Informix 用户(如 informix):
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 16384
informix hard nproc 16384
mount -o noatime /dev/sdb /informix
对大内存实例:
echo 2048 > /proc/sys/vm/nr_hugepages
SHMTOTAL 0 # 0=自动,生产可设具体值
BUFFERS 100000 # 缓冲池(页)
LOCKS 20000
LOGSIZE 10240 # 逻辑日志大小(KB)
BUFFERS 经验值:
物理内存的 30%~50%(OLTP)
NUMCPUVPS 8
MULTIPROCESSOR 1
VPCLASS cpu,num=8
VPCLASS aio,num=4
RA_PAGES 64
RA_THRESHOLD 16
CKPTINTVL 300
LOGFILES 10
LOGSIZE 10240
CKPTINTVL 300
按时间或范围分片:
CREATE TABLE orders (
id INTEGER,
order_date DATE
) FRAGMENT BY RANGE (order_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
PARTITION p0 VALUES < DATE('2024-01-01');
定期更新:
UPDATE STATISTICS HIGH FOR TABLE orders;
或自动:
AUTO_STAT_MODE 1
SET EXPLAIN ON;
SELECT ...
查看:
cat sqexplain.out
SELECT *onstat -g cfg
onstat -p
onstat -g ses
onstat -g sql
onstat -g io
iostat -x 1
vmstat 1
top
NUMCPUVPS 8
BUFFERS 80000
LOCKS 20000
LOGFILES 10
LOGSIZE 10240
CKPTINTVL 300
RA_PAGES 64
如果你能提供:
我可以给你一套 可直接用的 onconfig 模板。