硬件是性能調優的底層支撐,需優先滿足以下要求:
操作系統配置直接影響Informix的資源利用率,需重點調整以下參數:
/etc/sysctl.conf
文件,調整vm.swappiness
(控制交換空間使用傾向,建議設為10-20,減少不必要的內存交換)、vm.watermark_scale_factor
(提升page cache回收效率,建議設為10-20)、kernel.shmmax
(單個共享內存段最大大小,需大于Informix的SHMTOTAL
參數值)。fs.file-max
(系統最大文件描述符數,建議設為65536以上),避免數據庫連接過多導致文件描述符耗盡。noatime
(不更新文件訪問時間,減少寫入次數)、data=writeback
(減少日志開銷,適用于OLAP場景)等選項。echo noop > /sys/block/sdX/queue/scheduler
命令生效。共享內存是Informix的核心內存組件,直接影響數據庫性能,關鍵參數如下:
SHMVIRTSIZE
:共享內存初始虛擬段大?。ńㄗh設為物理內存的10%-20%,如32GB內存設為4GB),避免頻繁擴展導致的性能抖動。SHMADD
:共享內存附加段大?。ńㄗh設為SHMVIRTSIZE
的1/4-1/2,如4GB設為2GB),用于動態擴展共享內存。SHMTOTAL
:共享內存總量限制(建議設為物理內存的50%-70%,如32GB內存設為16GB),需結合系統其他進程需求調整;同時確保/proc/sys/kernel/shmmax
值大于SHMTOTAL
。BUFFERS
:數據緩沖區大?。ńㄗh設為物理內存的30%-50%,如32GB內存設為12GB),用于緩存數據頁;監控onstat -p
中的bufreads/bufwrites
(緩沖池命中率),理想值應**>95%**,未達標可逐步增加BUFFERS
。LRUS
/LRU_MAX_DIRTY
/LRU_MIN_DIRTY
:LRU(最近最少使用)隊列參數(LRUS
設為BUFFERS
的1/8-1/4,如12GB緩沖區設為1500;LRU_MAX_DIRTY
設為50-60%,LRU_MIN_DIRTY
設為30-40%),平衡內存使用與寫I/O壓力。VP負責處理不同類型的任務(如CPU VP處理查詢、AIO VP處理異步I/O),合理配置可提升并發性能:
NUMCPUVPS
:CPU VP數量(建議設為CPU核心數-1,如8核CPU設為7),避免過多VP導致上下文切換開銷;OLAP場景可設為CPU核心數(充分利用多核計算能力)。VPCLASS
:定義VP類(如VPCLASS cpu,num=4
表示配置4個CPU VP;VPCLASS aio,num=2
表示配置2個AIO VP),根據任務類型調整;AIO VP數量建議為NUMCPUVPS
的1-2倍,提升異步I/O效率。AIO_NUM_POOLS
:AIO池數量(建議設為NUMCPUVPS
的1-2倍),減少I/O等待時間。VP_MEMORY_CACHE_KB
(每個VP的內存緩存大小,建議設為BUFFERS
的1/10-1/5,如12GB緩沖區設為2GB),提升VP處理查詢的效率。SHMTOTAL
,如16GB設為8192個);② 執行sudo sysctl vm.nr_hugepages=8192
;③ 在onconfig
中添加HUGEMEM=1
并重啟Informix。CREATE INDEX idx_name ON table_name(column_name)
);避免在索引列上使用函數(如WHERE UPPER(name) = 'JOHN'
會導致索引失效)。CREATE INDEX idx_name_age ON table_name(name, age)
),提升多條件查詢效率。CREATE INDEX idx_covering ON table_name(column1, column2)
),避免回表操作(減少磁盤I/O)。REBUILD INDEX index_name
重建碎片化索引,提升索引查詢效率。WHERE
條件過濾數據);簡化復雜子查詢(如將子查詢分解為多個簡單查詢);限制結果集大?。ㄈ?code>SELECT TOP 100或LIMIT 100
)。UPDATE STATISTICS HIGH FOR TABLE table_name
更新表統計信息,幫助優化器生成更優的執行計劃。LIKE '%keyword'
(會導致全表掃描),如需使用可使用全文索引替代。onstat -g mem
查看內存使用詳情、onstat -p
查看緩沖池命中率、onstat -g seg
查看共享內存段分布)、系統工具(free -m
查看系統內存、vmstat 2 5
查看虛擬內存與I/O活動、iostat -x 2 5
查看磁盤I/O性能)定期監控性能指標。$INFORMIXDIR/online.log
)和慢查詢日志(需開啟SQLTRACE
參數),找出性能瓶頸(如慢查詢、鎖等待)。UPDATE STATISTICS
更新統計信息;每月執行REBUILD INDEX
重建碎片化索引;清理無用臨時表(DROP TABLE temp_table
)和過期數據,釋放存儲空間。