温馨提示×

Linux Informix如何调优

小樊
35
2026-07-05 15:42:03
栏目: 智能运维

Informix 在 Linux 上的性能调优是一个系统工程,通常遵循 “先硬件/OS,再数据库参数,再 SQL/应用” 的原则。以下是 Informix on Linux 的核心调优思路和关键参数说明。


一、Linux 操作系统层调优

1. 内存与 Swap

  • 尽量不使用 Swap
    vm.swappiness = 1
    
  • 保证数据库服务器有足够物理内存
  • 使用 numactl 避免 NUMA 跨节点访问(大内存服务器)

2. 文件系统

  • 推荐使用 XFS / ext4
  • 数据文件建议:
    • noatime,nodiratime
    • 不要使用 atime
  • 示例:
    mount -o noatime,nodiratime /dev/sdb /informix
    

3. 内核参数(sysctl)

kernel.shmmax = 物理内存的 80%
kernel.shmall = shmmax / PAGE_SIZE
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 4096
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

4. 磁盘 I/O 调度

  • SSD:noop / deadline
  • HDD:deadline
echo deadline > /sys/block/sda/queue/scheduler

二、Informix 实例级参数调优(ONCONFIG)

1. 内存相关(最关键)

共享内存

SHMVIRTSIZE   32768        # 初始虚拟内存(KB)
SHMADD        8192         # 每次扩展大小
SHMTOTAL      0            # 不限制(或设为物理内存的 70-80%)

缓冲池(Buffer Pool)

BUFFERS       100000       # 根据内存调整(每个 buffer 约 4KB)

经验值:

  • OLTP:数据库内存的 40–60%
  • DSS/报表:可适当降低

逻辑日志缓冲

LOGBUFF       512          # 单位 KB,OLTP 建议 256–1024

2. CPU 与线程

NUMCPUVPS     4            # 逻辑 CPU 的 50–75%
VPCLASS       cpu,num=4
VPCLASS       aio,num=4
VPCLASS       lru,num=2

不要超过物理 CPU 核心数


3. 磁盘 I/O 相关

检查点

CKPTINTVL     300          # 秒
PHYSBUFF      512

AIO 参数

NUMAIOVPS     4

三、数据库与表级调优

1. 表与索引

  • 使用合适索引
  • 避免重复索引
  • 定期更新统计信息:
UPDATE STATISTICS HIGH FOR TABLE tab_name;

2. 锁与隔离级别

  • OLTP 使用:
SET ISOLATION TO COMMITTED READ;
  • 大量并发时避免 LOCK TABLE

四、SQL 与执行计划

1. 查看执行计划

SET EXPLAIN ON;

2. 常见 SQL 问题

  • 全表扫描(缺少索引)
  • 函数导致索引失效
  • 隐式类型转换

五、日志与监控

1. 查看性能瓶颈

onstat -g seg
onstat -p
onstat -g sql
onstat -g ses

2. 关键指标

  • bufwaits 高 → buffer 不足
  • lockwaits 高 → 锁冲突
  • diskio 高 → I/O 瓶颈

六、典型 OLTP 调优建议(示例)

项目 建议
内存 70% 分配给 Informix
Buffer 40–60% 内存
CPU VP CPU 核数 × 0.75
日志 逻辑日志及时备份
定期 update statistics

七、常见误区

❌ 盲目增大 BUFFERS
❌ 不更新统计信息
❌ 逻辑日志过小导致频繁 checkpoint
❌ 操作系统使用默认参数


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

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

我可以给你一份 可直接落地的 ONCONFIG 配置示例

0