在 Ubuntu 上“优化 Informix”通常可以从系统层面(OS)、Informix 实例参数(ONCONFIG)、数据库对象和监控工具几个维度来做。下面给你一套比较实用、偏运维向的优化清单。
Informix 依赖 SysV 共享内存和信号量。
编辑 /etc/sysctl.conf:
kernel.shmmax = 4294967296 # 单段共享内存最大(示例4G)
kernel.shmall = 1048576 # 总共享内存页数
kernel.sem = 250 32000 100 1024
net.ipv4.tcp_keepalive_time = 600
生效:
sysctl -p
编辑 /etc/security/limits.conf:
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 4096
mount -o remount,noatime /informix
常用关键参数(示例为 8–16G 内存机器):
BUFFERS 100000 # 数据缓冲区(页)
LOGSMAX 100
LOGBUFF 512 # 日志缓冲(KB)
PHYSBUFF 512
LOCKS 200000
NUMAIOVPS 4
CPU 4 # 与CPU核数匹配
MULTIPROCESSOR 1
DIRECT_IO 1
页大小常见 2K / 4K,BUFFERS 单位是“页”
CREATE INDEX idx_xxx ON tab(col);
UPDATE STATISTICS FOR TABLE tab;
-- 或
UPDATE STATISTICS HIGH FOR TABLE tab;
大表按时间/范围分片:
FRAGMENT BY RANGE (col)
PARTITION p1 VALUES < '2024-01-01',
PARTITION p2 VALUES < '2025-01-01';
onstat - # 实例状态
onstat -p # 命中率
onstat -g ses # 会话
onstat -g sql # SQL
看关键指标:
oncheck -pt db:tab # 表结构/索引信息
| 现象 | 可能原因 | 处理 |
|---|---|---|
| CPU 高 | 缺少索引 | UPDATE STATISTICS |
| 磁盘 IO 高 | BUFFERS 小 | 增大 BUFFERS |
| 锁等待 | 长事务 | 拆分事务 |
| 启动慢 | 日志大 | 调整 LOGBUFF |
onstat -p 看命中率onstat -g sql 找慢 SQLSET EXPLAIN ON 分析执行计划如果你愿意,可以告诉我:
我可以直接帮你算一套 ONCONFIG 参数。