温馨提示×

ubuntu怎么优化informix

小樊
43
2026-09-29 10:43:43
栏目: 智能运维

在 Ubuntu 上“优化 Informix”通常可以从系统层面(OS)、Informix 实例参数(ONCONFIG)、数据库对象和监控工具几个维度来做。下面给你一套比较实用、偏运维向的优化清单。


一、Ubuntu 系统层面优化

1. 内核参数(共享内存 / 信号量)

Informix 依赖 SysV 共享内存和信号量。

编辑 /etc/sysctl.conf:

kernel.shmmax = 4294967296     # 单段共享内存最大(示例4G)
kernel.shmall = 1048576        # 总共享内存页数
kernel.sem = 250 32000 100 1024
net.ipv4.tcp_keepalive_time = 600

生效:

sysctl -p

2. 文件句柄与用户限制

编辑 /etc/security/limits.conf:

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

3. 文件系统

  • 数据空间(dbspace)放 xfs 或 ext4
  • 日志(log)和数据 分开磁盘
  • 关闭 atime:
mount -o remount,noatime /informix

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

常用关键参数(示例为 8–16G 内存机器):

BUFFERS        100000     # 数据缓冲区(页)
LOGSMAX        100
LOGBUFF        512        # 日志缓冲(KB)
PHYSBUFF       512
LOCKS          200000
NUMAIOVPS      4
CPU            4          # 与CPU核数匹配
MULTIPROCESSOR 1
DIRECT_IO     1

页大小常见 2K / 4K,BUFFERS 单位是“页”


三、数据库与 SQL 优化

1. 合理使用索引

CREATE INDEX idx_xxx ON tab(col);
  • 高基数列建索引
  • 避免对索引列做函数计算

2. 统计信息更新

UPDATE STATISTICS FOR TABLE tab;
-- 或
UPDATE STATISTICS HIGH FOR TABLE tab;

3. 表分区(Fragment)

大表按时间/范围分片:

FRAGMENT BY RANGE (col)
PARTITION p1 VALUES < '2024-01-01',
PARTITION p2 VALUES < '2025-01-01';

四、Informix 自带监控与调优工具

1. onstat(最重要)

onstat -        # 实例状态
onstat -p       # 命中率
onstat -g ses   # 会话
onstat -g sql   # SQL

看关键指标:

  • Buffer hit ratio > 95%
  • Lock waits 尽量少

2. oncheck

oncheck -pt db:tab   # 表结构/索引信息

五、常见性能问题速查

现象 可能原因 处理
CPU 高 缺少索引 UPDATE STATISTICS
磁盘 IO 高 BUFFERS 小 增大 BUFFERS
锁等待 长事务 拆分事务
启动慢 日志大 调整 LOGBUFF

六、示例优化流程(推荐)

  1. onstat -p 看命中率
  2. onstat -g sql 找慢 SQL
  3. SET EXPLAIN ON 分析执行计划
  4. 建索引 / 更新统计信息
  5. 调整 ONCONFIG 并重启实例

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

  • Informix 版本(11.5 / 12.10 / 14.10?)
  • Ubuntu 版本
  • 内存 & CPU 配置
  • 主要业务(OLTP / 报表)

我可以直接帮你算一套 ONCONFIG 参数。

0 踩