温馨提示×

linux informix怎么调优

小樊
38
2026-09-14 04:54:10
栏目: 智能运维

在 Linux 上运行 IBM Informix(IDS) 的调优,通常从 操作系统层、数据库实例参数、SQL 与索引、存储与 I/O、监控工具 几个方面入手。下面给你一套实用调优思路,偏生产环境可用。


一、Linux 操作系统层调优

1. 内核参数(shmmax / shmall / sem)

Informix 大量使用共享内存。

# 查看
ipcs -l

# 示例(根据内存调整)
kernel.shmmax = 物理内存的 80%
kernel.shmall = shmmax / PAGE_SIZE
kernel.sem = 250 32000 100 128

修改后:

sysctl -p

2. 文件系统与 I/O 调度

  • 推荐使用 XFS / ext4
  • I/O 调度器:
echo deadline > /sys/block/sda/queue/scheduler
  • 数据库文件避免放在 /tmp

3. 关闭无关服务

  • 关闭 NUMA(Informix 不友好):
numactl --interleave=all oninit
  • 关闭透明大页(THP):
echo never > /sys/kernel/mm/transparent_hugepage/enabled

二、Informix 实例参数调优(onconfig)

1. 内存相关

BUFFERPOOL size=4k,buffers=100000
BUFFERS  (自动或显式)
LOCKS    100000
LOGSIZE  根据事务量

经验:

  • BUFFERPOOL 占物理内存 40%~60%
  • OLTP:小 buffer(2k/4k)
  • DSS(分析):大 buffer(8k/16k)

2. CPU 与 VP 配置

NUMCPUVPS=逻辑CPU数-1
SINGLE_CPU_VP=0
MULTIPROCESSOR=1

专用机器:

NUMCPUVPS = CPU核数

3. 网络与连接

NETTYPE ipcshm,1,50,CPU
NETTYPE soctcp,4,100,NET

三、存储与 Dbspace 调优

1. 分离 I/O

  • rootdbs(小)
  • datadbs(数据)
  • logdbs(逻辑日志)
  • phydbs(物理日志)
  • tmpdbs(排序)

2. chunk 大小

  • chunk 建议 ≥ 1GB
  • 避免频繁 extend

3. 表分片(Fragmentation)

大表按时间/范围分片:

FRAGMENT BY RANGE (cdate)

四、SQL 与索引调优

1. 使用 SET EXPLAIN

SET EXPLAIN ON;
SELECT ...

查看:

$INFORMIXDIR/tmp/sqexplain.out

2. 索引原则

  • 高选择列建索引
  • 避免函数索引
  • 联合索引顺序很重要

3. UPDATE STATISTICS

UPDATE STATISTICS HIGH FOR TABLE tab1;

或定期:

UPDATE STATISTICS LOW;

五、日志与事务调优

LOGSIZE 50000
LOGFILES 10

长事务处理:

onstat -x
onmode -z <session id>

六、监控工具(非常重要)

常用命令

onstat -p    # 总体性能
onstat -g ses
onstat -g sql
onstat -g ckp
onstat -d    # dbspace
onstat -l    # 日志

关键指标

  • bufreads / bufwrites
  • lockwaits
  • dskreads
  • longtx

七、典型场景建议

场景 建议
慢查询 EXPLAIN + 索引 + 统计信息
CPU 高 VP 数、SQL 并发
I/O 高 dbspace 分离、buffer 增大
锁等待 事务拆分、隔离级别
启动慢 减少 chunk / log

八、如果你愿意,我可以更具体

你可以告诉我:

  1. Informix 版本(11.5 / 12.10 / 14.10)
  2. 是 OLTP 还是报表
  3. 当前瓶颈(CPU / IO / 锁 / 慢SQL)
  4. onstat -p 输出

我可以直接帮你 看参数、给 onconfig 模板。

0 踩