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

DB2 UDB V8.1 管理學習筆記(一):核心架構與效能基礎

     編輯:DB2 教學

核心架構層級

  • 實例:作業系統層級,一個 OS 可運行多實例(異於 Oracle 單實例)
  • 資料庫:定義於實例內,一實例可含多資料庫,擁有獨立系統目錄表
  • 表空間:定義於資料庫內,分 SMS/DMS。必備:SYSCATSPACE(系統目錄)、SYSTEMPSPACE(系統暫存)
  • 容器:DMS 對應檔案/裝置,SMS 對應目錄。表空間為邏輯,容器為物理存儲位置

效能關鍵因素(重要性排序)

  1. 磁碟 I/O:90% 瓶頸源頭
  2. 記憶體:物理量足夠 + 參數正確配置
  3. CPU:多核心加速複雜查詢
  4. 網路:環境因素,過慢影響傳輸

磁碟配置最佳實務

  • 多顆小容量實體磁碟優於單顆大容量(分散 I/O 競爭)
  • 資料與 OS 分離不同實體磁碟
  • 採用 DMS 管理模式
  • 建立多表空間分散不同磁碟,分離資料與索引;大表垂直拆分多表空間再用 View 聯合
  • 採用 Raw 裝置:獨立磁碟分區不格式化,建立 Raw 裝置直接交給 DB2 管理
  • 系統暫存表空間影響極大(記憶體不足時寫入磁碟),需置於高速磁碟
  • 資料置於磁碟內軌(存取速度較快)

關鍵記憶體配置參數(資料庫層級)

  • bufferpool:所有物件共享
  • sortheap:排序專用,非共享,**勿設過大**(每交易獨佔,易耗盡記憶體)
  • locklist:共享鎖記憶體,建議 ~20MB,視況調整。過小 → 鎖升級為表鎖降低並發;過大 → 浪費

常用管理指令

db2ilist              # 列出實例
daslist               # 列出 DAS
db2 list database directory
db2 list tablespaces
db2 list tables [for all]
db2 list active databases
db2 get dbm cfg
db2 get db cfg for dbname
db2 update db cfg for dbname using bufferpool 60000
db2 alter bufferpool IBMDEFAULTBP size 1000
db2 list applications show detail

多數指令支援 show detail 顯示完整資訊。

頁面大小與表空間

頁面大小於表空間層級統一指定(異於 Oracle 表級),建立後不可變更。建議:手工建立 4KB DMS 使用者暫存表空間替換預設 SMS,並額外建立 8KB+ 使用者暫存表空間滿足應用需求。

Red Hat 9 相容性問題

  • GUI 安裝程式無法啟動(可設 LD_ASSUME_KERNEL=2.2.5 繞過)
  • 不安裝 SAMPLE 資料庫
  • 控制中心無法正常啟動

實用 SQL 技巧

  • COUNT_BIG() 回傳 DECIMAL(31,0),避免 > 21億筆資料溢位
  • COUNT(DISTINCT col) 忽略重複值計數
  • ORDER BY col1 ASC, col2 DESC 多欄位需各自指定排序
  • ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY 大量載入時暫停日誌
  • 特殊暫存器:CURRENT DATE/TIME/TIMESTAMP, USER
  • 日期運算:CURRENT TIMESTAMP + 2 DAYS/HOURS/MONTHS...
  • CASE WHEN ... THEN ... ELSE ... END 支援巢狀
  • View 不支援 ORDER BY/FETCH FIRST n ROWS,替代方案:CREATE VIEW v AS SELECT * FROM (SELECT ... ORDER BY ...) AS t(影響效能)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved