6GB 實體記憶體機器上,不再受 32 位 2GB 進程地址空間限制,緩衝池可直接配置至 4GB+,大幅降低磁碟 I/O,OLAP 查詢效能提升顯著。
db2setup -console 或響應檔安裝,流程繁瑣易出錯。# 兩種等效寫法,擇一即可
db2set DB2LinuxAIO=YES
db2set DB2NOLIOAIO=FALSE
前置條件:
libaio 開發套件(Mandrake 10.1 需手動裝 SUSE/FC 版 libaio)實測:開啟 AIO 後,大量順序掃描與備份/還原吞吐提升 15%-30%。
db2set DB2_PINNED_BP=YES
將緩衝池頁面釘住在實體記憶體,杜絕被 OS 交換出去。配合 ulimit -l unlimited(鎖定記憶體上限)生效。適用於專用資料庫伺服器、記憶體充裕環境。
/etc/sysctl.conf 不自動生效SLES/SLED 預設 runlevel 不啟動 boot.sysctl,導致核心參數(如 shmmax, shmall)重啟後失效。
修正:yast -> System -> Runlevel Editor -> 勾選 boot.sysctl 或手動 chkconfig boot.sysctl on。
| 參數 | 建議 | 說明 |
|---|---|---|
| kernel.shmmax | 實體記憶體 80-90% | 單一共享記憶體段上限,64位可設極大值 |
| kernel.shmall | shmmax / PAGE_SIZE | 系統共享記憶體總頁數上限 |
| vm.swappiness | 0-10 | 降低積極交換傾向,保護緩衝池 |
| fs.aio-max-nr | 1048576 | 支援高併發 AIO 請求 |
| net.core.somaxconn | 65535 | 避免高併發連線排隊溢位 |