Informix 在 Linux 上的性能调优是一个系统工程,通常遵循 “先硬件/OS,再数据库参数,再 SQL/应用” 的原则。以下是 Informix on Linux 的核心调优思路和关键参数说明。
vm.swappiness = 1
numactl 避免 NUMA 跨节点访问(大内存服务器)noatime,nodiratimeatimemount -o noatime,nodiratime /dev/sdb /informix
kernel.shmmax = 物理内存的 80%
kernel.shmall = shmmax / PAGE_SIZE
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 4096
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
echo deadline > /sys/block/sda/queue/scheduler
SHMVIRTSIZE 32768 # 初始虚拟内存(KB)
SHMADD 8192 # 每次扩展大小
SHMTOTAL 0 # 不限制(或设为物理内存的 70-80%)
BUFFERS 100000 # 根据内存调整(每个 buffer 约 4KB)
经验值:
LOGBUFF 512 # 单位 KB,OLTP 建议 256–1024
NUMCPUVPS 4 # 逻辑 CPU 的 50–75%
VPCLASS cpu,num=4
VPCLASS aio,num=4
VPCLASS lru,num=2
不要超过物理 CPU 核心数
CKPTINTVL 300 # 秒
PHYSBUFF 512
NUMAIOVPS 4
UPDATE STATISTICS HIGH FOR TABLE tab_name;
SET ISOLATION TO COMMITTED READ;
LOCK TABLESET EXPLAIN ON;
onstat -g seg
onstat -p
onstat -g sql
onstat -g ses
bufwaits 高 → buffer 不足lockwaits 高 → 锁冲突diskio 高 → I/O 瓶颈| 项目 | 建议 |
|---|---|
| 内存 | 70% 分配给 Informix |
| Buffer | 40–60% 内存 |
| CPU VP | CPU 核数 × 0.75 |
| 日志 | 逻辑日志及时备份 |
| 表 | 定期 update statistics |
❌ 盲目增大 BUFFERS
❌ 不更新统计信息
❌ 逻辑日志过小导致频繁 checkpoint
❌ 操作系统使用默认参数
如果你愿意,可以告诉我:
我可以给你一份 可直接落地的 ONCONFIG 配置示例。