温馨提示×

Ubuntu如何优化Informix

小樊
32
2026-08-01 13:02:56
栏目: 智能运维

Ubuntu 上优化 IBM Informix 数据库,通常从 操作系统层、Informix 配置层、硬件/存储层、SQL 与应用层 四个方面入手。下面给你一套实用、可落地的优化清单,适用于大多数生产或准生产环境。


一、Ubuntu 系统层优化

1. 内核参数(非常重要)

编辑 /etc/sysctl.conf

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

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

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

# 网络
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192

应用:

sudo sysctl -p

2. 用户资源限制

编辑 /etc/security/limits.conf

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

3. 关闭不必要的服务

sudo systemctl disable snapd bluetooth cups

减少系统抖动,提升稳定性。


4. 文件系统建议

优选:

  • ext4(稳定)
  • xfs(高并发、大文件)

❌ 不推荐:

  • btrfs
  • overlayfs

挂载参数示例:

noatime,nodiratime,data=writeback

二、Informix 实例与参数优化(核心)

1. ONCONFIG 关键参数

路径示例:

$INFORMIXDIR/etc/onconfig

内存相关

BUFFERS         100000
LRUS            8
LUR_MAX_DIRTY   10
CLEANERS        4
SHMVIRTSIZE     32768
SHMADD          8192

建议:

  • BUFFERS ≈ 物理内存的 30%~50%
  • 不要超过系统共享内存上限

2. 日志与检查点

PHYSBUFF        512
LOGBUFF         512
CKPTINTVL      300

3. CPU 与线程

NUMCPUVPS       8
SINGLE_CPU_VP  0
MULTIPROCESSOR 1

NUMCPUVPS ≈ CPU 核数(不要超过物理核)


4. 磁盘 I/O

RA_PAGES       64
RA_THRESHOLD  32

三、存储与磁盘优化(性能关键)

1. 数据 / 日志 / tmp 分离

强烈建议:

类型 磁盘
rootdbs 普通盘
datadbs SSD / 高速盘
logdbs 低延迟盘
tmpdbs 内存盘 / 高速盘

2. 使用裸设备(可选,高性能)

chown informix:informix /dev/sdb

裸设备比文件系统 I/O 延迟更低


3. 表空间设计

CREATE TABLE t1 (
  id INTEGER
) IN datadbs EXTENT SIZE 1024 NEXT SIZE 256;

避免:

  • 频繁小 extent
  • 默认 rootdbs 放业务数据

四、SQL 与索引优化

1. UPDATE STATISTICS

UPDATE STATISTICS HIGH FOR TABLE orders;

定期执行,避免执行计划退化。


2. 索引策略

✅ 推荐:

  • WHERE / JOIN 字段建索引
  • 复合索引顺序与查询一致

❌ 避免:

  • 过多索引
  • 低选择度字段索引

3. 避免 SELECT *

SELECT id, name FROM customer;

五、监控与诊断工具

1. 系统监控

top
htop
iostat -x 1
vmstat 1

2. Informix 工具

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

3. 慢 SQL 定位

onstat -g sql -r

六、Ubuntu + Informix 常见坑

问题 解决
启动失败 检查 shmmax / limits
中文乱码 设置 DB_LOCALE=zh_CN.utf8
性能抖动 禁用 swap
磁盘满 单独日志盘

七、推荐生产配置示例(16C / 64G)

NUMCPUVPS       12
BUFFERS         400000
SHMVIRTSIZE     32768
SHMADD          8192
LRUS            8
CLEANERS        4

八、如果你愿意,我可以进一步帮你:

  • 针对你的硬件给出精确 ONCONFIG
  • 分析 onstat 输出
  • SQL 执行计划优化
  • Ubuntu + Docker / 虚拟机场景优化

你可以直接贴出:

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

我可以给你定制优化方案

0