在 Ubuntu 上优化 IBM Informix 性能,通常从操作系统层、Informix 参数配置、存储与磁盘 I/O、内存管理、SQL 与应用几个方面入手。下面给你一套比较实用的优化思路(适用于 Online/IDS 常见版本)。
Informix 重度依赖 System V 共享内存和信号量。
编辑 /etc/sysctl.conf:
kernel.shmmax = 4294967296 # 4GB,按需调整
kernel.shmall = 1048576
kernel.sem = 250 32000 100 1024
生效:
sysctl -p
noop 或 deadline(云/SSD 环境):echo deadline > /sys/block/sda/queue/scheduler
减少 CPU 抢占:
systemctl disable snapd
systemctl disable bluetooth
对大内存实例有帮助:
vm.nr_hugepages = 2048
核心配置文件:$INFORMIXDIR/etc/onconfig
BUFFERS 100000 # 缓冲池页数(关键)
LOCKS 20000
LOGSIZE 5000
PHYSFILE 20000
根据 CPU 核数调整:
VPCLASS cpu,num=8 # 8核示例
VPCLASS aio,num=4
CKPTINTVL 300
大表按时间或范围分片:
CREATE TABLE orders (
id INTEGER,
odate DATE
) FRAGMENT BY EXPRESSION
odate < '2023-01-01' IN dbs1,
odate >= '2023-01-01' IN dbs2;
UPDATE STATISTICS HIGH FOR TABLE tab;
SET EXPLAIN ON;
查看 sqexplain.out
INSERT ... SELECTLOAD / UNLOADCOMMITonstat -p # 性能
onstat -g ses # 会话
onstat -g io # I/O
top
iostat -x 1
vmstat 1
| 现象 | 可能原因 |
|---|---|
| CPU 满 | VP 数量不足 |
| I/O 高 | 缓冲池小 |
| 锁等待 | 事务过长 |
| 日志慢 | 日志盘混用 |
如果你愿意,可以告诉我:
onconfig 关键参数我可以帮你做针对性调优方案。