出版時間:2013-7 出版社:清華大學出版社 作者:牛新莊
Tag標簽:無
前言
序一自1970年IBM公司研究員E.F.Codd博士,即“關系數(shù)據(jù)庫之父”,發(fā)表業(yè)界第一篇關于關系數(shù)據(jù)庫理論的論文A Relational Model of Data for Large Shared Data Banks以來,伴隨著DB2的誕生,IBM公司涌現(xiàn)出了一批優(yōu)秀的數(shù)據(jù)庫技術領域先驅(qū)科學家,并獲得了一系列數(shù)據(jù)庫領域大獎,比如1981年榮獲了計算機科學界的最高榮譽——ACM圖靈獎。在此之后,數(shù)據(jù)庫管理軟件在企業(yè)中得到廣泛應用,業(yè)務流程自動化得以實現(xiàn),對日常的工作和生活帶來了深遠的影響。隨著近年來云計算、大數(shù)據(jù)、移動以及社交信息技術的發(fā)展,數(shù)據(jù)技術也正在經(jīng)歷深刻的變革,處于一個全新計算時代的最前沿。我們能夠觀察到這樣一個趨勢:數(shù)據(jù)庫的24×7高可用性、高可伸縮性,以及企業(yè)處理海量信息的方式將趨于實時,并從根本上轉變業(yè)務運作的模式??蛻粼跀?shù)據(jù)處理速度、簡化程度和成本控制等方面需要更上一層樓。最新版的DB2v10.1帶來更低的存儲要求以及更高的響應速度,并添加了對大數(shù)據(jù)管理(比如Hadoop)的支持。更具創(chuàng)新性的PureData 也在這樣的技術潮流中應運而生。它整合了基礎架構、統(tǒng)一了平臺管理和專家知識體系,能夠以不同的配置分別提供OLTP(聯(lián)機事務處理)、OLAP(聯(lián)機分析處理)和大數(shù)據(jù)分析操作的能力。今天的企業(yè)用戶希望他們的數(shù)據(jù)庫能夠可靠高效地運作,并推動業(yè)務發(fā)展。當我們把目光放到中國,就會看到,DB2已成為各行業(yè)大型應用系統(tǒng)的支柱產(chǎn)品。但是因DB2而聞名業(yè)界的本土技術專家,并不多見。認識新莊是在2012年8月北京舉辦的“IBM軟件技術峰會”上。在中國的數(shù)據(jù)庫技術領域,他是許多年輕人的楷模。新莊的成長令人欣喜,新莊對技術和實踐的孜孜不倦令人印象深刻。這套DB2書籍得益于他歷年的鉆研及實踐,對DB2初學者、DB2管理員以及資深從業(yè)者,都有非常好的指導及參考價值。祝愿每一位讀者能有所得、有所悟,成長為新一代的數(shù)據(jù)庫技術專家,也祝愿新莊在數(shù)據(jù)庫技術領域這條康莊大道上走得更寬更遠。IBM全球副總裁兼IBM中國開發(fā)中心總經(jīng)理王陽序二新莊是IBM的老朋友,也是我的老朋友了。雖然我們的見面次數(shù)并不多,但我深感他是一位非常優(yōu)秀的技術專家和管理者。尤其是在技術方面,他有自己的獨特見地,在IT軟件、硬件及解決方案方面都涉獵很廣。另外,他本人也很親和,具有技術專家的風范。在最近一次交流中,他跟我提起他打算把之前出版的3本DB2系列書籍進行全面版本升級,我感到非常欽佩和欣喜。他在繁忙的日常工作之余,還能利用業(yè)余時間完成3本書籍的撰寫和更新,足以證明新莊的勤奮和對技術的熱愛。同時我也欣喜廣大的技術愛好者能有機會分享技術大家的心得。他把他的新書送給我,我先粗略讀了一遍,更詳細的內(nèi)容留待以后的時間里細細品味。他的這3本書籍將幫助數(shù)據(jù)庫愛好者和企業(yè)數(shù)據(jù)庫實踐者由淺入深地學習DB2。即使在網(wǎng)絡日益普及的今天,對于DB2技術工作者來說,通過書籍來系統(tǒng)化地學習同樣很重要。在我看來,閱讀他的書籍有3個最特別之處:第一,他是第一位出版DB2系列中文書籍的作者,隨著這么多年書籍的廣泛傳播,他在此基礎上再次升級更新,結合了非常多的讀者反饋,增加了很多近幾年讀者關注和遇到的問題。這非常難得。第二,他所在單位的核心數(shù)據(jù)庫就是DB2,本次書籍的升級纂寫,也更多結合了他的實戰(zhàn)經(jīng)驗,這將極大幫助更多企業(yè)在應用DB2數(shù)據(jù)庫時借鑒和學習。第三,很多的技術書籍是由專注于技術的工作者撰寫,而新莊同時還是非常重要的技術管理和實踐者。站在管理者的角度撰寫的技術書籍更是融合了一名管理者如何看待技術的處理和看待問題的視角。這幾本書綜合來看,也體現(xiàn)了一名技術管理者樂于分享的心意,這一點是最難得的。最后,讓我表達對新莊的敬意和謝意,感謝他對推動中國的信息化建設和技術的普及所做出的貢獻!希望廣大的技術愛好者和技術管理者好好品味這些書籍,相信你們一定能從中獲益匪淺!IBM全球副總裁兼IBM軟件集團大中華區(qū)總經(jīng)理胡世忠前言關于本書這些年我做數(shù)據(jù)庫,深深感到,相對于Oracle數(shù)據(jù)庫而言,DB2技術書籍的匱乏,所以我一直想寫一套DB2方面的技術書籍,我也一直感覺到自己有義務和責任去寫一些東西來給大家分享,也算是對自己10年DB2學習、運用經(jīng)驗的總結吧!目前數(shù)據(jù)庫市場上雖然有Oracle、DB2、Informix、Sybase和SQL Server,但是Informix數(shù)據(jù)庫已經(jīng)被IBM收購,而Sybase數(shù)據(jù)庫在技術和市場上正走向沒落,那么剩下的其實就只有Oracle、DB2和SQL Server數(shù)據(jù)庫了。SQL Server數(shù)據(jù)庫非常好,但是很遺憾,它只能在Windows平臺使用,所以如果你深入研究SQL Server數(shù)據(jù)庫,那么大多數(shù)情況下你只能做到養(yǎng)家糊口,因為坦白地說,用SQL Sever數(shù)據(jù)庫的大型企業(yè)通常是不多的。而國內(nèi)做Oracle數(shù)據(jù)庫的人太多了,如果你想在Oracle領域出人頭地,難度極大。DB2數(shù)據(jù)庫反而做的人不太多,物以稀為貴。DB2數(shù)據(jù)庫被廣泛應用在銀行、電信、制造、零售、保險等行業(yè),所以我強烈建議你學習DB2數(shù)據(jù)庫,做IBM技術成功的概率會大一些。我們的時間和精力是有限的,所以必須選擇好方向,然后去努力。但是過去一直沒有時間,直到2008年奧運保障期間,有了一些時間,我才寫了這套書。在這套書中,我把應用開發(fā)和系統(tǒng)管理剝離開,分成兩條線來講解,包括循序漸進DB2、高級進階DB2、DB2性能調(diào)整和優(yōu)化這幾大塊。本書側重在數(shù)據(jù)庫的性能調(diào)優(yōu),而性能調(diào)優(yōu)是一個系統(tǒng)工程,全面監(jiān)控分析操作系統(tǒng)、I/O性能、內(nèi)存、應用及數(shù)據(jù)庫才能快速找到問題根源,深刻理解DB2的鎖及并發(fā)機制、索引原理、數(shù)據(jù)庫參數(shù)、優(yōu)化器原理、SQL語句調(diào)優(yōu)等內(nèi)部機理才能有針對性地快速提出解決問題的方法,快照、db2pd、db2expln及事件監(jiān)控器等等則是必須熟練掌握的工具。本書正是覆蓋了性能調(diào)優(yōu)所需要的全部領域,并提供了大量的性能調(diào)優(yōu)的實際案例。本書系統(tǒng)性地總結了DB2數(shù)據(jù)庫性能調(diào)整的方法、流程、思路以及保持系統(tǒng)良好性能的注意要點。最后與讀者分享我10年來積累的DB2性能調(diào)優(yōu)案例和經(jīng)驗總結。本書所講內(nèi)容適用于DB2V7、V8、V9.5、V9.7的所有平臺。本書第1版的出版已有3年時間,這期間收到了很多寶貴的意見反饋,第1版的成書也稍顯匆忙,回過頭來看確實發(fā)現(xiàn)有些細節(jié)是值得修改的。另外,IBM DB2LUW這一數(shù)據(jù)庫產(chǎn)品在這幾年也發(fā)生了很大的變化。從版本上:DB2V9.7成為主流版本,DB2V10.1也已經(jīng)于今年上半年發(fā)布,并且最新的FixPack已經(jīng)發(fā)布到了版本2。技術上更是一日千里:監(jiān)控技術、壓縮技術、分區(qū)技術、并發(fā)控制、性能提升等等各個方面無一不是變化顯著。尤其是purescale等創(chuàng)新型技術的出現(xiàn),大大改變了原有的技術架構。當然這對DBA提出了更多新的要求。同時在性能和調(diào)優(yōu)方面DB2也有了不小改進和提升,并且增加了一些新的功能,在本次修訂中也務求在這些方面有所體現(xiàn)。本書的本次修訂涉及的內(nèi)容較多,合并了原有的第2和第3章為新的一章“操作系統(tǒng)及存儲的性能調(diào)優(yōu)”,對其他所有的章節(jié)也都做了大量的修改,有些章節(jié)的修改幅度很大,希望本次修訂能給各位讀者提供一些新的知識和經(jīng)驗。關于數(shù)據(jù)庫學習“不經(jīng)一番寒徹骨,安得梅花撲鼻香”,這樣的道理人人都懂,可是能夠真正實施的人并不多。在現(xiàn)在的很多年輕人身上,我以為恰恰缺少的就是這樣的忘我與癡迷。在我熟悉的數(shù)據(jù)庫技術領域,很多年輕人越來越早就將注意力集中在薪水和職位上,開始變得浮躁,而我想說的是,往往是那些將諸如高薪與職位忘懷的人反而能更快地抵達。在這里,我想講講我的技術學習之路,主要是想給大家一些參考,尤其是對在校學生而言,我希望我的學習之路能給你以啟迪。我在1999年剛剛開始念碩士時就給自己確定了以后的發(fā)展方向,當時定了兩個:網(wǎng)絡和數(shù)據(jù)庫技術。因為2000年時,網(wǎng)絡特別火,能擁有CCNP、CCIE就特別牛,所以自己也考了CCNP證書,但是到后來我發(fā)現(xiàn)網(wǎng)絡牽涉很多硬件層面的東西,對廠商的依賴特別強,而且面特別窄。所以慢慢就把這個方向放棄了。而我喜歡鉆研,所以我就選擇了數(shù)據(jù)庫技術。在確認好數(shù)據(jù)庫這個方向后,我深入系統(tǒng)地學習了數(shù)據(jù)庫理論方方面面的知識,我還記得人大王珊教授的那本《數(shù)據(jù)庫系統(tǒng)原理教程》,我讀了幾十遍,受益匪淺。在對數(shù)據(jù)庫理論學習的同時,我也開始了對DB2和Oracle的深入學習。我是從1999年開始使用DB2V5.2的,那時因為我導師做一個課題需要用到DB2數(shù)據(jù)庫。那時市場上關于DB2方面的技術書籍幾乎沒有,互聯(lián)網(wǎng)還不像現(xiàn)在這么發(fā)達,自己只能依靠查看DB2隨機文檔來學習。那時,我用自己兼職幫別人做一些小軟件和課題賺的錢去考OCP認證和DB2認證。其實我認為考認證是一個很好的外界動力來促使自己學習,因為考試需要很大一筆花費,所以不想浪費錢的話就只能拼命地看書。那時讀研究生有的是時間,所以在2000年我就通過了OCP8i的認證,后來又陸續(xù)通過了DB2V5.2的認證,通過這些認證大大增強了自己的自信。同時,我?guī)蛯熥鰬贸绦虻拈_發(fā)工作,那時用的是PB、Delphi等編程工具,在開發(fā)中我有意識地增強自己對SQL的學習,這對我后來的性能調(diào)優(yōu)非常有幫助。因為很多時候在客戶現(xiàn)場看到同樣的一個操作,本來在數(shù)據(jù)庫中利用函數(shù)或其他高級SQL也可以實現(xiàn)的,開發(fā)人員卻頻繁地在數(shù)據(jù)庫和應用程序之間來回切換,殊不知,在過程層(程序)和數(shù)據(jù)庫層反復上下文切換交互會顯著影響應用效率。所以,我們首先要有清晰的方向和規(guī)劃,然后有意識地朝這個方向去努力。做好一個時期的人生規(guī)劃非常重要,它是你努力的方向,因為積極的學習比被動的學習效率要高太多。機遇偏愛有準備的人,我記得2001年年初的時候,我在網(wǎng)上看到一個帖子說要找一個有DB2認證的人去安裝DB2數(shù)據(jù)庫,差旅報銷,每天500元,我喜出望外,我有DB2系統(tǒng)管理、應用開發(fā)的認證,所以很快就通過了。但去了客戶現(xiàn)場以后才發(fā)現(xiàn)不是安裝,而是去給客戶講課,當時我就傻眼了,因為講課遠比安裝配置難得多,而我之前沒有講過課。沒辦法了,只能前一天夜里看教材備課到凌晨5點,睡兩個小時,8點半去講課,就這樣4天講課,我每天都是休息3小時左右。還好自己畢竟使用過DB2,而且也通過了DB2認證,還是有基礎的,這次講課雖然不太成功,但是畢竟通過了,勉強可以打60分吧,沒想到這次培訓竟是我以后幾年培訓生涯的開始。經(jīng)過這次講課后,我也看到了自己的差距,知道僅僅擁有認證是不行的,因為客戶問的很多問題書本上是沒有的,還需要自己進一步鉆研,因為平??磿鴷r有些概念不太懂也不會去深入研究,但是講課時你就必須把這些原理概念弄清楚,所以這需要對數(shù)據(jù)庫更深入地進行學習。后來經(jīng)過一些其他的渠道,IBM培訓部知道我能講DB2并且有相關證書,就找我講DB2系列課程。所以從2001年開始我就經(jīng)常作為IBM官方講師講DB2系列的所有課程,其中我感覺到講課是個很好的學習過程,因為要講清楚一些內(nèi)容,就必須自己先精通,這對提升自己有很大的幫助,我把課堂上學員問的實際操作中的問題深入地進行研究,希望學員在我這里聽講3個小時要遠遠勝過自己看3個小時的書,要想給學生一杯水,那么老師至少應該準備一桶水。艱辛可想而知。所以,我在講課準備過程中,精心準備實例,課堂下深入和學員交流。爭取把一些難懂的概念用淺顯易懂的例子來闡述,所以這在客觀上促進了自己的學習。隨著培訓的增多,也有一些客戶找我去做一些實際的調(diào)優(yōu)工作,我記得我第一次去客戶現(xiàn)場調(diào)優(yōu)是2001年去大連大通證券,當時主要解決鎖等待問題??蛻舡h(huán)境用到了AIX和CICS環(huán)境。當時雖然問題解決了,但自己心中還是感覺到比較虛,因為對AIX和CICS不了解,萬一是這兩個方面有問題,自己就沒辦法搞定了;同時認識到復雜系統(tǒng)的調(diào)整往往不是單方面的,需要具備全面的知識。所以經(jīng)過這次事情后,我就在網(wǎng)上買了一個140的IBM工作站小機,自己安裝AIX,開始學習AIX,在這個時期我一邊學習,一邊把AIX的認證全部過掉,我記得非常清楚,為了做HA的實驗著實費了很大的功夫,因為那時無法搞到7133陣列,那時小型機不像今天這么普及。后來自己又學習了CICS、WebSphere、MQ和存儲,所以我認為有目的的學習、有壓力和有動力的學習效率是非常高的。就這樣在我培訓的過程中,我發(fā)現(xiàn)自己哪個方面薄弱并且這個方向有前途我就開始學習,不過那個時候我的技術主要以IBM為主。由于自己對培訓比較用心以及客戶的好評,找我做培訓的國內(nèi)培訓機構開始多起來。感覺到這個時期自己的技術水平增長很快。2002年11月,我參加首屆“IBM DeveloperWorksLive! China2002”大會并獲得IBM首次在國內(nèi)評選的“杰出軟件技術專家”獎,在6名獲獎者中名列第2。獲得這個認證后客觀上對我有了很大的幫助,因為認識我的人更多了,所以在2002至2003年是我技術提升最快的兩年,在這兩年我又陸續(xù)學習了HP-UX、WebSphere和MQ并通過了認證。其實我有時感覺到如果你把一門技術研究得非常深、非常透之后,這時你再去學習另一門技術就會非常輕松了,因為技術是相通的。我在學習完AIX后再去學習HP-UX就感覺非常輕松,同樣在學習Oracle和DB2后再去學習Informix感覺到很容易。通過這種縱向的深入和橫向的比較,你會思考它們的區(qū)別,你反而比較容易發(fā)現(xiàn)每一個產(chǎn)品的尺之所長和寸之所短。就拿DB2來說,它每次版本更新后的新特性我基本上在新版本沒有出來之前就猜得差不多了,因為一是我是貼近真實用戶的,了解他們的真實需求;二是自己一直在用,自己不斷地在總結思考;三是別的數(shù)據(jù)庫有,而DB2沒有,那么在下個版本中它肯定會增加。所以相對來說,對新版本中新特性的學習就非常輕松了。就DB2而言,我想我應該是國內(nèi)擁有DB2認證最多的人,我擁有DB2V5.2、V7.1、V8.1和DB2V9的全部認證。我應該是國內(nèi)第一個把DB2V8認證全部通過的人,當然這也是巧合,因為2003年3月非典原因我被困在深圳,在網(wǎng)上看到DB2V8認證從4月1日開始考,就在前一天報名注冊,第二天把DB2V8所有認證(新特性、高級DBA、應用開發(fā)、BI等)通過。2004至2005年是我最忙碌的兩年,那個時候找我講課的培訓機構以及性能調(diào)優(yōu)的客戶非常多,一年我基本上天天在天上飛(當然學校導師那邊我是有辦法搞定的),培訓機構找我講課常常需要提前一個月的時間預約,那時除了過年在家待上幾天,其他時間都是在做培訓和診斷調(diào)優(yōu)等,足跡踏遍國內(nèi)主要城市,只要時間不沖突,那時我基本上是國內(nèi)6大行開發(fā)中心和數(shù)據(jù)中心培訓的指定老師,并為北京銀信科技、山東農(nóng)信、廣東農(nóng)信,交行大集中IBP等項目做數(shù)據(jù)庫技術顧問。那時年輕很有精力,我記得有一次是2004年9月白天上午9點,我為上海移動IT部門做AIX動態(tài)邏輯分區(qū)(DLPAR)的培訓;17點,打車前往揚州,20點,到達揚州供電局協(xié)助他們進行電力負荷控制系統(tǒng)項目上線,徹夜奮戰(zhàn)到第二天凌晨3點半;然后連夜打的趕往上海,凌晨6點,到達酒店;休息兩小時,8點出發(fā),準時出現(xiàn)在上海移動培訓現(xiàn)場。那時我對報酬不太在意,我想的是積累技術和客戶資源。就這樣不斷地對技術進行學習、鉆研、思考、提高,以及不斷地向上成長和孜孜不倦的探索過程。我一步步成長起來,在很長一段時間內(nèi),我不斷奔波于國內(nèi)的各個城市,不計較出差、也不計較報酬,在我看來能夠不斷通過實踐讓自己成長才是第一要義。而且去的客戶現(xiàn)場越多,處理的問題越多,就越發(fā)現(xiàn)自己的不足,然后再拼命地學習,不斷地積累、總結和思考,這樣就進入了一個良性循環(huán),至今我仍然懷念那充實、緊張和充滿激情的黃金年代。2004年和2005年,我分別在上海、北京注冊了公司。一方面因為以獨立咨詢顧問的個人身份無法出具發(fā)票;另一方面,隨著項目越做越大,尤其是很多銀行的數(shù)據(jù)庫架構和維護項目涉及合同金額也越來越大,需要簽訂合同,以公司的身份來簽合同更加合適。當然這些年并非所有都是一帆風順,也犯過一些重大錯誤。例如,我曾經(jīng)在2002年5月1日把某機場的數(shù)據(jù)庫調(diào)死,導致機場航班信息管理系統(tǒng)癱瘓。在早期也曾經(jīng)把某證券系統(tǒng)因為調(diào)整而宕機,這些都對客戶造成了重大影響,同時也讓我思考總結自己的不足。也許這是成長必須要走的路,所以經(jīng)過這兩次事情之后,我之后的調(diào)優(yōu)基本上沒有犯過錯誤。所以,結合我的學習經(jīng)驗與感悟,有16個字送給即將進入這一領域的讀者:去除浮躁,認真學習,不斷積累,尋找機遇。古之成大事者,不唯有超世之才,亦唯有堅忍不拔之志也!——最后用這句話與大家共勉
內(nèi)容概要
本書側重于介紹DB2數(shù)據(jù)庫的性能調(diào)優(yōu)。性能調(diào)優(yōu)是一個系統(tǒng)工程:全面監(jiān)控分析操作系統(tǒng)、I/O性能、內(nèi)存、應用及數(shù)據(jù)庫才能快速找到問題根源;深刻理解DB2的鎖及并發(fā)機制、索引原理、數(shù)據(jù)庫參數(shù)、優(yōu)化器原理、SQL語句調(diào)優(yōu)等內(nèi)部機理才能針對性地快速提出解決問題的方法;快照、db2pd、db2expln及事件監(jiān)控器等則是必須熟練掌握的工具。這本書覆蓋了進行DB2數(shù)據(jù)庫性能調(diào)優(yōu)所需的全部知識和工具,并提供了大量的性能調(diào)優(yōu)的實際案例。
本書系統(tǒng)性地總結了DB2數(shù)據(jù)庫性能調(diào)整的方法、流程、思路和保持系統(tǒng)良好性能的注意要點。最難得的是作者分享了其10年積累的DB2性能調(diào)優(yōu)案例和經(jīng)驗總結。
作者簡介
牛新莊,國內(nèi)頂尖數(shù)據(jù)架構和信息治理專家,擔任對外經(jīng)濟貿(mào)易大學客座教授、北京交通大學兼職教授、中國DB2用戶協(xié)會(CDUG)理事長、亞洲金融合作聯(lián)盟信息科技委員會主任。2008年曾以217萬年薪受聘于中國建設銀行總行特聘技術顧問,2009年受邀加入中國民生銀行總行科技部,現(xiàn)任總行科技部總經(jīng)理。牛新莊博士擁有20多項國際廠商認證(包括DB2V5~V9的全部認證),獲得過國內(nèi)數(shù)據(jù)庫領域最高榮譽的“2006年中國首屆杰出數(shù)據(jù)庫工程師獎”、“首屆IBM杰出軟件專家獎”、“2006年IT168技術卓越獎”等獎項。
書籍目錄
第1章 性能調(diào)整概述11.1 性能概述21.2 性能評估41.3 建立性能目標71.4 什么時候需要做性能調(diào)整81.5 性能調(diào)整準則91.6 性能調(diào)整的方法和過程101.6.1 性能調(diào)整的步驟101.6.2 性能調(diào)整的限制111.6.3 向客戶了解情況111.6.4 性能調(diào)整流程圖121.7 性能模型151.7.1 輸入171.7.2 處理171.7.3 輸出231.8 本章小結24第2章 操作系統(tǒng)及存儲的性能調(diào)優(yōu)272.1 AIX性能監(jiān)控綜述292.1.1 監(jiān)控工具292.1.2 監(jiān)控系統(tǒng)總體運行狀態(tài)302.1.3 監(jiān)控CPU性能342.1.4 監(jiān)控內(nèi)存使用382.1.5 監(jiān)控存儲系統(tǒng)狀態(tài)402.1.6 監(jiān)控網(wǎng)絡狀態(tài)422.2 操作系統(tǒng)性能優(yōu)化432.2.1 直接I/O和并發(fā)I/O442.2.2 異步I/O和同步I/O452.2.3 minpout和maxpout472.2.4 文件系統(tǒng)和裸設備472.2.5 負載均衡及條帶化(Striping)482.3 邏輯卷和lvmo優(yōu)化532.3.1 使用lvmo進行優(yōu)化542.3.2 卷組pbuf池552.3.3 pbuf設置不合理導致性能問題調(diào)整案例562.3.4 使用ioo進行優(yōu)化602.4 操作系統(tǒng)性能調(diào)整總結652.5 存儲I/O設計652.6 存儲基本概念652.6.1 硬盤652.6.2 磁盤陣列技術672.6.3 存儲的Cache672.6.4 網(wǎng)絡存儲技術682.7 存儲架構692.7.1 存儲I/O處理過程692.7.2 RAID IOPS702.7.3 RAID10和RAID5的比較712.8 良好存儲規(guī)劃的目標742.9 良好存儲規(guī)劃的設計原則752.10 存儲相關性能調(diào)整案例762.11 存儲I/O性能調(diào)整總結792.12 本章小結80第3章 DB2性能監(jiān)控813.1 快照監(jiān)視器案例813.1.1 監(jiān)控動態(tài)SQL語句813.1.2 監(jiān)控臨時表空間使用843.2 事件監(jiān)視器及監(jiān)控案例873.3 利用表函數(shù)監(jiān)控933.4 性能管理視圖及案例993.4.1 監(jiān)控緩沖池命中率1003.4.2 監(jiān)控Package Cache大小1013.4.3 監(jiān)控執(zhí)行成本最高的SQL語句1023.4.4 監(jiān)控運行時間最長的SQL語句1023.4.5 監(jiān)控SQL準備和預編譯時間最長的SQL語句1033.4.6 監(jiān)控執(zhí)行次數(shù)最多的SQL語句1033.4.7 監(jiān)控排序次數(shù)最多的SQL語句1043.4.8 監(jiān)控鎖等待時間1043.4.9 監(jiān)控Lock Chain1053.4.10 監(jiān)控鎖內(nèi)存的使用1083.4.11 監(jiān)控鎖升級、死鎖和鎖超時1083.4.12 監(jiān)控全表掃描的SQL1093.4.13 檢查頁清理器是否足夠1103.4.14 監(jiān)控prefecher是否足夠1103.4.15 監(jiān)控數(shù)據(jù)庫內(nèi)存使用1113.4.16 監(jiān)控日志使用情況1123.4.17 監(jiān)控占用日志空間最舊的事務1123.4.18 監(jiān)控存儲路徑1133.4.19 追蹤監(jiān)控歷史1143.5 db2pd1143.5.1 常用db2pd監(jiān)控選項和示例1153.5.2 使用db2pd監(jiān)控死鎖案例1273.5.3 db2pd使用問題總結1323.6 內(nèi)存監(jiān)控1343.6.1 db2pd 內(nèi)存監(jiān)控1343.6.2 db2mtrk 內(nèi)存監(jiān)控1383.7 本章小結140第4章 DB2配置參數(shù)調(diào)整1414.1 初識DB2配置參數(shù)1414.2 監(jiān)控和調(diào)優(yōu)實例級(DBM)配置參數(shù)1434.2.1 代理程序相關配置參數(shù)1434.2.2 sheapthres1464.2.3 fcm_num_buffers1464.2.4 sheapthres_shr1474.2.5 intra_parallel1474.2.6 mon_heap_sz1484.2.7 query_heap_sz1484.3 監(jiān)控和調(diào)優(yōu)數(shù)據(jù)庫級配置參數(shù)1484.3.1 緩沖池大小1494.3.2 日志緩沖區(qū)大?。╨ogbufsz)1554.3.3 應用程序堆大?。╝pplheapsz)1564.3.4 sortheap和sheapthres_shr1574.3.5 鎖相關配置參數(shù)1594.3.6 活動應用程序的最大數(shù)目(maxappls)1634.3.7 pckcachesz1634.3.8 catalogcache_sz1644.3.9 異步頁清除程序的數(shù)目(num_iocleaners)1644.3.10 異步I/O服務器的數(shù)目(num_ioservers)1664.3.11 組提交數(shù)目(mincommit)1664.3.12 avg_appls1684.3.13 chngpgs_thresh(DB)1684.3.14 maxfilop1694.3.15 logprimary、logsecond和logfilsz1694.3.16 stmtheap1704.3.17 dft_queryopt1704.3.18 util_heap_sz (DB)1704.4 調(diào)整DB2概要注冊變量1704.4.1 db2_parallel_io1714.4.2 db2_evaluncommitted1734.4.3 db2_skipdeleted1734.4.4 db2_skipinserted1734.4.5 db2_use_page_container_tag1734.4.6 db2_selectivity1734.4.7 db2_logger_non_buffered_io1744.5 內(nèi)存自動調(diào)優(yōu)1744.5.1 內(nèi)存自動調(diào)優(yōu)示例1754.5.2 啟用內(nèi)存自動調(diào)優(yōu)及相關參數(shù)1764.5.3 內(nèi)存配置參數(shù)的配置原則1784.6 本章小結179第5章 高級鎖與優(yōu)化1815.1 隔離級別與鎖1815.1.1 可重復讀(RR-Repeatable Read)1825.1.2 讀穩(wěn)定性(RS-Read Stability)1845.1.3 游標穩(wěn)定性(CS-Cursor Stability)1865.1.4 當前提交(Currently Committed)1885.1.5 未提交讀(UR-Uncommitted Read)1905.1.6 隔離級別總結1935.2 加鎖總結1955.2.1 如何獲取鎖1955.2.2 意圖鎖和非意圖鎖1965.2.3 讀鎖和寫鎖1975.2.4 LRB(Lock Resource Block)1975.2.5 USE AND KEEP LOCKS1985.2.6 索引類型和下一鍵鎖1995.2.7 掃描方式與加鎖2015.3 樂觀鎖2045.3.1 悲觀鎖和樂觀鎖2045.3.2 DB2 V9.5中的樂觀鎖2055.3.3 樂觀鎖應用案例2125.4 內(nèi)部鎖2215.4.1 內(nèi)部方案鎖(Internal Plan Lock)2215.4.2 內(nèi)部V鎖(Internal Variation Lock)2225.4.3 內(nèi)部S鎖2235.4.4 內(nèi)部C鎖2245.4.5 其他內(nèi)部鎖2255.5 鎖等待及調(diào)整案例2285.5.1 鎖等待問題解決流程和步驟2285.5.2 捕獲引起鎖等待的SQL語句2305.5.3 利用db2pd捕獲鎖超時2335.5.4 利用事件監(jiān)視器捕獲鎖超時2365.6 鎖升級及調(diào)整案例2385.6.1 監(jiān)控鎖升級2395.6.2 鎖升級調(diào)整2395.7 死鎖及調(diào)整案例2415.7.1 利用事件監(jiān)視器監(jiān)控死鎖2425.7.2 死鎖案例2435.7.3 最小化死鎖建議2465.8 最大化并發(fā)性2465.8.1 選擇合適的隔離級別2465.8.2 盡量避免鎖等待、鎖升級和死鎖2465.8.3 設置合理的注冊表變量2475.9 鎖相關的性能問題總結2555.10 鎖與應用程序開發(fā)2565.11 本章小結259第6章 索引設計與優(yōu)化2616.1 索引概念2616.1.1 索引優(yōu)點2616.1.2 索引類型2636.2 索引結構2636.3 理解索引訪問機制2666.4 索引設計2696.4.1 創(chuàng)建索引2696.4.2 創(chuàng)建集群索引2706.4.3 創(chuàng)建雙向索引2716.4.4 完全索引訪問2726.4.5 與創(chuàng)建索引相關的問題2736.4.6 創(chuàng)建索引示例2736.5 索引創(chuàng)建原則與示例2746.5.1 索引與謂詞2746.5.2 根據(jù)查詢使用的列建立索引2766.5.3 根據(jù)條件語句中謂詞的選擇度創(chuàng)建索引2776.5.4 避免在建有索引的列上使用函數(shù)2786.5.5 在那些需要被排序的列上創(chuàng)建索引2786.5.6 合理使用INCLUDE關鍵詞創(chuàng)建索引2806.5.7 指定索引的排序?qū)傩?816.6 影響索引性能的相關配置2826.6.1 設置影響索引性能的配置參數(shù)2826.6.2 為索引指定不同的表空間2826.6.3 確保索引的集群度2836.6.4 使表和索引統(tǒng)計信息保持最新2836.6.5 重組索引2836.7 索引維護2846.7.1 異步索引清除(AIC)2856.7.2 聯(lián)機索引整理碎片2876.7.3 查找使用率低下的索引2876.7.4 索引壓縮2896.8 DB2 Design Advisor(db2advis)2896.9 本章小結293第7章 DB2優(yōu)化器2997.1 DB2優(yōu)化器介紹3007.2 SQL語句執(zhí)行過程3027.3 優(yōu)化器組件和工作原理3047.3.1 查詢重寫示例:謂詞移動合并和轉換3057.3.2 優(yōu)化器成本評估3107.3.3 本地謂詞基數(shù)(cardinality)估計3117.3.4 連接基數(shù)(cardinality)估計3137.3.5 分布統(tǒng)計信息3177.3.6 列組統(tǒng)計信息對基數(shù)的影響3217.4 掃描方式3307.4.1 全表掃描3317.4.2 索引掃描3317.4.3 RID SCAN3347.5 連接方法3357.5.1 嵌套循環(huán)連接3367.5.2 合并連接3387.5.3 哈希連接3397.5.4 選擇最佳連接的策略3407.6 優(yōu)化級別3407.6.1 優(yōu)化級別概述3417.6.2 選擇優(yōu)化級別3447.6.3 設置優(yōu)化級別3457.7 基于規(guī)則的優(yōu)化3477.7.1 優(yōu)化器概要文件概述3477.7.2 啟用優(yōu)化概要文件3497.7.3 優(yōu)化概要文件使用示例3507.8 如何影響優(yōu)化器來提高性能3577.8.1 使DB2統(tǒng)計信息保持最新3577.8.2 構建適當?shù)乃饕?577.8.3 配置合理的數(shù)據(jù)庫配置參數(shù)3587.8.4 選擇合適的優(yōu)化級別3597.8.5 合理的存儲I/O設計3597.8.6 良好的應用程序設計和編碼3607.9 本章小結363第8章 統(tǒng)計信息更新與碎片整理3658.1 統(tǒng)計信息更新3658.1.1 統(tǒng)計信息的重要性3658.1.2 統(tǒng)計信息更新示例3698.1.3 LIKE STATISTICS統(tǒng)計信息更新3728.1.4 列組統(tǒng)計信息更新3748.1.5 分布統(tǒng)計信息更新3838.1.6 統(tǒng)計信息更新策略3898.2 自動統(tǒng)計信息更新3918.2.1 自動RUNSTATS的基本概念3918.2.2 如何打開auto runstats3938.2.3 如何監(jiān)控auto runstats3958.2.4 DB2 V10新特性——自動收集統(tǒng)計視圖的統(tǒng)計信息3968.3 碎片整理3978.3.1 碎片產(chǎn)生機制和影響3978.3.2 確定何時重組表和索引3988.3.3 執(zhí)行表、索引檢查是否需要做REORG4018.3.4 REORG的用法和使用策略4028.4 重新綁定程序包4058.5 本章小結407第9章 SQL語句調(diào)優(yōu)4099.1 通過監(jiān)控找出最消耗資源的SQL語句4099.2 通過解釋工具分析SQL語句執(zhí)行計劃4109.2.1 解釋表4119.2.2 Visual Explain(可視化解釋)4129.2.3 db2expln4199.2.4 db2exfmt4229.2.5 各種解釋工具的比較4249.2.6 如何從解釋信息中獲取有價值的建議4249.3 理解SQL語句如何工作4259.3.1 理解謂詞類型4259.3.2 排序和分組4289.3.3 連接方法4309.3.4 掃描方式4319.4 SQL調(diào)優(yōu)案例4319.4.1 盡量使用單條語句完成邏輯4319.4.2 合理使用NOT IN和NOT EXISTS4329.4.3 利用子查詢進行優(yōu)化4349.4.4 調(diào)整表連接順序使JOIN最優(yōu)4369.4.5 數(shù)據(jù)非均勻分布時手工指定選擇性4379.4.6 使用UDF代替查詢中的復雜部分4389.4.7 合并多條SQL語句到單個SQL表達式4399.4.8 使用SQL一次處理一個集合語義4409.4.9 在無副作用的情況下使用SQL函數(shù)4429.4.10 小結4439.5 提高應用程序性能4439.5.1 良好的SQL編碼規(guī)則4439.5.2 提高SQL編程性能4459.5.3 改進游標性能4479.5.4 根據(jù)業(yè)務邏輯選擇最低粒度的隔離級別4489.5.5 通過REOPT綁定選項來提高性能4489.5.6 統(tǒng)計信息、碎片整理和重新綁定4499.5.7 避免不必要的排序4499.5.8 在C/S環(huán)境中利用SQL存儲過程降低網(wǎng)絡開銷4509.5.9 在高并發(fā)環(huán)境下使用連接池4509.5.10 使用Design Advisor(db2advis)建議索引4509.5.11 提高批量刪除、插入和更新速度4519.5.12 提高插入性能4519.5.13 高效的SELECT語句4529.6 高性能SQL語句注意事項4539.6.1 避免在搜索條件中使用復雜的表達式4539.6.2 將 OPTIMIZE FOR n ROWS子句與FETCH FIRST n ROWS ONLY子句配合使用4549.6.3 避免使用冗余的謂詞4549.6.4 避免使用多個帶有DISTINCT關鍵字的聚集操作4559.6.5 避免連接列之間數(shù)據(jù)類型不匹配4569.6.6 避免對表達式使用連接謂詞4569.6.7 避免在謂詞中使用空操作表達式來更改優(yōu)化器估算4569.6.8 確保查詢符合星型模式連接的必需條件4579.6.9 避免使用非等式連接謂詞4589.6.10 避免使用不必要的外連接4599.6.11 使用參數(shù)標記來縮短動態(tài)查詢的編譯時間4599.6.12 使用約束來提高查詢優(yōu)化程度4609.7 本章小結461第10章 DB2調(diào)優(yōu)案例、問題總結和技巧46310.1 調(diào)優(yōu)案例1:某移動公司存儲設計不當和SQL引起的I/O瓶頸46310.2 調(diào)優(yōu)案例2:某銀行知識庫系統(tǒng)鎖等待、鎖升級引起性能瓶頸47010.3 調(diào)優(yōu)案例3:某汽車制造商ERP系統(tǒng)通過調(diào)整統(tǒng)計信息提高性能47810.4 調(diào)優(yōu)案例4:某農(nóng)信社批量代收電費批處理慢調(diào)優(yōu)案例48810.5 調(diào)優(yōu)案例5:某銀行系統(tǒng)SQL執(zhí)行慢,通過跟蹤信息獲取調(diào)整信息49210.6 調(diào)優(yōu)案例6:某銀行系統(tǒng)字段類型定義錯誤導致SQL執(zhí)行時間變長49510.7 調(diào)優(yōu)學習案例:利用壓力測試程序?qū)W習DB2調(diào)優(yōu)498
編輯推薦
《DB2數(shù)據(jù)庫性能調(diào)整和優(yōu)化(第2版)》編輯推薦:國內(nèi)最權威的DB2圖書,由業(yè)界領軍人物牛新莊博士執(zhí)筆。針對DB2技術的最新發(fā)展和上一版的讀者反饋,對全書內(nèi)容和章節(jié)安排做了更新,更加貼近實用。DB2從業(yè)人員的必備案頭書。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
DB2數(shù)據(jù)庫性能調(diào)整和優(yōu)化(第2版) PDF格式下載