优化 Linux 上的 Informix 是一个系统工程,通常从 操作系统、数据库参数、SQL 与应用、硬件与存储 四个层面入手。下面给你一套比较实用、可落地的优化思路(偏生产环境)。
重点调整内存、网络、文件句柄:
# 文件句柄
fs.file-max = 655360
# 共享内存
kernel.shmmax = 17179869184 # 示例:16GB
kernel.shmall = 4194304
# 网络
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_tw_reuse = 1
Informix 大量使用 共享内存 + 信号量,shmmax 一定要够大。
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 65536
informix hard nproc 65536
firewalld / selinux(测试环境)swapoff -a
noatime,nodiratime
BUFFERS 100000 # 数据缓冲区
LRUS 8 # 每个缓冲池的LRU队列
NUMAIO 1 # 启用异步IO
✅ 经验值:
VP_MEMORY_CACHE 0
SORTMEM 5120 # KB
RA_PAGES 64
RA_THRESHOLD 60
RA_PAGES 建议:
PHYSBUFF 512
LOGBUFF 256
CKPTINTVL 300
ALTER INDEX idx_name REBUILD;
UPDATE STATISTICS HIGH FOR TABLE table_name;
查询慢 80% 是因为 统计信息过期
CREATE TABLE t1 (
...
) PARTITION BY RANGE (date_col);
SELECT *| 项目 | 建议 |
|---|---|
| 磁盘 | SSD / NVMe |
| RAID | RAID10 |
| 数据 / 日志 | 分盘 |
| CPU | 多核,关闭超线程测试 |
| 内存 | 越大越好 |
onstat -g mem
onstat -g sql
onstat -g ses
onstat -g io
onstat -g sql
onstat -g stm
你可以直接贴出:
我可以 直接帮你给出一份可执行的优化参数清单。