首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

最快 Informix DBA 大賽揭秘:冠軍如何在 4 分鐘跑完 30 分鐘基準測試

     編輯:DB2 教學

賽制回顧

IIUG Informix Conference 舉辦「最快 Informix DBA」競賽:在簡單客戶結帳流程植入錯誤 SQL、ONCONFIG 預設錯誤配置,模擬日常挑戰。基準測試原需 30 分鐘,冠軍壓縮至 4 分鐘內。

關鍵成功因素:先分析,再行動

  • 提供文檔 (代碼/預期結果) 與影片 (問題描述/執行示範)。
  • 花時間研讀材料的選手成績更好,因能更聚焦任務。
  • 例:故意設極高緩衝流通率、單磁碟環境 (並行讀寫無用)。冠軍從數據/模式發現問題,所有成功者皆先研究分析再制訂計劃。

ONCONFIG 核心調優參數 (針對賽制環境,非通用建議)

參數冠軍策略原理
BUFFERPOOL用近半 RAM (3GB) 做緩衝;建 16KB 頁面 dbspace (預設 2KB),分配 1/3 記憶體給 16KB 緩衝解決記錄超出 2KB 頁面導致緩衝抖動;大頁面留住更多記錄在記憶體,影響最大
LRU 清理器增加 LRU 查詢數有效管理額外記憶體頁面
SHMVIRTSIZE最大幅度增加大量 GROUP BY 需更多虛擬記憶體配合 PDQ 在記憶體完成
DS_TOTAL_MEMORY增加PDQ 操作記憶體,助排序/索引建立
DS_NONPDQ_QUERY_MEM增加單磁碟 PDQ 無用,非 PDQ 排序需記憶體
LOCKS預設足夠大值避免動態擴展 (動態增量有限)
RESIDENT啟用鎖定 Informix 在記憶體,防 OS 換出
CPU VP設 3-4 (四核機器)利用所有 CPU 核心
DBSPACETEMP定義並標識臨時 dbspace,甚至建 2-3 個預設未定義致用 rootdbs 排序/臨時檔;定義後可並行讀寫 tempdbs
其他PHYSBUFF、LOGBUFF、DIRECT_IO、VP_MEMORY_CACHE_KB、CLEANERS 亦有調整冠軍發現部分參數極大提速

未被修改:RA_PAGES/RA_THRESHOLD (read-ahead)、索引清理參數、BTSCANNER (或許時間不足)。

模式結構優化:解決大欄位浪費空間與緩衝抖動

  • 故意設計:客戶表 CHAR(2000) 實用 ~100 字符,帳單表 CHAR(1000) 幾乎未用。
  • 導致表溢出 2KB 頁面,緩衝抖動極高。
  • 最佳解:轉為 LVARCHAR 欄位 → 大幅減少基準測試讀寫緩衝數量,對總效能影響最大。
  • 輔助調整:帳單表索引建立移至資料載入後 → 載入更快、索引更緊湊優化;IDS 11.50 建索引自動 UPDATE STATISTICS HIGH,優化器獲更好資訊;客戶表加額外索引助最終查詢。

SQL 語句精簡:刪除冗餘代碼

  • 基準測試含 2 INSERT、3 UPDATE (含子查詢)、2 帶 GROUP BY SELECT (驗證結果)。
  • 故意植入冗餘代碼。理論上 1 INSERT + 1-2 UPDATE 可完成,但無人發現。
  • 較快選手確實刪除無用 SQL 片段。

後續賽事預告

Fastest Informix DBA Contest II:2009/7/18-9/30。10 月 IBM Information On Demand 大會舉辦網絡討論會與 Birds of a Feather 會議。詳見 www.advancedatatools.com/Informix/index.Html。

比賽架構圖
競賽測試環境架構示意
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved