寫作背景
作為最早出現的關系型數據庫,DB2提供了高層次的數據利用性、完整性、安全性、可恢復性,以及小規模到大規模應用程序的執行能力。并且DB2以擁有一個非常完備的查詢優化器而著稱,其外部連接改善了查詢性能,并支持多任務并行查詢。近幾年來,為了應對爆炸式增長的數據量,DB2也在進行推陳出新,不斷推出完美應對大數據的技術,并持續增強DB2的性能以及可用性。到本書出版之時,DB2已經推出了V10.5版本,并在該版本中提供了列式存儲功能及更加強大的性能提升。
DB2隨著一代代版本的發展,已經成為一個龐然大物,其內部組件眾多,對于SQL語句的處理有時甚至需要調動數十個內部組件進行相互協同。當遇到性能問題時更需要對內部原理有詳細的了解才能進行有效的處理以及應對,否則就會讓人感到無從下手。與Oracle數據庫相比,DB2數據庫的資料顯得相對匱乏,其中鮮有對其內部運行機制進行詳細剖析的資料,這也給DB2的傳播發展帶來了一定的弊端。因此對于這種情況,盡可能地將自己所知分享出來的想法從我腦中涌現,盡可能地對DB2處理過程在流程上進行闡述的念頭一直支持著我完成本書的寫作。
在常見的數據庫問題中,性能問題不僅出現的頻率較高并且很多生產系統中并不存在一個對性能問題進行隔離的高可用機制,正因為如此,在很多關鍵行業的系統中,性能問題往往成為影響生產系統正常運行的最大因素。而性能問題的影響時間有時長達數小時,這樣不僅給生產系統帶來了極大的負面影響,也使業務很難正常進行。
由于性能問題的特殊性,很多情況下問題發生過后并沒有留下任何有效的故障信息,這又給之后的分析處理帶來了一定的難度和困擾,往往并無相關線索可以對其進行求證。而對于性能問題的信息收集及調優方法,目前關于DB2性能調優的資料過于分散,并沒有提供一個很完善的性能解決體系,甚至有些資料中僅僅在套用各個KPI指標對性能問題進行調節,雖然這種方式有時能夠解決一些問題,但在更多時候會顯得無能為力。
在本書中,通過對DB2數據庫的內部機制進行探討,希望能夠讓讀者更好地理解數據庫的運行機制,當性能問題發生時能夠在腦海中對數據庫的整體運作機制有個清晰的認識,這樣才能夠直接有效地對數據庫進行分析與優化。
感謝讀者選擇本書,筆者水平有限,書中錯漏在所難免,敬請讀者朋友諒解,并期望讀者朋友進行指正。
本書結構
全書分為5大篇共13章。第1篇主要對性能問題的定義、影響性能問題的因素、DB2的整體組件結構,以及對于各種類型語句的處理機制進行詳細的探討;第2篇主要針對DB2提供的各個監控工具進行闡述,并提供了一些監控建議;第3篇主要闡述DB2的內部運行機制及各個組件的原理;第4篇包含DB2中內部工具的優化與運行機制,以及DB2在各個平臺中需要注意的性能參數;第5篇對性能優化思路進行了概括性的總結。
第1篇 性能定義及整體架構
第 1 章主要對性能問題的目標進行了闡述和定義,并描述了可能影響各個工作負載的特征,以及可能對其產生性能影響的因素。
第2章對DB2的體系結構進行了基本介紹,并描述了DB2各個組件處理SQL語句的基本原理與機制。
第2篇 性能監控工具及監控技巧
第3章按照監控特性對DB2提供的監控工具進行了基本介紹,并介紹了一些基本的監控技巧。
第3篇 性能分析及內部原理剖析
第4章對優化器的原理進行了探討,闡述了優化器的重寫機制、優化原理及編譯原理,并介紹了如何檢查優化器的估算結果的兩種方法。
第5章介紹了解決優化器編譯問題的的7種性能優化武器,以及何時且如何才能有效地使用這些武器解決實際問題。
第6章描述了為了避免性能問題應該如何對數據庫表及索引進行有效設計,針對合適的場景使用適合的技術才能更有效地避免性能問題的發生。
第7章詳細描述了DB2數據庫的I/O原理,I/O性能通常是數據庫運行過程中最為耗時的一環,本章詳細介紹了DB2相關I/O情景,以及如何有效地提高I/O性能。
第8章詳細介紹了DB2中各個內存池的分配以及作用,并講述了怎樣定位及修復內存泄露的方法。
第9章對數據庫的物理結構進行了詳細剖析,并講解了各種情況下物理結構對于數據庫性能的負面影響及避免方法。
第10章對DB2中鎖及latch等待事件進行了描述與分析,并分享部分等待事件解決案例及心得。
第4篇 實用工具調優及操作系統優化
第11章講述了backup、restore、export、import、load、reorg、runstats等DB2提供的多種實用工具的執行原理以及性能調優方法。
第12章介紹了AIX及Windows平臺上CPU、內存、磁盤I/O及網絡等方面的相關優化參數。
第5篇 性能分析思路及優化總結
第13章對性能分析思路進行了歸納與總結,并按照資源占用問題及響應時間緩慢的問題對數據庫性能問題提供了整體分析的思路與解決方案。