温馨提示×

怎么优化CentOS的Informix

小樊
52
2026-07-08 18:33:33
栏目: 智能运维

优化 CentOS 上的 IBM Informix 是一个系统工程,通常从 操作系统、Informix 实例参数、SQL 与索引、硬件与存储 四个层面入手。下面给你一套实用、可落地的优化思路,适合生产环境。


一、CentOS 系统层优化(基础但关键)

1. 内核参数(sysctl)

编辑 /etc/sysctl.conf

# 共享内存
kernel.shmmax = 68719476736
kernel.shmall = 16777216

# 信号量
kernel.sem = 250 32000 100 128

# 文件句柄
fs.file-max = 6815744

# 网络
net.ipv4.tcp_keepalive_time = 300
net.core.somaxconn = 1024
sysctl -p

2. 用户资源限制(ulimit)

编辑 /etc/security/limits.conf

informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 16384
informix hard nproc 16384

3. 关闭不必要的服务

systemctl disable firewalld
systemctl disable selinux

生产环境建议 关闭 SELinux 或设为 permissive


4. 文件系统建议

  • 使用 XFS / ext4
  • 数据目录不要放在 /root
  • 建议:
    • 数据盘:/informix/data
    • 日志盘:/informix/logs

二、Informix 实例参数优化(ONCONFIG)

重点文件:$INFORMIXDIR/etc/$ONCONFIG

1. 内存相关(最重要)

BUFFERS=200000
LRUS=8
LUR_MAX_DIRTY=60
LUR_MIN_DIRTY=50

经验值:

  • BUFFERS ≈ 物理内存的 30%~50% / 4KB
  • 大内存机器建议 使用 SHMVIRTSIZE + VPCLASS

2. 虚拟内存与 CPU

VPCLASS cpu,num=8
VPCLASS aio,num=4

num 一般 = CPU 核数 或略少


3. 日志与检查点

LOGFILES=10
LOGSIZE=50000
CKPTINTVL=300

4. 磁盘 I/O 优化

RA_PAGES=64
RA_THRESHOLD=32

三、数据库与 SQL 优化

1. 索引优化(最常见瓶颈)

  • 避免全表扫描
  • 复合索引顺序要符合查询条件
  • 删除重复/无用索引

查看执行计划:

SET EXPLAIN ON;
SELECT ...

2. UPDATE STATISTICS(非常重要)

UPDATE STATISTICS HIGH FOR TABLE table_name;

定期执行,否则优化器可能选错索引


3. 表分区(大表必做)

CREATE TABLE t1 (
  id INTEGER,
  create_time DATE
) PARTITION BY EXPRESSION (
  PARTITION p1 VALUES (create_time < '2024-01-01'),
  PARTITION p2 VALUES (create_time >= '2024-01-01')
);

四、存储与 I/O 优化

1. 数据文件分布

  • 数据 dbspace ≠ 日志 dbspace
  • 热点表单独 dbspace
onspaces -c -d data_dbs -p /informix/data/data_dbs -o 0 -s 2000000

2. 使用裸设备(老系统)或高性能磁盘

  • SSD > SAS > SATA
  • 避免 NFS 存数据文件

五、监控与诊断工具

1. Informix 自带

onstat -g seg     # 内存
onstat -g sql     # SQL
onstat -g ses     # 会话
onstat -g io      # IO

2. 系统监控

top
iostat -x 1
vmstat 1

六、常见性能问题速查表

问题 原因 解决
CPU 高 索引缺失 加索引
IO 高 全表扫描 SQL 优化
内存不足 BUFFERS 太小 调大
会话堆积 锁等待 查锁
启动慢 日志大 优化日志

七、推荐优化顺序(实战)

  1. ✅ CentOS 系统参数
  2. ✅ ONCONFIG 内存 & CPU
  3. ✅ SQL & 索引
  4. ✅ UPDATE STATISTICS
  5. ✅ 存储分布
  6. ✅ 持续监控

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

  • Informix 版本
  • 数据量 & 并发数
  • 主要慢在哪里(查询 / 写入 / 启动)

我可以 直接给你一套针对你环境的 ONCONFIG 模板和 SQL 优化方案

0