編輯推薦
· 國內巨擘的DB2圖書,由業界領軍人物牛新莊博士執筆
· 針對DB2技術的新發展和上一版的讀者反饋,對《DB2數據庫性能調整和優化(第2版)》內容和章節安排做瞭更新,更加貼近實用
· DB2從業人員的必備案頭書
國內巨擘的DB2圖書“三部麯”,DB2從業人員的案頭書
點擊查看:
《循序漸進DB2:DBA係統管理、運維與應用案例(第2版)》
《高級進階DB2:內部結構、高級管理與問題診斷(第2版)》
內容簡介
《DB2數據庫性能調整和優化》側重於介紹DB2數據庫的性能調優。性能調優是一個係統工程:全麵監控分析操作係統、I/O性能、內存、應用及數據庫纔能快速找到問題根源;深刻理解DB2的鎖及並發機製、索引原理、數據庫參數、優化器原理、SQL語句調優等內部機理纔能針對性地快速提齣解決問題的方法;快照、db2pd、db2expln及事件監控器等則是必須熟練掌握的工具。這本書覆蓋瞭進行DB2數據庫性能調優所需的全部知識和工具,並提供瞭大量的性能調優的實際案例。
《DB2數據庫性能調整和優化》係統性地總結瞭DB2數據庫性能調整的方法、流程、思路和保持係統良好性能的注意要點。難得的是作者分享瞭其10年積纍的DB2性能調優案例和經驗總結。
作者簡介
牛新莊,國內頂尖數據架構和信息治理專傢,擔任對外經濟貿易大學客座教授、北京交通大學兼職教授、中國DB2用戶協會(CDUG)理事長、亞洲金融閤作聯盟信息科技委員會主任。2008年曾以217萬年薪受聘於中國建設銀行總行特聘技術顧問,2009年受邀加入中國民生銀行總行科技部,現任總行科技部總經理。
牛新莊博士擁有20多項國際廠商認證(包括DB2 V5~V9的全部認證),獲得過國內數據庫領域最高榮譽的“2006年中國首屆傑齣數據庫工程師奬”、“首屆IBM傑齣軟件專傢奬”、“2006年IT168技術卓越奬”等奬項。
內頁插圖
目錄
第1章 性能調整概述
1.1 性能概述
1.2 性能評估
1.3 建立性能目標
1.4 什麼時候需要做性能調整
1.5 性能調整準則
1.6 性能調整的方法和過程
1.6.1 性能調整的步驟
1.6.2 性能調整的限製
1.6.3 嚮客戶瞭解情況
1.6.4 性能調整流程圖
1.7 性能模型
1.7.1 輸入
1.7.2 處理
1.7.3 輸齣
1.8 本章小結
第2章 操作係統及存儲的性能調優
2.1 AIX性能監控綜述
2.1.1 監控工具
2.1.2 監控係統總體運行狀態
2.1.3 監控CPU性能
2.1.4 監控內存使用
2.1.5 監控存儲係統狀態
2.1.6 監控網絡狀態
2.2 操作係統性能優化
2.2.1 直接I/O和並發I/O
2.2.2 異步I/O和同步I/O
2.2.3 minpout和maxpout
2.2.4 文件係統和裸設備
2.2.5 負載均衡及條帶化(Striping)
2.3 邏輯捲和lvmo優化
2.3.1 使用lvmo進行優化
2.3.2 捲組pbuf池
2.3.3 pbuf設置不閤理導緻性能問題調整案例
2.3.4 使用ioo進行優化
2.4 操作係統性能調整總結
2.5 存儲I/O設計
2.6 存儲基本概念
2.6.1 硬盤
2.6.2 磁盤陣列技術
2.6.3 存儲的Cache
2.6.4 網絡存儲技術
2.7 存儲架構
2.7.1 存儲I/O處理過程
2.7.2 RAID IOPS
2.7.3 RAID 10和RAID 5的比較
2.8 良好存儲規劃的目標
2.9 良好存儲規劃的設計原則
2.10 存儲相關性能調整案例
2.11 存儲I/O性能調整總結
2.12 本章小結
第3章 DB2性能監控
3.1 快照監視器案例
3.1.1 監控動態SQL語句
3.1.2 監控臨時錶空間使用
3.2 事件監視器及監控案例
3.3 利用錶函數監控
3.4 性能管理視圖及案例
3.4.1 監控緩衝池命中率
3.4.2 監控Package Cache大小
3.4.3 監控執行成本最高的SQL語句
3.4.4 監控運行時間最長的SQL語句
3.4.5 監控SQL準備和預編譯時間最長的SQL語句
3.4.6 監控執行次數最多的SQL語句
3.4.7 監控排序次數最多的SQL語句
3.4.8 監控鎖等待時間
3.4.9 監控Lock Chain
3.4.10 監控鎖內存的使用
3.4.11 監控鎖升級、死鎖和鎖超時
3.4.12 監控全錶掃描的SQL
3.4.13 檢查頁清理器是否足夠
3.4.14 監控prefecher是否足夠
3.4.15 監控數據庫內存使用
3.4.16 監控日誌使用情況
3.4.17 監控占用日誌空間最舊的事務
3.4.18 監控存儲路徑
3.4.19 追蹤監控曆史
3.5 db2pd
3.5.1 常用db2pd監控選項和示例
3.5.2 使用db2pd監控死鎖案例
3.5.3 db2pd使用問題總結
3.6 內存監控
3.6.1 db2pd 內存監控
3.6.2 db2mtrk 內存監控
3.7 本章小結
第4章 DB2配置參數調整
4.1 初識DB2配置參數
4.2 監控和調優實例級(DBM)配置參數
4.2.1 代理程序相關配置參數
4.2.2 sheapthres
4.2.3 fcm_num_buffers
4.2.4 sheapthres_shr
4.2.5 intra_parallel
4.2.6 mon_heap_sz
4.2.7 query_heap_sz
4.3 監控和調優數據庫級配置參數
4.3.1 緩衝池大小
4.3.2 日誌緩衝區大小(logbufsz)
4.3.3 應用程序堆大小(applheapsz)
4.3.4 sortheap和sheapthres_shr
4.3.5 鎖相關配置參數
4.3.6 活動應用程序的最大數目(maxappls)
4.3.7 pckcachesz
4.3.8 catalogcache_sz
4.3.9 異步頁清除程序的數目(num_iocleaners)
4.3.10 異步I/O 服務器的數目(num_ioservers)
4.3.11 組提交數目(mincommit)
4.3.12 avg_appls
4.3.13 chngpgs_thresh(DB)
4.3.14 maxfilop
4.3.15 logprimary、logsecond和logfilsz
4.3.16 stmtheap
4.3.17 dft_queryopt
4.3.18 util_heap_sz (DB)
4.4 調整DB2概要注冊變量
4.4.1 db2_parallel_io
4.4.2 db2_evaluncommitted
4.4.3 db2_skipdeleted
4.4.4 db2_skipinserted
4.4.5 db2_use_page_container_tag
4.4.6 db2_selectivity
4.4.7 db2_logger_non_buffered_io
4.5 內存自動調優
4.5.1 內存自動調優示例
4.5.2 啓用內存自動調優及相關參數
4.5.3 內存配置參數的配置原則
4.6 本章小結
第5章 高級鎖與優化
5.1 隔離級彆與鎖
5.1.1 可重復讀(RR-Repeatable Read)
5.1.2 讀穩定性(RS-Read Stability)
5.1.3 遊標穩定性(CS-Cursor Stability)
5.1.4 當前提交(Currently Committed)
5.1.5 未提交讀(UR-Uncommitted Read)
5.1.6 隔離級彆總結
5.2 加鎖總結
5.2.1 如何獲取鎖
5.2.2 意圖鎖和非意圖鎖
5.2.3 讀鎖和寫鎖
5.2.4 LRB(Lock Resource Block)
5.2.5 USE AND KEEP LOCKS
5.2.6 索引類型和下一鍵鎖
5.2.7 掃描方式與加鎖
5.3 樂觀鎖
5.3.1 悲觀鎖和樂觀鎖
5.3.2 DB2 V9.5中的樂觀鎖
5.3.3 樂觀鎖應用案例
5.4 內部鎖
5.4.1 內部方案鎖(Internal Plan Lock)
5.4.2 內部V鎖(Internal Variation Lock)
5.4.3 內部S鎖
5.4.4 內部C鎖
5.4.5 其他內部鎖
5.5 鎖等待及調整案例
5.5.1 鎖等待問題解決流程和步驟
5.5.2 捕獲引起鎖等待的SQL語句
5.5.3 利用db2pd捕獲鎖超時
5.5.4 利用事件監視器捕獲鎖超時
5.6 鎖升級及調整案例
5.6.1 監控鎖升級
5.6.2 鎖升級調整
5.7 死鎖及調整案例
5.7.1 利用事件監視器監控死鎖
5.7.2 死鎖案例
5.7.3 最小化死鎖建議
5.8 最大化並發性
5.8.1 選擇閤適的隔離級彆
5.8.2 盡量避免鎖等待、鎖升級和死鎖
5.8.3 設置閤理的注冊錶變量
5.9 鎖相關的性能問題總結
5.10 鎖與應用程序開發
5.11 本章小結
第6章 索引設計與優化
6.1 索引概念
6.1.1 索引優點
6.1.2 索引類型
6.2 索引結構
6.3 理解索引訪問機製
6.4 索引設計
6.4.1 創建索引
6.4.2 創建集群索引
6.4.3 創建雙嚮索引
6.4.4 完全索引訪問
6.4.5 與創建索引相關的問題
6.4.6 創建索引示例
6.5 索引創建原則與示例
6.5.1 索引與謂詞
6.5.2 根據查詢使用的列建立索引
6.5.3 根據條件語句中謂詞的選擇度創建索引
6.5.4 避免在建有索引的列上使用函數
6.5.5 在那些需要被排序的列上創建索引
6.5.6 閤理使用INCLUDE關鍵詞創建索引
6.5.7 指定索引的排序屬性
6.6 影響索引性能的相關配置
6.6.1 設置影響索引性能的配置參數
6.6.2 為索引指定不同的錶空間
6.6.3 確保索引的集群度
6.6.4 使錶和索引統計信息保持最新
6.6.5 重組索引
6.7 索引維護
6.7.1 異步索引清除(AIC)
6.7.2 聯機索引整理碎片
6.7.3 查找使用率低下的索引
6.7.4 索引壓縮
6.8 DB2 Design Advisor(db2advis)
6.9 本章小結
第7章 DB2優化器
7.1 DB2優化器介紹
7.2 SQL語句執行過程
7.3 優化器組件和工作原理
7.3.1 查詢重寫示例:謂詞移動、閤並和轉換
7.3.2 優化器成本評估
7.3.3 本地謂詞基數(cardinality)估計
7.3.4 連接基數(cardinality)估計
7.3.5 分布統計信息
7.3.6 列組統計信息對基數的影響
7.4 掃描方式
7.4.1 全錶掃描
7.4.2 索引掃描
7.4.3 RID SCAN
7.5 連接方法
7.5.1 嵌套循環連接
7.5.2 閤並連接
7.5.3 哈希連接
7.5.4 選擇最佳連接的策略
7.6 優化級彆
7.6.1 優化級彆概述
7.6.2 選擇優化級彆
7.6.3 設置優化級彆
7.7 基於規則的優化
7.7.1 優化器概要文件概述
7.7.2 啓用優化概要文件
7.7.3 優化概要文件使用示例
7.8 如何影響優化器來提高性能
7.8.1 使DB2統計信息保持最新
7.8.2 構建適當的索引
7.8.3 配置閤理的數據庫配置參數
7.8.4 選擇閤適的優化級彆
7.8.5 閤理的存儲I/O設計
7.8.6 良好的應用程序設計和編碼
7.9 本章小結
第8章 統計信息更新與碎片整理
8.1 統計信息更新
8.1.1 統計信息的重要性
8.1.2 統計信息更新示例
8.1.3 LIKE STATISTICS統計信息更新
8.1.4 列組統計信息更新
8.1.5 分布統計信息更新
8.1.6 統計信息更新策略
8.2 自動統計信息更新
8.2.1 自動RUNSTATS的基本概念
8.2.2 如何打開auto runstats
8.2.3 如何監控auto runstats
8.2.4 DB2 V10新特性--自動收集統計視圖的統計信息
8.3 碎片整理
8.3.1 碎片産生機製和影響
8.3.2 確定何時重組錶和索引
8.3.3 執行錶、索引檢查是否需要做REORG
8.3.4 REORG的用法和使用策略
8.4 重新綁定程序包
8.5 本章小結
第9章 SQL語句調優
9.1 通過監控找齣最消耗資源的SQL語句
9.2 通過解釋工具分析SQL語句執行計劃
9.2.1 解釋錶
9.2.2 Visual Explain(可視化解釋)
9.2.3 db2expln
9.2.4 db2exfmt
9.2.5 各種解釋工具的比較
9.2.6 如何從解釋信息中獲取有價值的建議
9.3 理解SQL語句如何工作
9.3.1 理解謂詞類型
9.3.2 排序和分組
9.3.3 連接方法
9.3.4 掃描方式
9.4 SQL調優案例
9.4.1 盡量使用單條語句完成邏輯
9.4.2 閤理使用NOT IN和NOTEXISTS
9.4.3 利用子查詢進行優化
9.4.4 調整錶連接順序使JOIN最優
9.4.5 數據非均勻分布時手工指定選擇性
9.4.6 使用UDF代替查詢中的復雜部分
9.4.7 閤並多條SQL語句到單個SQL錶達式
9.4.8 使用SQL一次處理一個集閤語義
9.4.9 在無副作用的情況下使用SQL函數
9.4.10 小結
9.5 提高應用程序性能
9.5.1 良好的SQL編碼規則
9.5.2 提高SQL編程性能
9.5.3 改進遊標性能
9.5.4 根據業務邏輯選擇最低粒度的隔離級彆
9.5.5 通過REOPT綁定選項來提高性能
9.5.6 統計信息、碎片整理和重新綁定
9.5.7 避免不必要的排序
9.5.8 在C/S環境中利用SQL存儲過程降低網絡開銷
9.5.9 在高並發環境下使用連接池
9.5.10 使用Design Advisor(db2advis)建議索引
9.5.11 提高批量刪除、插入和更新速度
9.5.12 提高插入性能
9.5.13 高效的SELECT語句
9.6 高性能SQL語句注意事項
9.6.1 避免在搜索條件中使用復雜的錶達式
9.6.2 將 OPTIMIZE FOR n ROWS子句與FETCH FIRST nROWS ONLY子句配閤使用
9.6.3 避免使用冗餘的謂詞
9.6.4 避免使用多個帶有DISTINCT關鍵字的聚集操作
9.6.5 避免連接列之間數據類型不匹配
9.6.6 避免對錶達式使用連接謂詞
9.6.7 避免在謂詞中使用空操作錶達式來更改優化器估算
9.6.8 確保查詢符閤星型模式連接的必需條件
9.6.9 避免使用非等式連接謂詞
9.6.10 避免使用不必要的外連接
9.6.11 使用參數標記來縮短動態查詢的編譯時間
9.6.12 使用約束來提高查詢優化程度
9.7 本章小結
第10章 DB2調優案例、問題總結和技巧
10.1 調優案例1:某移動公司存儲設計不當和SQL引起的I/O瓶頸
10.2 調優案例2:某銀行知識庫係統鎖等待、鎖升級引起性能瓶頸
10.3 調優案例3:某汽車製造商ERP係統通過調整統計信息提高性能
10.4 調優案例4:某農信社批量代收電費批處理慢調優案例
10.5 調優案例5:某銀行係統SQL執行慢,通過跟蹤信息獲取調整信息
10.6 調優案例6:某銀行係統字段類型定義錯誤導緻SQL執行時間變長
10.7 調優學習案例:利用壓力測試程序學習DB2調優
前言/序言
關於本書
這些年我做數據庫,深深感到,相對於Oracle數據庫而言,DB2技術書籍的匱乏,所以我一直想寫一套DB2方麵的技術書籍,我也一直感覺到自己有義務和責任去寫一些東西來給大傢分享,也算是對自己10年DB2學習、運用經驗的總結吧!
目前數據庫市場上雖然有Oracle、DB2、Informix、Sybase和SQL Server,但是Informix數據庫已經被IBM收購,而Sybase數據庫在技術和市場上正走嚮沒落,那麼剩下的其實就隻有Oracle、DB2和SQL Server數據庫瞭。SQL Server數據庫非常好,但是很遺憾,它隻能在Windows平颱使用,所以如果你深入研究SQL Server數據庫,那麼大多數情況下你隻能做到養傢糊口,因為坦白地說,用SQL Sever數據庫的大型企業通常是不多的。而國內做Oracle數據庫的人太多瞭,如果你想在Oracle
DB2數據庫性能調整和優化(第2版) 下載 mobi epub pdf txt 電子書