温馨提示×

ubuntu中informix咋调优

小樊
39
2026-09-26 12:34:31
栏目: 智能运维

在 Ubuntu 上运行 IBM Informix(通常是 Informix Dynamic Server,IDS)时,调优主要围绕 操作系统层、数据库实例配置、SQL 与索引、监控工具 四个方面。下面给你一套比较系统的调优思路(偏实战)。


一、Ubuntu 系统层调优(很关键)

Informix 对 OS 资源很敏感,Ubuntu 上常见瓶颈在 共享内存、文件句柄、磁盘 IO、swap。

1. 内核参数(/etc/sysctl.conf)

kernel.shmmax = 4294967296        # 共享内存最大段(按需调大)
kernel.shmall = 1048576           # 共享内存总页数
kernel.sem = 250 32000 100 128
fs.file-max = 65536
vm.swappiness = 10                # 减少 swap

执行:

sysctl -p

2. 用户资源限制(/etc/security/limits.conf)

informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 4096

3. 文件系统建议

  • 数据空间用 XFS / ext4
  • 关闭 atime
mount -o remount,noatime /informix
  • 日志盘与数据盘分离

二、Informix 实例层调优(onconfig)

核心配置文件:

$INFORMIXDIR/etc/onconfig.<servername>

1. 内存相关(最重要)

BUFFERS        100000     # 数据缓冲区(页)
SHMVIRTSIZE    32768      # 虚拟内存初始
SHMADD         8192
LOCKS          20000

经验:

  • BUFFERS 占物理内存 30%~50%
  • 观察 onstat -p 的 cache hit ratio(应 >95%)

2. 磁盘与 chunk

  • 多个 dbspace 分离:
    • rootdbs
    • datadbs
    • logdbs(逻辑日志)
    • phydbs(物理日志)
  • chunk 用裸设备性能最好(Ubuntu 上可用 loop 或 LV)

3. 逻辑日志

LOGSMAX        100
  • 逻辑日志不要太小
  • 避免频繁 checkpoint

三、SQL 与索引调优

1. 看执行计划

SET EXPLAIN ON;

生成 sqexplain.out

重点看:

  • 全表扫描(sequential scan)
  • 是否用到索引

2. 索引策略

  • 高选择性字段建索引
  • 联合索引顺序很重要
  • 避免对索引列做函数运算

3. UPDATE STATISTICS

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 / bufreads
  • pagreads

五、典型问题速查

现象 可能原因 处理
CPU 高 全表扫描 建索引 + update stats
IO 高 缓冲不足 增大 BUFFERS
锁等待 事务太长 拆分事务
启动慢 日志恢复 减小 chkpt

六、Ubuntu 特别注意事项

  • 用 systemd 管理 informix
  • 环境变量必须稳定:
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
  • 不要用 Ubuntu 默认自带的老版本(很旧),建议官方包

如果你愿意,可以告诉我:

  • Informix 版本(onstat -V)
  • 数据量 / 并发数
  • 主要慢在 查询 / 写入 / 启动

我可以直接帮你 给一份 onconfig 参数模板。

0 踩