温馨提示×

informix在centos怎样优化

小樊
40
2026-10-03 01:06:23
栏目: 智能运维

下面从 操作系统层、数据库参数层、存储与 SQL 层 三个维度,系统讲一下 Informix 在 CentOS 上的常见优化思路(以较常见的 Informix 11.x / 12.x / 14.x 为例,具体版本会有差异)。


一、CentOS 系统层优化

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

常见需要调整的:

kernel.shmmax = 物理内存的 80%+
kernel.shmall = shmmax / page_size
kernel.sem = 250 32000 100 128
net.core.rmem_max = 4194304
net.core.wmem_max = 4194304
vm.swappiness = 10

执行:

sysctl -p

2. 文件系统与挂载选项

  • 使用 xfs 或 ext4
  • 挂载参数示例:
noatime,nodiratime,barrier=0

(生产环境 barrier 需评估)

3. 大页(HugePages)

对内存大的实例建议开启:

vm.nr_hugepages = 内存/2MB

Informix 可配置使用大页。

4. 资源限制(/etc/security/limits.conf)

informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 2048

二、Informix 核心参数优化(onconfig)

1. 内存相关

BUFFERS        = 物理内存 20%~40%
LRUS          = CPU 核数
CLEANERS      = LRUS / 2 ~ LRUS
SHMVIRTSIZE   = 初始虚拟内存
SHMADD        = 增量

2. CPU 相关

NUMCPUVPS     = CPU 核数(或略少)
MULTIPROCESSOR = 1
VPCLASS cpu   = 显式配置

3. 磁盘 I/O

DBSPACETEMP   = 多块 temp dbspace
RA_PAGES      = 16~64
RA_THRESHOLD  = 一半

4. 日志与检查点

LOGBUFF       = 64~256
PHYSBUFF      = 64~256
CKPTINTVL     = 按业务调整

三、存储与 Dbspace 优化

1. 磁盘分离原则

  • 物理日志(phylog)
  • 逻辑日志(logdbs)
  • 数据 dbspace
  • 临时表空间(tempdbs)

不要全放一块盘

2. 使用裸设备 or 块设备

  • 老版本:裸设备性能更好
  • 新版本:块设备 + 好存储也可

3. 分片(Fragmentation)

大表按:

  • 轮询(round-robin)
  • 表达式(range/hash)

四、SQL 与索引优化

1. UPDATE STATISTICS

UPDATE STATISTICS HIGH FOR TABLE tab1;

定期执行(尤其数据变化大时)

2. 索引设计

  • 高选择性列建索引
  • 避免过多索引(写性能)
  • 覆盖索引减少回表

3. SQL 优化

  • 避免 SELECT *
  • 避免函数包裹索引列
  • 使用 SET EXPLAIN ON 看执行计划

五、监控与调优工具

onstat -g mgm
onstat -g ses
onstat -g ioq
onstat -g buf
onstat -p

重点看:

  • 缓冲区命中率
  • I/O 队列
  • 锁等待
  • 长事务

六、典型优化顺序(建议)

  1. 系统资源是否瓶颈(CPU/IO/内存)
  2. onconfig 内存与 CPU 参数
  3. dbspace 布局
  4. 统计信息 & 索引
  5. SQL 改写

如果你能提供:

  • Informix 版本
  • CentOS 版本
  • 内存 / CPU / 磁盘类型
  • 主要业务类型(OLTP / 报表)

我可以给你一套 可直接用的 onconfig 示例参数。

0 踩