出版時間:2009-5 出版社:清華大學出版社 作者:牛新莊 頁數(shù):471
Tag標簽:無
前言
前 言數(shù)據(jù)庫內(nèi)核是數(shù)據(jù)庫系統(tǒng)穩(wěn)定運行的心臟,DB2數(shù)據(jù)庫內(nèi)核龐大而復雜。本書從DB2內(nèi)核組件入手,同時介紹了其與操作系統(tǒng)在進程、共享內(nèi)存、信號量之間的關系。作者在本書中重點介紹了各個內(nèi)部組件的層次與功能、內(nèi)存內(nèi)部結構、存儲內(nèi)部結構、高級鎖等。優(yōu)化器是任何數(shù)據(jù)庫執(zhí)行SQL的關鍵部分,本書對優(yōu)化器產(chǎn)生的各種執(zhí)行計劃進行了詳細解釋,這對理解DB2內(nèi)部工作原理大有裨益。同時,本書還介紹了DB2各種診斷工具的使用,各種數(shù)據(jù)庫配置參數(shù)含義及調(diào)整、數(shù)據(jù)庫系統(tǒng)視圖等。本書結構第1章 DB2底層組件。本章介紹了支撐DB2數(shù)據(jù)庫管理系統(tǒng)運行的各個組成部分,使得用戶可以了解到DB2的內(nèi)部工作機制。通過了解這些組件,用戶對實際中碰到的各種問題更加容易地找到具體故障點。本章在介紹CCI、RDS、DMS、IXM、BPS、DPS等組件的同時,還對各個組件給出了故障診斷案例。第2章 DB2進程體系結構。本章介紹了DB2系統(tǒng)在不同平臺上的進程模型。面對眾多的進程/線程,作者將進程劃分為與操作系統(tǒng)相關、與實例相關、與數(shù)據(jù)庫相關和與應用程序相關的幾類進程。本章還研究了DB2代理通信的工作原理,以及幾個經(jīng)常混淆的概念——交易、應用程序、代理之間的關系。本章最后介紹了與DB2備份、恢復、LOAD等實用程序有關的進程,并提及DB2 V9.5的多線程體系結構。第3章 DB2內(nèi)存體系結構。內(nèi)存是DB2從操作系統(tǒng)獲取的最重要資源,本章介紹了DB2中內(nèi)存集、內(nèi)存池、內(nèi)存塊這三種內(nèi)存的分配、回收機制。DB2從操作中申請到的內(nèi)存主要被實例、數(shù)據(jù)庫、應用程序所消耗,本章講述了各個消耗單位與配置參數(shù)之間的關系。第4章 DB2存儲內(nèi)部結構。存儲模型是數(shù)據(jù)庫系統(tǒng)在磁盤上存放數(shù)據(jù)的組織形式,主要包括各種配置文件、數(shù)據(jù)文件、日志文件的存放位置、格式定義等。本章詳細講解了表空間的物理存儲結構,包括SMS表空間、DMS表空間。更進一步,作者詳細解釋了一行數(shù)據(jù)在一個數(shù)據(jù)頁面上的存放格式,同時介紹了索引頁的組織形式。第5章 DB2優(yōu)化器。優(yōu)化器是數(shù)據(jù)庫管理系統(tǒng)中產(chǎn)生執(zhí)行計劃的組件,本章主要介紹了DB2優(yōu)化器的工作原理。本章解讀了執(zhí)行計劃中常見的操作以及它們的性能優(yōu)劣,如索引掃描、表掃描、合并連接、嵌套循環(huán)連接、Hash連接等。本章還介紹了對于不同的優(yōu)化級別DB2系統(tǒng)所采用的優(yōu)化算法的差別,以及與Oracle類似的基于規(guī)則的優(yōu)化。作者還就如何影響優(yōu)化器以產(chǎn)生我們期望的執(zhí)行計劃給出了一些建議,如更新統(tǒng)計信息、構建索引、修改配置參數(shù)等。第6章 高級鎖。本章介紹了DB2在讀取、寫數(shù)據(jù)時的加鎖工作過程,講述鎖在DB2中的內(nèi)部結構以及在不同平臺、位長上的區(qū)別。樂觀鎖是DB2 V9.5最新推出的功能,作者在本章中將其與傳統(tǒng)的悲觀鎖進行對比,并詳細解釋了如何使用。本章同時還介紹了DB2內(nèi)部使用的鎖。第7章 數(shù)據(jù)庫配置參數(shù)。DB2各種配置參數(shù)對系統(tǒng)有著很大的影響,本章從數(shù)據(jù)庫管理器參數(shù)、數(shù)據(jù)庫參數(shù)、注冊變量三個層面詳細介紹了各種參數(shù)的調(diào)整方法,包括調(diào)整前觀察的監(jiān)控點、調(diào)整的范圍、調(diào)整后產(chǎn)生的影響等。第8章 DB2數(shù)據(jù)字典。本章介紹了SYSCAT模式、SYSIBMADM模式以及SYSSTAT模式下的數(shù)據(jù)字典包括的內(nèi)容。這些數(shù)據(jù)字典能夠幫助我們對DB2進行日常的管理、調(diào)優(yōu)工作。本章詳細講解了利用SYSIBMADM模式下的數(shù)字字典進行數(shù)據(jù)調(diào)優(yōu)的過程。第9章 高級診斷。本章介紹了在數(shù)據(jù)庫啟動失敗時如何利用脫機高級工具db2dart在物理層面上診斷壞頁。同時,作者還介紹了新的聯(lián)機高級工具inspect的使用方法。db2trc工具是一個函數(shù)級診斷工具,它能夠跟蹤出DB2執(zhí)行了哪些函數(shù)以及消耗的時間。第10章 深入講解解釋工具輸出。本章通過各種解釋工具講解了如何解讀工具產(chǎn)生的執(zhí)行計劃。對這些執(zhí)行計劃中經(jīng)常碰到的表掃描、索引掃描、臨時表等的性能差異進行了比較。本章還詳細講解了DB2排序工作原理,以及如何在執(zhí)行計劃中查看排序資源需求和如何優(yōu)化排序性能。預取是提高數(shù)據(jù)庫IO性能的一個好方法,作者講解了預取的概念、預取分類,并給出提高預取性能的指導意見。致謝本書在出版的過程中得到了清華大學出版社王軍編輯的大力支持!這套DB2書籍從選題、審稿到出版無不得到他的熱心幫助,在此致以深深的謝意!感謝我的好兄弟駱洪青和袁春光,他們審核了書中的大部分章節(jié)。同時也感謝中信銀行的胡瑞娟、蘇蘭芳和我的師弟林春,他們審核了部分章節(jié)并從用戶的角度給我提出了很多寶貴的建議!最后,謹以此書獻給我可愛的女兒,她是個小天使,是上天對我最好的恩賜!序一DB2 數(shù)據(jù)庫進入中國其實已經(jīng)很多年,還依稀記得本人安裝的第一套基于DB2數(shù)據(jù)庫的SAP系統(tǒng)還是在10多年前的事情了,隨著DB2在技術上的逐步完善和發(fā)展越來越多的企業(yè)用戶加入了DB2的行列。令人感到遺憾的是,與越來越龐大的DB2用戶群和逐漸深入的系統(tǒng)應用相比,與之配套的相關中文資料卻相當匱乏。除了一些從原版翻譯的入門資料外,幾乎沒有任何全面闡述系統(tǒng)性能調(diào)優(yōu)之類的進階書籍,面對出現(xiàn)的各種問題,很多用戶都只能依靠在網(wǎng)上搜索一些零星的知識點或解決方案,雖然也能暫時地應付一些突發(fā)的問題,但很多時候還是處于頭痛醫(yī)頭,腳痛醫(yī)腳的階段。對DB2數(shù)據(jù)庫系統(tǒng)性能優(yōu)化的整體解決方案缺乏了解。猶如置身于一個巨大迷宮一隅,僅僅靠著身邊微弱的燭光艱難前行。數(shù)據(jù)庫性能調(diào)優(yōu)的需求一直貫穿于整個數(shù)據(jù)庫運行的始終,也是直接關系到以數(shù)據(jù)庫為基礎的各種應用軟件運行效率。本人從事SAP系統(tǒng)性能優(yōu)化10多年,其中很大一部分的工作也是在數(shù)據(jù)庫層面上。深感數(shù)據(jù)庫性能調(diào)優(yōu)的重要性。過去一直苦于沒有系統(tǒng)全面的DB2方面的資料,只好靠自己慢慢摸索,雖然花費了大量的實踐和精力,但效果依然不盡如人意。一直期盼能有一本理論聯(lián)系實際,透徹分析數(shù)據(jù)庫工作原理并結合實際案例的工具書來提高工作效率??v觀當今業(yè)內(nèi), 我們并不缺少數(shù)據(jù)庫方面的理論宗師, 更不缺乏技術嫻熟的實踐高手。 但同時身兼兩大絕學并且將自己的多年積累的實踐經(jīng)驗與廣大DB2用戶分享的,牛新莊博士當屬國內(nèi)第一人。本書的出版,填補了國內(nèi)在這方面的空白,書中將各種離散的知識點有機地的結合起來并以全新的視角來俯瞰整個數(shù)據(jù)庫的性能問題,使廣大DB2數(shù)據(jù)庫用戶有了一個事半功倍的利器。 本書完全應該成為DB2數(shù)據(jù)庫從業(yè)者以及相關技術人員人手一本的工具書。前SAP大中國區(qū)核心技術中心經(jīng)理在SAP技術領域有著極為豐富的實踐經(jīng)驗和專業(yè)知識背景,尤其擅長大型系統(tǒng)架構設計和系統(tǒng)性能調(diào)優(yōu)國內(nèi)頂尖SAP Basis 顧問上海建功思域信息科技有限公司 董事總經(jīng)理張挺2009年5月序二這些年我負責中國DB2的售前技術團隊,認識牛新莊已經(jīng)好多年了。其中印象很深的是2006年與他的幾次交流,我們討論了許多數(shù)據(jù)庫的實用技術,用戶在數(shù)據(jù)庫管理和應用方面的主要挑戰(zhàn)。他豐富的實戰(zhàn)經(jīng)驗給我留下了極深的印象。那時他正在參加首屆中國數(shù)據(jù)庫工程師大賽,最終獲得了最高的杰出數(shù)據(jù)庫工程師大獎。 新莊是國內(nèi)較早使用DB2的技術人員。他從1999年開始使用DB2 V5.2,后來在工作中又學習了AIX、WebSphere、CICS和MQ等IBM技術,對Informix和Oracle等數(shù)據(jù)庫也有非常深的理解。這些年他作為IBM培訓部的資深認證講師在國內(nèi)講解數(shù)據(jù)庫技術,推動DB2在國內(nèi)的傳播。從2001年至今,新莊作為獨立咨詢顧問往返于國內(nèi)大中城市,在金融六大行(工農(nóng)中建交招)、農(nóng)信、證券(國泰君安、海通、大通等)、電力(江蘇電力公司、云南電力公司、山東電力公司等)、保險(中國人壽、信誠、平安等)、電信、郵政、移動(北京移動、上海移動、江蘇移動、廣東移動、天津移動、湖南移動、西藏移動、新疆移動、山東移動、吉林移動等)、青島海爾、云南紅塔、中遠集團、寶鋼等行業(yè)和國內(nèi)中小企業(yè)之間做數(shù)據(jù)庫架構設計、維護、問題診斷和性能調(diào)優(yōu)。其深厚的產(chǎn)品知識和豐富的閱歷和經(jīng)驗使得他在對一些疑難問題的判斷和處理上有獨到的見解。他往往能夠跳出固有的框架從一個廣闊的視角來認識和分析,并通過多年積累的方法論逐步排查,最終找到解決的方法。這一點在許多大型用戶的案例中都得到了有效的印證,這些年我聽到了很多大型用戶對新莊技術的高度認可。DB2的學習資料在其信息文檔和網(wǎng)絡中有很多,然而由擁有豐富實踐應用經(jīng)驗的專家來總結的DB2書籍相對較少。新莊寫的這套書特點是注重實用,內(nèi)容由淺及深,涵蓋DB2的管理、運行維護、應用開發(fā)、內(nèi)核及架構的剖析,以及性能調(diào)整和優(yōu)化,我認為本套書將一系列相關的分散知識點真正形成了一個知識面。用好DB2數(shù)據(jù)庫實際上涉及很多方面,不僅僅是數(shù)據(jù)庫本身,而且需要考慮操作系統(tǒng)、存儲規(guī)劃、數(shù)據(jù)模型設計、應用開發(fā)設計、數(shù)據(jù)庫的合理配置和運行監(jiān)控等一系列相關的內(nèi)容。 本套書不僅從產(chǎn)品的角度來介紹DB2,而且從實戰(zhàn)的角度來剖析基于DB2的設計和應用。一個好的應用系統(tǒng)應該考慮哪些問題,如何有效管理維護好DB2系統(tǒng),常見的故障如何排查及解決,在應用開發(fā)中如何有效使用DB2的特性。本書系統(tǒng)性地總結了DB2的發(fā)展歷史,從一個系統(tǒng)構建生命周期的角度介紹了DB2數(shù)據(jù)庫的安裝、使用、開發(fā)、管理、 運行、調(diào)優(yōu)的全過程。深入DB2內(nèi)部剖析其核心架構,結合案例分享實戰(zhàn)應用調(diào)優(yōu)的經(jīng)驗。尤其是《DB2數(shù)據(jù)庫性能調(diào)優(yōu)和優(yōu)化》這本書濃縮了新莊自己在應用DB2的心路歷程,內(nèi)容覆蓋了系統(tǒng)的整體設計規(guī)劃,DB2與性能相關的內(nèi)部核心技術和架構,關鍵的相關應用設計要點,以及穩(wěn)定運行監(jiān)控所應考慮的內(nèi)容。最難得的是作者分享了多年積累的DB2性能調(diào)優(yōu)案例,使讀者有可能在實際的環(huán)境中去了解解決復雜問題的思路,將基本的理論和技術與實戰(zhàn)進行結合。這套書不僅是新莊10年DB2應用經(jīng)驗的總結,更是他10年對DB2數(shù)據(jù)庫的熱愛的結晶。今天國內(nèi)已有越來越多的技術人員在使用DB2,我相信這套書能對學習和使用DB2提供很大的幫助。希望它能成為您DB2旅程上的一個朋友,為您答疑解惑,點亮您前進的道路。 劉晶煒 IBM 軟件部中國區(qū) DB2技術經(jīng)理2008.11.2 于北京序三與牛新莊的接觸源于10年前在大學里一起做項目,那時“恰同學少年”,雖無偉人們指點江山之意氣風發(fā),卻也會因一個技術難題的攻克而一道去學校里排擋大快朵頤。牛新莊對技術追求之不懈在學校中就已經(jīng)展現(xiàn)出那種“為依消得人憔悴,衣袋漸寬終不悔”的境界。在21世紀初的狂熱的互聯(lián)網(wǎng)大潮中,牛新莊從紛繁復雜的IT技術中選擇了數(shù)據(jù)庫作為自己的主攻方向并且一直持續(xù)至今,是為一綱舉而百目張,終于成為國內(nèi)數(shù)據(jù)庫頂尖級高手。牛新莊涉獵極廣,他從數(shù)據(jù)庫出發(fā),向下延伸至操作系統(tǒng),存儲,向上延伸至中間件,幾乎所有企業(yè)應用涉及的平臺他都有廣泛而深入的研究,如AIX,HP-UX,IBM存儲、EMC存儲、Oracle、DB2、Websphere、CICS、MQ等。這些知識的融會貫通使得牛新莊在解決客戶碰到的各種實際問題時,如庖丁解牛般游刃有余。牛新莊在各種實踐的基礎上不斷總結,能夠從更高的視角反思DBA遇到的各種問題,并且上升到方法論,始有這套書的雛形。DB2的學習資料在其信息文檔和網(wǎng)絡中有很多,但知識點分散,多不成體系,更是缺乏專家實踐應用經(jīng)驗總結. 這個套書凝聚了牛新莊大量的心血,是其10年DB2應用經(jīng)驗的總結。這套書特點是注重實用,內(nèi)容由淺及深,涵蓋DB2的管理,運行維護,應用開發(fā),內(nèi)核及架構的剖析,以及性能調(diào)整和優(yōu)化。書中還有大量的提示點,雖只有寥寥數(shù)語,確實作者多年或成功或失敗的DB2實踐體會,值得讀者反復回味。DB2數(shù)據(jù)庫系統(tǒng)對外表現(xiàn)出優(yōu)異性能和高可靠性,這來源于DB2良好的內(nèi)核設計,本書是國內(nèi)第一本全面介紹DB2內(nèi)核的專業(yè)書籍。本書從操作系統(tǒng)角度解讀DB2在進程、內(nèi)存、存儲方面的工作原理。從整體上來說,本書適合于接觸過DB2希望更加深入學習的朋友。對于剛剛接觸DB2的朋友本書則稍顯艱澀,這需要您有一定的耐心和堅持——這兩點恰恰是邁向成功的不二法門??催^第一遍后,不能理解書中講所有內(nèi)容的朋友也不必灰心,好的書總是要反復咀嚼的,到您把本書翻破的時候必有收獲。本書的目標就是幫助讀者在解決實踐中碰到的各種DB2問題時可以做到知其然,同時還知其所以然。北京銀信長遠軟件技術有限公司 總經(jīng)理數(shù)據(jù)庫高級專家駱洪青2009-4
內(nèi)容概要
數(shù)據(jù)庫內(nèi)核是數(shù)據(jù)庫系統(tǒng)穩(wěn)定運行的心臟,DB2數(shù)據(jù)庫內(nèi)核龐大而復雜。本書從DB2內(nèi)核組件入手,同時介紹了其與操作系統(tǒng)在進程、共享內(nèi)存、信號量之間的關系。作者在本書中重點介紹了各個內(nèi)部組件的層次與功能、內(nèi)存體系結構、存儲內(nèi)部結構、高級鎖等。優(yōu)化器是任何數(shù)據(jù)庫執(zhí)行SQL的關鍵部分,本書對優(yōu)化器產(chǎn)生的各種執(zhí)行計劃進行了詳細解釋,這對于理解DB2內(nèi)部工作原理大有裨益。同時,本書還介紹了DB2各種診斷工具的使用,各種數(shù)據(jù)庫配置參數(shù)含義及調(diào)整、數(shù)據(jù)庫系統(tǒng)視圖等。
作者簡介
牛新莊博士,是國內(nèi)頂尖數(shù)據(jù)庫維護、優(yōu)化和架構專家,以217萬年薪受聘于中國建行總行資深技術專家,在國內(nèi)的金融六大行、證券、保險、電信、郵政、移動等行業(yè),以及青島海爾、云南紅塔、中遠集團、上海寶鋼等知名企業(yè)做數(shù)據(jù)庫的設計、維護、問題診斷和性能調(diào)優(yōu)。
牛新莊博士擁有20多項國際廠商認證(包括DB2 V5~V9的全部認證),獲得過國內(nèi)數(shù)據(jù)庫領域最高榮譽的“2006年中國首屆杰出數(shù)據(jù)庫工程師”獎,首屆IBM杰出軟件專家獎,“2006年IT 168技術卓越”獎等獎項。
書籍目錄
第1章 性能調(diào)整概述 1.1 性能概述 1.2 性能評估 1.3 建立性能目標 1.4 什么時候需要做性能調(diào)整 1.5 性能調(diào)整準則 1.6 性能調(diào)整的方法和過程 1.7 性能調(diào)整總結第2章 存儲I/O設計 2.1 存儲基本概念 2.2 存儲架構 2.3 存儲相關性能調(diào)整案例 2.4 存儲I/O設計總結第3章 操作系統(tǒng)相關性能問題 3.1 HP-UX系統(tǒng)性能監(jiān)控綜述 3.2 AIX性能監(jiān)控綜述 3.3 操作系統(tǒng)性能優(yōu)化 3.4 邏輯卷和lvmo優(yōu)化 3.5 總結第4章 數(shù)據(jù)庫物理設計和邏輯設計 4.1 數(shù)據(jù)庫物理設計 4.2 數(shù)據(jù)庫邏輯設計 4.3 使用Autoconfig設計數(shù)據(jù)庫 4.4 其他高級設計技術 4.5 數(shù)據(jù)庫設計總結第5章 DB2性能監(jiān)控 5.1 快照監(jiān)視器案例 5.2 事件監(jiān)視器及監(jiān)控案例 5.3 利用表函數(shù)監(jiān)控 5.4 性能管理視圖及案例 5.5 db2pd 5.6 db2mtrk及監(jiān)控案例 5.7 本章小結第6章 數(shù)據(jù)庫配置參數(shù)調(diào)整 6.1 數(shù)據(jù)庫配置參數(shù) 6.2 監(jiān)控和調(diào)優(yōu)實例(DBM)配置參數(shù) 6.3 監(jiān)控和調(diào)優(yōu)DB配置參數(shù) 6.4 調(diào)整DB2概要注冊變量 6.5 內(nèi)存自動調(diào)優(yōu) 6.6 總結第7章 鎖和并發(fā) 7.1 鎖等待及調(diào)整案例 7.2 鎖升級及調(diào)整案例 7.3 死鎖及調(diào)整案例 7.4 隔離級別與鎖 7.5 最大化并發(fā)性 7.6 鎖相關的性能問題總結 7.7 鎖與應用程序開發(fā) 7.8 本章小結第8章 索引設計與優(yōu)化 8.1 索引概念 8.2 索引結構 8.3 理解索引訪問機制 8.4 索引設計 8.5 索引創(chuàng)建原則與示例 8.6 影響索引性能的相關配置 8.7 索引維護 8.8 DB2 Design Advisor(db2advis) 8.9 索引調(diào)整總結 第9章 DB2優(yōu)化器 9.1 DB2優(yōu)化器介紹 9.2 SQL語句執(zhí)行過程 9.3 優(yōu)化器組件和工作原理 9.4 掃描方式 9.5 連接方法 9.6 優(yōu)化級別 9.7 如何影響優(yōu)化器來提高性能 9.8 優(yōu)化器總結第10章 統(tǒng)計信息更新與碎片整理 10.1 統(tǒng)計信息更新 10.2 碎片整理 10.3 重新綁定程序包 10.4 本章小結第11章 SQL語句調(diào)優(yōu) 11.1 通過監(jiān)控找出最消耗資源的SQL語句 11.2 通過解釋工具分析SQL語句執(zhí)行計劃 11.3 理解SQL語句如何工作 11.4 SQL調(diào)優(yōu)案例 11.5 提高應用程序性能第12章 DB2調(diào)優(yōu)案例、問題總結和技巧 12.1 調(diào)優(yōu)案例一:某移動公司存儲設計不當和SQL引起的I/O瓶頸 12.2 調(diào)優(yōu)案例二:某銀行知識庫系統(tǒng)鎖等待、鎖升級引起性能瓶頸 12.3 調(diào)優(yōu)案例三:某汽車制造商ERP系統(tǒng)通過調(diào)整統(tǒng)計信息提高性能 12.4 調(diào)優(yōu)案例四:某農(nóng)信社批量代收電費批處理慢調(diào)優(yōu)案例 12.5 調(diào)優(yōu)學習案例:利用壓力測試程序?qū)W習DB2調(diào)優(yōu)后記 參考文獻
章節(jié)摘錄
DB2進程體系結構UNIX和Linux用戶通常會檢查運行在其服務器上的進程或線程,以分析可能的問題及檢查服務器中消耗的資源。該信息不僅對執(zhí)行問題和資源分析的系統(tǒng)管理員有用,而且對于那些開發(fā)確保應用高度可用性和處理故障轉(zhuǎn)移腳本(這些腳本監(jiān)控DB2進程,以確定何時需要進行諸如數(shù)據(jù)庫重新啟動或服務器故障轉(zhuǎn)移之類的操作)的數(shù)據(jù)庫管理員也很有用。如果您正在使用AIX,則可以使用命令“ps-ef”檢查進程。在Solaris和HP-UX上,“ps-ef”將只顯示所有服務器端進程(例如代理程序、記錄器、頁面清除程序和預取程序)的db2sysc進程(主DB2引擎進程)。如果您正在使用Solaris和HP-UX,利用命令“/usr/ucb/ps -axw”您可以看到這些服務器端進程。這兩種版本的“ps”命令都可以在Linux上使用。 當在運行DB2數(shù)據(jù)庫客戶機或服務器的計算機上執(zhí)行該命令時,您可能會看到列出了多個DB2進程。本章的目的是詳細講解這些進程的工作原理,并解釋它們的作用以及它們何時可能會運行。通過本章內(nèi)容,您將會理解每個DB2進程,當您看到這些進程時,您會明白DB2正在執(zhí)行什么操作。 本章主要講解如下內(nèi)容:● DB2進程技術模型● 代理進程通信● 實用程序相關進程● DB2 V9.5多線程體系結構2.1 DB2 進程技術模型DB2進程技術模型的知識可以幫助您確定問題的性質(zhì),因為它會幫助您理解數(shù)據(jù)庫管理器和與其相關聯(lián)的組件如何交互作用。所有DB2服務器使用的進程技術模型使數(shù)據(jù)庫服務器與客戶機以及本地應用程序之間的通信更加容易。它還確保數(shù)據(jù)庫應用程序獨立于數(shù)據(jù)庫控制塊和關鍵數(shù)據(jù)庫文件之類的資源。對于正在訪問的每個數(shù)據(jù)庫,啟動各種引擎調(diào)度單元(Engine Dispatchable Unit,EDU)以處理各種數(shù)據(jù)庫任務,例如預取、通信和日志記錄。數(shù)據(jù)庫代理程序是一類特殊的EDU,創(chuàng)建它們是為了處理數(shù)據(jù)庫的應用程序請求。數(shù)據(jù)庫會為每個客戶機應用程序連接分配一個協(xié)調(diào)代理程序。協(xié)調(diào)代理程序代表應用程序工作,并根據(jù)需要使用專用內(nèi)存、進程間通信(IPC)或遠程通信協(xié)議與其他代理程序通信。 DB2進程體系結構提供一個防火墻,以便應用程序在不同于DB2的地址空間中運行。防火墻將數(shù)據(jù)庫和數(shù)據(jù)庫管理器與應用程序、存儲過程和用戶定義的函數(shù)(UDF)隔開。防火墻維護數(shù)據(jù)庫中數(shù)據(jù)的完整性,原因是它禁用應用程序編程錯誤覆蓋數(shù)據(jù)庫管理器的內(nèi)部緩沖區(qū)或文件。防火墻還提高了可靠性,原因是應用程序錯誤不能使數(shù)據(jù)庫管理器崩潰。DB2的進程技術模型如圖2-1、圖2-2所示。圖2-1 DB2進程技術模型圖1(適用于DB2 V9.5之前版本)下面我們詳細介紹DB2進程技術模型中的相關進程。圖2-2 DB2進程技術模型圖2 2.1.1 與操作系統(tǒng)相關的進程我們都知道DB2是安裝在操作系統(tǒng)上的,因而在我們使用DB2數(shù)據(jù)庫時,會產(chǎn)生一些和操作系統(tǒng)相關的進程,通常這些進程的owner是操作系統(tǒng)的root用戶。下面是在AIX上我們使用“ps –ef |grep –i db2”命令的輸出結果: $ ps -ef |grep db2 owner pid ppid ------------------------------------------------------------------------root 315626 1 0 02:31:45 - 0:00 db2wdog 0 db2inst1 434408 536582 0 02:31:47 - 0:00 db2srvlst 0 db2inst1 438308 520202 0 02:31:48 - 0:01 db2hmon 0 db2inst1 499808 536582 0 02:31:48 - 0:00 db2spmlw 0 root 512010 520202 0 02:31:46 - 0:00 db2ckpwd 0 db2inst1 520202 315626 0 02:31:46 - 0:00 db2sysc 0 root 528386 520202 0 02:31:46 - 0:00 db2ckpwd 0 root 532484 520202 0 02:31:46 - 0:00 db2ckpwd 0 root 53897 1 0 02:31:46 - 0:00 db2licc 0db2inst1 536582 520202 0 02:31:46 - 0:00 db2gds 0 db2inst1 540680 520202 0 02:31:46 - 0:00 db2ipccm 0 db2inst1 544778 520202 0 02:31:46 - 0:00 db2tcpcm 0 ---------------------------------略-------------------------------------在命令的輸出中我們可以看到“db2wdog”、“db2ckpwd”和“db2licc”進程的owner都是操作系統(tǒng)的root用戶,下面我們詳細講解這些和操作系統(tǒng)相關的進程。db2wdog進程我們都知道在UNIX/Linux上,init進程是所有進程的父進程;同樣,在DB2的進程中,“db2wdog”進程是所有其他DB2進程的父進程。這個進程是由操作系統(tǒng)的init進程派生的。從上面的命令輸出中我們可以看到“db2wdog”的“ppid”(parent pid)是操作系統(tǒng)的init進程?!癲b2wdog”進程是在UNIX和Linux操作系統(tǒng)上處理異常終止的看守程序?!癲b2wdog”是“db2 watch dog”的縮寫,是看門狗的意思,這個進程的工作機制如圖2-3所示。圖2-3 db2wdog進程的工作機制圖2-3 db2wdog進程的工作機制在UNIX中,“db2wdog”看守程序是必需的,因為UNIX中的進程只能跟蹤其父進程的標識。如圖3-3所示,每次新進程啟動時,“db2gds”進程就會通知DB2看守程序。如果任何DB2進程接收到CTRL-C或其他異常信號,該進程就會向看守程序發(fā)送信號,而看守程序會將信號傳播給實例中其他所有進程。如果“dbzwdog”進程出現(xiàn)異常,那么整個DB2數(shù)據(jù)庫將無法正常工作。db2ckpwd進程 我們在《循序漸進DB2—— DBA系統(tǒng)管理、維護與應用案例》的“第13章:數(shù)據(jù)庫安全”中給大家介紹過DB2數(shù)據(jù)庫和其他別的數(shù)據(jù)庫不一樣的地方在于DB2數(shù)據(jù)庫沒有數(shù)據(jù)庫用戶的概念,DB2所使用的用戶只能是操作系統(tǒng)的用戶,DB2使用的安全機制是依賴操作系統(tǒng)或第三方安全插件來實現(xiàn)的。那么,如果有一個應用程序連接數(shù)據(jù)庫,如何來驗證其用戶名和密碼的合法性呢?“db2ckpwd”進程用于檢查DB2服務器上的用戶標識和密碼。由于DB2依賴于操作系統(tǒng)級別的認證,因此,當某個用戶或應用程序連接到服務器上的數(shù)據(jù)庫時,便使用該進程驗證用戶標識和密碼。當將AUTHENTICATION設置為SERVER時,或者當連接是從非安全的操作系統(tǒng)建立的時候,就會進行認證。圖2-4顯示了利用“db2ckpwd”進程來驗證用戶和密碼的過程。 圖2-4 db2ckpwd進程的工作過程在圖2-4中,當用戶發(fā)出“db2 connect to sample user Melanie using Dallas”命令后,“db2ckpwd”進程把用戶名“Melance”和密碼“Dallas”與“/etc/security/passwd”文件中相應的內(nèi)容進行比較,驗證用戶和密碼的合法性。db2licc進程該進程管理已安裝的DB2許可證。
編輯推薦
《深入解析DB2:高級管理、內(nèi)部體系結構與診斷案例》特色:◆ 本書把DB2作為一個運行在操作系統(tǒng)上的普通程序,這樣更容易理解DB2在系統(tǒng)資源方面如何與操作系統(tǒng)交互的。◆ 貫穿全書的是豐富的實踐案例和腳本,讀者可以從這些案例和腳本中觀察出作者診斷和解決問題的思路。◆ 本書把對DB2數(shù)據(jù)庫內(nèi)核講解提升到關系型數(shù)據(jù)庫管理系統(tǒng)應具有的組件和功能高度,熟悉其他關系型數(shù)據(jù)庫的讀者可以觸類旁通很容易理解DB2數(shù)據(jù)庫。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載