在 Ubuntu 上运行 IBM Informix(通常是 Informix Dynamic Server,IDS)时,调优主要围绕 操作系统层、数据库实例配置、SQL 与索引、监控工具 四个方面。下面给你一套比较系统的调优思路(偏实战)。
Informix 对 OS 资源很敏感,Ubuntu 上常见瓶颈在 共享内存、文件句柄、磁盘 IO、swap。
kernel.shmmax = 4294967296 # 共享内存最大段(按需调大)
kernel.shmall = 1048576 # 共享内存总页数
kernel.sem = 250 32000 100 128
fs.file-max = 65536
vm.swappiness = 10 # 减少 swap
执行:
sysctl -p
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 4096
atimemount -o remount,noatime /informix
核心配置文件:
$INFORMIXDIR/etc/onconfig.<servername>
BUFFERS 100000 # 数据缓冲区(页)
SHMVIRTSIZE 32768 # 虚拟内存初始
SHMADD 8192
LOCKS 20000
经验:
onstat -p 的 cache hit ratio(应 >95%)LOGSMAX 100
SET EXPLAIN ON;
生成 sqexplain.out
重点看:
UPDATE STATISTICS FOR TABLE customer;
UPDATE STATISTICS HIGH FOR TABLE orders;
非常关键,否则优化器选错计划。
onstat -i
onstat -p # 性能概要
onstat -m # 消息日志
onstat -d # dbspace/chunk
onstat -g ses # 会话
onstat -g sql # SQL
onstat -g lon # 锁
重点看:
ovlock(锁溢出)dskreads / bufreadspagreads| 现象 | 可能原因 | 处理 |
|---|---|---|
| CPU 高 | 全表扫描 | 建索引 + update stats |
| IO 高 | 缓冲不足 | 增大 BUFFERS |
| 锁等待 | 事务太长 | 拆分事务 |
| 启动慢 | 日志恢复 | 减小 chkpt |
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
如果你愿意,可以告诉我:
onstat -V)我可以直接帮你 给一份 onconfig 参数模板。