Informix在Linux上的性能优化策略
优化Linux内核参数以匹配Informix的内存与I/O需求,关键参数包括:
kernel.shmmax(最大共享内存段大小,建议设为物理内存的50%-75%)、kernel.shmall(系统共享内存总页数,shmall=shmmax/PAGE_SIZE,PAGE_SIZE通常为4KB)、kernel.shmmni(共享内存段最大数量,建议4096);vm.swappiness(交换倾向,降低至10-20以减少磁盘交换)、vm.dirty_ratio(脏页占比阈值,建议20%)、vm.dirty_background_ratio(后台刷脏页阈值,建议10%);fs.file-max(最大文件句柄数,建议65536以上)、net.ipv4.tcp_tw_reuse(允许复用TIME_WAIT套接字,设为1)、net.core.somaxconn(最大连接队列长度,建议65535)。/etc/sysctl.conf后执行sysctl -p生效。ONCONFIG是Informix的核心配置文件,关键参数如下:
SHMVIRTSIZE(初始共享内存大小,建议2-4GB)、SHMADD(共享内存增量,建议512MB-1GB)、SHMTOTAL(共享内存上限,设为0表示无限制);BUFFERS(缓冲池缓冲区数量,建议为物理内存的25%-40%,如16GB内存可设为400万)、LRUS(LRU队列数量,建议8-16)、LRU_MAX_DIRTY(LRU中脏页最大比例,建议50%-60%);MULTIPROCESSOR(启用多处理器支持,设为1)、NUMCPUVPS(CPU VP数量,建议等于CPU核心数-1)、VPCLASS cpu,num=X(设置CPU VP数量为X);LOCKS(锁数量,建议20万-50万,根据并发事务调整)。sysctl vm.nr_hugepages=1024(根据内存调整,如16GB内存设为4096);/proc/sys/vm/watermark_scale_factor(优化page cache回收策略),使用memory cgroup控制内存回收优先级;free -h避免过度使用。noatime,nodiratime(禁用访问时间记录,减少写操作);deadline(适合数据库,减少I/O等待)或noop(若使用SAN存储),通过echo deadline > /sys/block/sdX/queue/scheduler临时修改,GRUB配置永久生效。(user_id, create_time)),避免单列索引过多(影响INSERT/UPDATE性能);UPDATE STATISTICS HIGH更新统计信息,确保优化器选择最佳执行计划。SELECT *(只查询必要字段);INNER JOIN替代OUTER JOIN(若业务允许);SET EXPLAIN ON查看查询执行计划,识别全表扫描、临时表等瓶颈;使用连接池(如DBCP、HikariCP)管理数据库连接,减少连接建立与销毁的开销(连接建立时间约占查询时间的10%-20%)。
调整并行查询参数:DS_MAX_QUERIES(最大并行查询数,建议10-20)、DS_TOTAL_MEMORY(并行查询总内存,建议256MB-1GB)、MAX_PDQPRIORITY(并行查询优先级,建议100),提升大数据量查询性能。
onstat -g seg(查看共享内存段)、onstat -g mem(详细内存使用)、onstat -g sql(SQL语句分析)、onstat -g ses(会话信息)监控性能;top(实时进程监控)、vmstat(内存与I/O)、iostat(磁盘I/O)、sar(系统活动报告)定位瓶颈。UPDATE STATISTICS HIGH,确保优化器选择最佳执行计划;REBUILD(减少索引碎片,提升查询速度);REORGANIZE(整理数据碎片,减少I/O开销);ontape或onbar),测试恢复流程确保数据安全。