Informix 在 Linux 上的优化是一个系统工程,需要从 OS、Informix 实例、数据库、SQL、硬件 五个层面一起做。下面给你一个实用、可落地的优化清单,按优先级排列,适合生产环境。
编辑 /etc/sysctl.conf:
# 共享内存
kernel.shmmax = 68719476736
kernel.shmall = 16777216
# 信号量
kernel.sem = 250 32000 100 128
# 文件句柄
fs.file-max = 655360
# 网络
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 4096
生效:
sysctl -p
/etc/security/limits.conf:
informix soft nofile 65536
informix hard nofile 65536
numactl --interleave=all
或在 BIOS / grub 中关闭 NUMA。
SSD / SAN:
echo deadline > /sys/block/sda/queue/scheduler
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 共享内存
SHMVIRTSIZE 1024
SHMADD 32768
BUFFERS 100000 # 根据内存调整
BUFFERPOOL size=2k,buffers=100000
# 内存排序
SORTMEM 512
# 虚拟内存
VP_MEMORY 500000
经验值:
NUMCPUVPS 8
VPCLASS cpu,num=8,noage
原则:
AUTO_TUNE 1
AUTO_LRU_TUNING 1
LRUS 8
LRU_MAX_DIRTY 60
LRU_MIN_DIRTY 50
ALTER TABLE t LOCK MODE (ROW);
CREATE TABLE t (...) EXTENT SIZE 1024 NEXT SIZE 256;
避免频繁小 Extent。
PDQPRIORITY 10
MAX_PDQPRIORITY 100
DS_TOTAL_MEMORY 200000
适合大查询,不宜过高。
UPDATE STATISTICS HIGH FOR TABLE t;
至少:
UPDATE STATISTICS LOW;
SET EXPLAIN ON;
重点看:
✅ 高选择性
✅ 常用于 WHERE / JOIN
❌ 不要过多(影响写性能)
onstat -g mem
onstat -g buf
onstat -g sql
onstat -k
✅ UPDATE STATISTICS
✅ 加索引
✅ 改 SQL
✅ 减少 CPU VP
✅ 降低 PDQ
✅ 增加 Buffer
✅ 分离 dbspace
你可以提供:
我可以直接给你针对你环境的 ONCONFIG 和优化方案。