温馨提示×

Linux Informix如何优化

小樊
48
2026-07-31 13:27:58
栏目: 智能运维

在 Linux 上优化 IBM Informix(IDS) 是一个系统工程,通常从 操作系统 → 数据库参数 → SQL/索引 → 应用架构 逐层进行。下面给你一套实用、可落地的优化指南,适合生产环境。


一、Linux 系统层优化(非常重要)

1. 内存与 Swap

# 建议
- 物理内存充足,Swap 尽量小
- 避免频繁 swap
vm.swappiness = 1
# 查看
free -h

2. 文件系统与 IO

推荐文件系统

  • xfs(推荐)
  • 避免 ext3

磁盘规划

dbspace 数据文件
temp dbspace
逻辑日志
物理日志

分开磁盘 / LUN

IO 调度器

# SSD
echo deadline > /sys/block/sda/queue/scheduler

# HDD
echo deadline > /sys/block/sda/queue/scheduler

3. 内核参数(关键)

vi /etc/sysctl.conf
kernel.shmmax = 17179869184
kernel.shmall = 4194304
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.core.somaxconn = 4096
sysctl -p

4. 文件句柄

vi /etc/security/limits.conf
informix soft nofile 65536
informix hard nofile 65536

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

1. 内存相关(核心)

BUFFERS         100000     # 数据缓存(最重要)
LRUS            8
LUR_MAX_DIRTY   10
LUR_MIN_DIRTY   5
SHMVIRTSIZE     1024
SHMADD          512

✅ 经验值:

  • BUFFERS 占物理内存 40%~60%

2. 日志与检查点

PHYSBUFF        512
LOGBUFF         512
CLEANERS        8

3. 临时表空间

# 使用单独的 temp dbspace
DBSPACETEMP     tempdbs1,tempdbs2

4. PDQ / 并行查询(OLAP)

PDQPRIORITY     50
MAXPDQPRIORITY  100
DS_MAX_QUERIES  10

三、数据库对象优化

1. 索引优化(最重要)

原则

  • WHERE / JOIN / ORDER BY 字段建索引
  • 避免过多索引(影响 insert/update)
CREATE INDEX idx_xxx ON table(col1, col2);

检查缺失索引

SET EXPLAIN ON;

2. 统计信息(非常关键)

UPDATE STATISTICS HIGH FOR TABLE table_name;

UPDATE STATISTICS MEDIUM;

定期执行


3. 表分区(大表)

CREATE TABLE t1 (
  ...
) FRAGMENT BY EXPRESSION
  (c1 < '2023-01-01') IN dbs1,
  (c1 >= '2023-01-01') IN dbs2;

四、SQL 优化

1. 避免全表扫描

SELECT * FROM t WHERE col LIKE '%abc';

SELECT col1, col2 FROM t WHERE col = 'abc';

2. 使用绑定变量

✅ 避免硬解析


3. 使用 EXPLAIN

SET EXPLAIN ON;

重点看:

  • SEQUENTIAL SCAN ❌
  • INDEX SCAN ✅

五、锁与并发优化

1. 锁模式

ALTER TABLE t LOCK MODE (ROW);

2. 减少长事务

  • 批量提交
  • 避免大事务

六、监控与诊断工具

1. 系统

top
iostat -x 1
vmstat 1

2. Informix

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

七、典型优化顺序(推荐)

  1. ✅ Linux 内核 & IO
  2. ✅ ONCONFIG 内存参数
  3. ✅ SQL + 索引
  4. ✅ UPDATE STATISTICS
  5. ✅ 表分区
  6. ✅ 应用层优化

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

你可以直接告诉我:

  • Informix 版本
  • Linux 版本
  • 内存 / CPU / 磁盘
  • 当前主要问题(慢查询 / CPU 高 / IO 高)

我可以 直接给你一份定制优化方案或 ONCONFIG 参数模板

0