出版時間:2012-7-30 出版社:機(jī)械工業(yè)出版社 作者:文平 頁數(shù):392
Tag標(biāo)簽:無
前言
數(shù)據(jù)庫技術(shù)在IT系統(tǒng)中的廣泛應(yīng)用已不少于二十年。在這二十幾年中,我們看到了數(shù)據(jù)庫技術(shù)的起承與轉(zhuǎn)合,產(chǎn)品的此消和彼長,供應(yīng)商的發(fā)展或萎縮。太多的變化使我們有些茫然,快速的更迭使我們疲于奔命,作為數(shù)據(jù)庫從業(yè)者,我們在技術(shù)方向上應(yīng)該如何跟隨?我們的行動方法應(yīng)該如何適應(yīng)? 這是一個大問題! 辯證法中很樸素的兩條準(zhǔn)則也許能幫到我們:第一,區(qū)分現(xiàn)象和本質(zhì);第二,要用系統(tǒng)的方法論來分析問題。 這點對于數(shù)據(jù)庫優(yōu)化工程來說更為重要!為什么這么說呢? 隨著這二十年的IT應(yīng)用持續(xù)深入,數(shù)據(jù)庫的應(yīng)用已經(jīng)進(jìn)入了相對成熟的時代。作為IT基礎(chǔ)設(shè)施的核心組成部件,數(shù)據(jù)庫早已不是可以孤立存在的系統(tǒng)——它與服務(wù)器系統(tǒng)、存儲系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)等硬件緊密相連,它與操作系統(tǒng)、中間件系統(tǒng)、應(yīng)用編碼等軟件緊密相連,它與用戶訪問模式、用戶使用頻度、數(shù)據(jù)承載壓力緊密相連。這種多重關(guān)聯(lián)特性決定了數(shù)據(jù)庫性能的評估與優(yōu)化就是一門綜合的技術(shù)與藝術(shù),是一項相當(dāng)嚴(yán)密的系統(tǒng)工程。在這個系統(tǒng)工程中,我們需要透過各種表象進(jìn)行全系統(tǒng)評估從而了解實質(zhì),并在最后得到相對精確和有效的結(jié)論與措施。 那么,能不能找到一種“具有普世意義的藥方”呢? 很遺憾,我認(rèn)為這種想法沒有任何存在的可能性!IT應(yīng)用的顯著特點就是需求個性化、部署個性化、使用個性化。在這個高度個性化的環(huán)境中,提煉出一個普遍適用的數(shù)據(jù)庫性能優(yōu)化準(zhǔn)則肯定是不可行的。 但這并不是說沒有規(guī)律可循,或者說,“具有普世意義的流程”是存在的,這個流程可以包括如下的關(guān)鍵環(huán)節(jié)—從什么樣的角度切入性能問題,如何保證數(shù)據(jù)庫運(yùn)行效率與IT系統(tǒng)中其他聯(lián)動部件保持協(xié)調(diào),數(shù)據(jù)庫性能優(yōu)化的工程過程要有哪些階段。該流程并未局限于數(shù)據(jù)庫內(nèi)部,性能優(yōu)化是要圍繞IT應(yīng)用整體來展開的。 具體說來,對于面向性能的優(yōu)化,大家需要有四個共識。第一個共識是,要充分意識到這是一個全局問題,這是一個應(yīng)用程序、部署方式、存儲設(shè)備、服務(wù)器設(shè)備、網(wǎng)絡(luò)拓?fù)?、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)等全員參與的優(yōu)化問題。由于很多問題是在數(shù)據(jù)庫以外的,這要求性能分析和優(yōu)化人員具有完整的知識體系——這是一個巨大的挑戰(zhàn)。但是沒有辦法,IT系統(tǒng)中的任何一點都可能是性能問題的麻煩制造者。在這點上,局部的觀點要服從全局的觀點——從系統(tǒng)工程角度來看待問題。 第二個共識是,需要在設(shè)計階段討論性能問題,并及時做好性能風(fēng)險上的應(yīng)對策略。這里的設(shè)計不僅僅指應(yīng)用的架構(gòu)設(shè)計,還特指應(yīng)用中的數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計與物理結(jié)構(gòu)部署。數(shù)據(jù)庫設(shè)計中的需求實現(xiàn)以及設(shè)計中的優(yōu)化考慮,是數(shù)據(jù)庫性能優(yōu)化的基本決定要素。如果不能在設(shè)計上考慮優(yōu)化要素,那么這樣的架構(gòu)設(shè)計就是先天不足的架構(gòu)設(shè)計。 第三個共識是,需要在開發(fā)階段討論性能問題。很多工程案例告訴我們,應(yīng)用的編碼構(gòu)成決定了應(yīng)用在性能方面的主要特征。同樣的應(yīng)用邏輯,不同的代碼實現(xiàn),其效率可能是不同的。編寫性能可以達(dá)到最佳同時系統(tǒng)開銷最小的應(yīng)用模塊,是編碼中事關(guān)性能的主要任務(wù)。但遺憾的是,在大多數(shù)系統(tǒng)中,由于編程人員的技術(shù)素質(zhì)、項目完成工期上的壓力、項目預(yù)算上的限制等緣由并未做完整的優(yōu)化處理。 第四個共識是,在數(shù)據(jù)庫性能優(yōu)化工作中,如果系統(tǒng)處于運(yùn)行階段,這時優(yōu)化人員的手段是極其有限的,優(yōu)化效果和作用也相對具有局限性。從優(yōu)化工作的貢獻(xiàn)率來說,數(shù)據(jù)庫調(diào)優(yōu)成本會隨著IT應(yīng)用的生命周期進(jìn)程而增加,但調(diào)優(yōu)收益卻是同步降低并逐漸趨于零的。 閱讀本書之前,我們需要建立如上的幾個共識,因為本書就是按照這樣的共識和這樣的順序完成寫作和表述的。 本書主要介紹的是Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)的優(yōu)化問題,但是本書的技術(shù)觀點不限于此,對于其他數(shù)據(jù)庫(DB2也好,SQL Server也好,或者是MySQL、PostgreSQL等中小規(guī)模數(shù)據(jù)庫也好)來說,本書的技術(shù)觀點同樣適用。 本書從前至后分為若干部分來描述數(shù)據(jù)庫性能系統(tǒng)工程中的若干環(huán)節(jié)。其中的第一個環(huán)節(jié)便是數(shù)據(jù)庫設(shè)計問題。把該問題作為本書的首要描述內(nèi)容,就是因為最優(yōu)的性能來源于最恰當(dāng)?shù)臄?shù)據(jù)庫設(shè)計方案。在工程實踐中,很多數(shù)據(jù)庫設(shè)計方案是由不當(dāng)設(shè)計造成的,所以,在設(shè)計階段,我們必須要考慮數(shù)據(jù)庫設(shè)計問題。這里面包括邏輯數(shù)據(jù)庫設(shè)計、物理數(shù)據(jù)庫設(shè)計、物理數(shù)據(jù)庫部署問題,分別就是本書第1~3章的內(nèi)容。 正確的數(shù)據(jù)庫物理部署和適應(yīng)性配置策略,恰當(dāng)?shù)臄?shù)據(jù)庫訪問設(shè)置和硬件資源的使用設(shè)定,是數(shù)據(jù)庫優(yōu)化運(yùn)行的一個重要性能因素。這里主要涉及物理資源在操作系統(tǒng)層面的計算資源分配,存儲空間使用的設(shè)置,內(nèi)存資源的使用等問題。這些分別就是本書第4~6章的內(nèi)容。 數(shù)據(jù)庫可靠性和數(shù)據(jù)庫性能往往會產(chǎn)生矛盾。那么,在Oracle中,我們?nèi)绾慰紤]這個矛盾結(jié)合體呢?這是本書第7章試圖要說明的內(nèi)容。 對于Oracle來說,Oracle也許更適用于承載大規(guī)模數(shù)據(jù),因為Oracle有著其他數(shù)據(jù)庫平臺所少有的大規(guī)模數(shù)據(jù)處理解決方案—多分區(qū)技術(shù)。本書第8章將向讀者完整呈現(xiàn)Oracle數(shù)據(jù)庫的表分區(qū)能力。 數(shù)據(jù)庫設(shè)計中的一個重要內(nèi)容是查詢設(shè)計與索引配套。Oracle在處理查詢時需要考量SQL查詢的內(nèi)容和對應(yīng)數(shù)據(jù)庫中表與索引的存在匹配關(guān)系,并因此由數(shù)據(jù)庫優(yōu)化器提交SQL執(zhí)行計劃。Oracle支持各種索引類型,那么我們?nèi)绾问褂眠@些索引類型,在什么情況下使用什么索引呢?這是本書第9章所試圖描述的。 在數(shù)據(jù)庫系統(tǒng)部署運(yùn)行后,如何獲得數(shù)據(jù)庫運(yùn)行性能狀態(tài),如何進(jìn)行數(shù)據(jù)庫運(yùn)行中的資源使用分析,在分析時使用什么樣的工具,以及這些工具返回信息的解讀方法,這是本書第10~12章著重介紹的內(nèi)容。這部分面向系統(tǒng)的運(yùn)行監(jiān)測和運(yùn)維,試圖解決我們在系統(tǒng)上線后“該做什么”的問題。 本書雖然是面向性能問題的,但是我也自知并不能解決所有問題。而且,本書中提到的技術(shù)觀點和做法,可能在一些具體場景下適用,在其他一些場景下卻并不適用,這點希望大家能夠注意到。同時,作為本書作者,我在本書中沒有寫入任何所謂的“絕招、法寶”。近二十年從事數(shù)據(jù)庫技術(shù)研究和實踐的成功經(jīng)驗與失敗教訓(xùn)告訴我,從來就不曾有絕招和法寶!能相信和依賴的,只有我們自己正確的系統(tǒng)觀和工程實踐上的科學(xué)精神,以及個人的勤奮和認(rèn)真罷了! 恰在本書寫作完成后,中國的IT業(yè)發(fā)生了一次不小的“地震”—華為正式進(jìn)入IT領(lǐng)域,并成立IT產(chǎn)品線。鑒于對華為精神的敬仰,我接受了華為工作聘請,任職為華為IT架構(gòu)師,進(jìn)行數(shù)據(jù)庫領(lǐng)域的產(chǎn)品架構(gòu)設(shè)計和技術(shù)研發(fā)。我希望我的知識、經(jīng)驗,我的工作熱情、潛能,能為華為在IT領(lǐng)域的拓展貢獻(xiàn)自己的光和熱。 同時,也祝本書的各位讀者工作順利、事業(yè)有成!文平
內(nèi)容概要
《Oracle數(shù)據(jù)庫性能優(yōu)化的藝術(shù)》內(nèi)容高屋建瓴,用辯證法中的系統(tǒng)化分析方法,不僅從硬件(服務(wù)器系統(tǒng)、存儲系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)等)、軟件(操作系統(tǒng)、中間件系統(tǒng)、應(yīng)用軟件等)和應(yīng)用場景(用戶訪問模式、用戶使用頻度、數(shù)據(jù)承載壓力等)等多個相關(guān)聯(lián)的維度深入闡述了具有普適意義的數(shù)據(jù)庫性能評估與優(yōu)化的思維方法和工作流程,而且還從流程的角度詳細(xì)講解了應(yīng)該如何在數(shù)據(jù)庫系統(tǒng)的架構(gòu)階段、設(shè)計階段、開發(fā)階段、部署階段、運(yùn)行階段等各環(huán)節(jié)中去尋找性能問題的瓶頸和解決方案。
全書一共12章:第1章從系統(tǒng)工程的角度總結(jié)了性能問題可以分為哪些階段去考慮、性能問題有哪些種類,以及性能改進(jìn)的工程方法等;第2章詳細(xì)講解了在數(shù)據(jù)庫的設(shè)計階段如何去考慮數(shù)據(jù)庫的性能問題;第3~6章從物理數(shù)據(jù)庫部署、數(shù)據(jù)庫訪問設(shè)置、硬件資源設(shè)定、存儲空間和內(nèi)存資源的使用、實例配置與緩存優(yōu)化等多方面講解了數(shù)據(jù)庫系統(tǒng)在部署階段的性能優(yōu)化問題;第7章探討了如何平衡數(shù)據(jù)庫可靠性和性能之間的矛盾;第8章完整呈現(xiàn)了Oracle數(shù)據(jù)庫的表分區(qū)能力,是解決與大規(guī)模數(shù)據(jù)處理相關(guān)的性能問題的關(guān)鍵;第9章從索引和執(zhí)行計劃的角度講解了數(shù)據(jù)庫性能優(yōu)化的方法;第10~12章著重介紹了在數(shù)據(jù)庫系統(tǒng)部署并運(yùn)行后,如何獲得數(shù)據(jù)庫運(yùn)行時的性能狀態(tài),如何對正在使用的各種資源進(jìn)行分析,分析時使用什么工具,以及如何解讀這些工具返回的信息。
本書重在“授人以漁”,雖然主要內(nèi)容是圍繞Oracle數(shù)據(jù)庫系統(tǒng)展開的,但是書中的觀點同樣適用于DB2、SQL
Server、MySQL、PostgreSQL等數(shù)據(jù)庫系統(tǒng)。
作者簡介
文平,原名侯文平,在大型數(shù)據(jù)庫系統(tǒng)和UNIX/Linux平臺領(lǐng)域的一線奮斗了近20年。他是一位資深的數(shù)據(jù)庫專家,在Oracle、DB2、Sybase等大型數(shù)據(jù)庫系統(tǒng)的原理、應(yīng)用、架構(gòu)、設(shè)計、分析、性能優(yōu)化等方面積累了大量寶貴的經(jīng)驗;他是一位資深的UNIX/Linux系統(tǒng)專家,精通AIX、HP-UX、Solaris
和SCO等UNIX系統(tǒng)以及主流Linux系統(tǒng)的架構(gòu)、部署、管理、運(yùn)維及性能優(yōu)化;他是一位資深的系統(tǒng)架構(gòu)師,不僅對數(shù)據(jù)庫系統(tǒng)和UNIX/Linux系統(tǒng)的架構(gòu)和設(shè)計有十分深入的研究,而且還極為擅長大型軟件項目的架構(gòu)和設(shè)計。他還是一位資深的技術(shù)顧問和培訓(xùn)師,長年為中石油、中海油等諸多超大型企業(yè)提供數(shù)據(jù)庫和UNIX/Linux系統(tǒng)方面的技術(shù)咨詢與培訓(xùn)支持,同時他還是國內(nèi)各主要相關(guān)培訓(xùn)機(jī)構(gòu)的特聘講師。他在業(yè)界也頗具影響力,多次受邀在國內(nèi)著名的數(shù)據(jù)庫技術(shù)大會和系統(tǒng)架構(gòu)師大會上發(fā)表重要的主題演講,深受歡迎。
此外,他還是一位熱衷于分享的技術(shù)作家,十多年來,精心撰寫并出版了多部技術(shù)專著,廣獲讀者好評。部分著作列舉如下:
《Oracle大型數(shù)據(jù)庫系統(tǒng)在AIX/UNIX上的實戰(zhàn)詳解》
《Sybase數(shù)據(jù)庫在UNIX、Windows上的實施和管理》
《Oracle 8 系統(tǒng)開發(fā)與管理——iAS配置、管理與開發(fā)》
《Sybase Internet/Intranet解決方案:Web.SQL應(yīng)用開發(fā)》
《PowerBuilder 開發(fā)中的數(shù)據(jù)庫設(shè)計》
《AIX系統(tǒng)管理、維護(hù)與高可用集群建設(shè)》。
書籍目錄
前言
第1章 綜述:優(yōu)化是一個系統(tǒng)工程
1.1 性能問題是一個系統(tǒng)工程
1.1.1 考慮性能問題的不同階段
1.1.2 考慮性能問題的不同方面
1.1.3 性能架構(gòu)中的問題分類
1.2 性能改進(jìn)的工程方法
1.2.1 不要希望一步到位!
1.2.2 有時也能一步到位?
1.2.3 性能改進(jìn)工作流程
1.2.4 建立性能分析流程圖
1.2.5 編程中應(yīng)盡量避免的問題
1.2.6 緊急事件性能處理
第2章 設(shè)計與優(yōu)化:物理數(shù)據(jù)庫結(jié)構(gòu)設(shè)計
2.1 數(shù)據(jù)庫的特定運(yùn)行平臺
2.2 物理設(shè)計與性能的關(guān)系
2.3 應(yīng)用框架與性能特征
2.4 物理表設(shè)計的關(guān)注點
2.4.1 從邏輯模型到物理模型
2.4.2 物理數(shù)據(jù)庫設(shè)計的范圍
2.4.3 規(guī)范化的設(shè)計
2.4.4 反規(guī)范化設(shè)計
2.4.5 另類反規(guī)范化
2.4.6 是否反規(guī)范化
2.5 索引的初始設(shè)計
2.5.1 索引對象的基本結(jié)構(gòu)
2.5.2 索引的可選擇性指標(biāo)
2.5.3 索引的雙面性特征
2.5.4 索引的類型
2.5.5 索引的初始確定
2.5.6 臨時表的使用
第3章 部署與優(yōu)化:準(zhǔn)備基本運(yùn)行環(huán)境
3.1 性能問題在表象上的欺騙性
3.2 理解數(shù)據(jù)庫需要的系統(tǒng)資源
3.2.1 IO資源的使用
3.2.2 內(nèi)存資源的使用
3.2.3 CPU資源的使用
3.2.4 解讀內(nèi)存與CPU狀態(tài)
3.3 小型機(jī)數(shù)據(jù)庫部署準(zhǔn)備
3.3.1 AIX的部署準(zhǔn)備
3.3.2 HP-UX的部署準(zhǔn)備
3.3.3 Solaris的部署準(zhǔn)備
3.4 X86系統(tǒng)數(shù)據(jù)庫部署準(zhǔn)備
3.4.1 Linux系統(tǒng)的部署準(zhǔn)備
3.4.2 Windows系統(tǒng)的部署準(zhǔn)備
第4章 部署與優(yōu)化:數(shù)據(jù)庫的優(yōu)化部署
4.1 實例初始配置注意點
4.2 數(shù)據(jù)庫空間使用關(guān)注
4.3 表空間的創(chuàng)建管理
4.4 創(chuàng)建表時的性能因素
4.5 數(shù)據(jù)導(dǎo)入與索引維護(hù)
第5章 實例優(yōu)化:配置高效運(yùn)行環(huán)境
5.1 實例配置與緩存優(yōu)化
5.1.1 啟用自動內(nèi)存管理
5.1.2 主機(jī)內(nèi)存分配原則
5.1.3 使用緩存顧問工具
5.1.4 緩存的命中率問題
5.1.5 緩存命中率分析
5.1.6 精細(xì)化緩存的配置
5.2 SQL與緩存的使用
5.2.1 緩存優(yōu)化
5.2.2 查看數(shù)據(jù)緩存內(nèi)容
5.2.3 共享池的效率檢查
5.2.4 重做日志緩存問題
5.3 PGA內(nèi)存分配原則
5.4 Oracle虛擬化關(guān)注點
5.4.1 IO問題上的關(guān)注點
5.4.2 內(nèi)存問題上的關(guān)注點
5.4.3 CPU問題上的關(guān)注點
5.4.4 故障恢復(fù)問題的解決
第6章 存儲優(yōu)化:配置高效存儲環(huán)境
6.1 IO問題的表象與內(nèi)涵
6.2 存儲介質(zhì)的基礎(chǔ)配置
6.2.1 使用邏輯卷技術(shù)
6.2.2 設(shè)定存儲參數(shù)
6.3 存儲IO能力探究
6.3.1 Orion的安裝
6.3.2 Orion的使用
第7章 綜合部署:Oracle可靠性設(shè)置
7.1 數(shù)據(jù)庫設(shè)置的綜合考慮
7.1.1 設(shè)置數(shù)據(jù)庫的內(nèi)存使用
7.1.2 數(shù)據(jù)庫的進(jìn)程使用設(shè)置
7.1.3 設(shè)置數(shù)據(jù)庫IO模式
7.1.4 設(shè)置數(shù)據(jù)庫的歸檔模式
7.1.5 使用閃回恢復(fù)區(qū)歸檔
7.1.6 設(shè)置冗余控制文件
7.1.7 保留控制文件信息
7.1.8 設(shè)置聯(lián)機(jī)重做日志文件
7.1.9 設(shè)置聯(lián)機(jī)重做日志組數(shù)
7.1.10 設(shè)置數(shù)據(jù)塊校驗和檢查
7.1.11 打開性能時間統(tǒng)計
7.1.12 表空間和段管理方式
7.1.13 設(shè)定多臨時表空間和組
7.1.14 使用自動撤銷管理
7.1.15 設(shè)置空間錯誤延時
7.1.16 設(shè)置數(shù)據(jù)庫閃回
7.2 RAC下的設(shè)置
7.2.1 注冊遠(yuǎn)程監(jiān)聽器的實例
7.2.2 設(shè)置內(nèi)部互聯(lián)網(wǎng)絡(luò)
7.3 加密表數(shù)據(jù)
7.4 加密表空間
第8章 對象優(yōu)化:大表分區(qū)方式部署
8.1 分區(qū)技術(shù)適用的范圍
8.2 分區(qū)技術(shù)的基本概念
8.2.1 分區(qū)表的結(jié)構(gòu)
8.2.2 分區(qū)部署的收益
8.2.3 分區(qū)部署的成本
8.2.4 索引分區(qū)
8.3 分區(qū)表的管理操作
8.3.1 面向分區(qū)的管理
8.3.2 面向分區(qū)的操作
8.3.3 面向分區(qū)的恢復(fù)
8.4 分區(qū)的技術(shù)實現(xiàn)
8.4.1 基礎(chǔ)分區(qū)的實現(xiàn)
8.4.2 組合分區(qū)的擴(kuò)展
8.4.3 擴(kuò)展分區(qū)技術(shù)
8.4.4 分區(qū)表的數(shù)據(jù)壓縮
8.4.5 查看數(shù)據(jù)存儲位置
8.4.6 分區(qū)鍵數(shù)據(jù)的改變
8.4.7 分區(qū)方式選擇問題
8.4.8 使用分區(qū)顧問工具
第9章 索引定義:索引設(shè)置與執(zhí)行計劃
9.1 索引對象
9.2 Oracle優(yōu)化器
9.2.1 優(yōu)化器的選擇
9.2.2 優(yōu)化器的設(shè)置
9.2.3 數(shù)據(jù)掃描問題
9.3 索引的技術(shù)指標(biāo)
9.3.1 索引的選擇性
9.3.2 索引的簇化率
9.3.3 索引二元高度
9.3.4 直方圖的使用
9.4 索引與SQL優(yōu)化
9.5 避免索引不作為
9.5.1 非等式運(yùn)算
9.5.2 Null值的比對
9.5.3 函數(shù)的調(diào)用
9.6 創(chuàng)建虛擬的索引
9.7 創(chuàng)建壓縮的索引
9.8 索引的使用監(jiān)測
9.8.1 創(chuàng)建不可視索引
9.8.2 索引的可用狀態(tài)
9.8.3 監(jiān)測索引的使用
9.9 對分區(qū)表建立索引
第10章 實例效率:識別數(shù)據(jù)庫內(nèi)部作為
10.1 研究數(shù)據(jù)庫運(yùn)行效率
10.1.1 定義和量化性能
10.1.2 統(tǒng)計分析的要素
10.1.3 性能狀態(tài)的統(tǒng)計
10.1.4 其他相關(guān)統(tǒng)計
10.2 操作系統(tǒng)的使用方法
10.2.1 性能監(jiān)視的手段
10.2.2 使用vmstat
10.2.3 使用iostat
10.2.4 使用sar
10.2.5 使用nmon命令
10.3 調(diào)整計劃探討
第11章 優(yōu)化踐行:數(shù)據(jù)庫層面的優(yōu)化
11.1 Oracle自動統(tǒng)計
11.1.1 統(tǒng)計數(shù)據(jù)的解釋
11.1.2 匯總的統(tǒng)計數(shù)據(jù)
11.2 使用AWR
11.2.1 在OEM中訪問AWR
11.2.2 用API管理AWR快照
11.2.3 使用度量基線
11.2.4 AWR工作報告
11.3 使用ADDM
11.3.1 ADDM內(nèi)部結(jié)構(gòu)
11.3.2 ADDM使用示例
11.3.3 ADDM環(huán)境設(shè)置
11.3.4 ADDM手工獲得
第12章 優(yōu)化踐行:操作系統(tǒng)層面的優(yōu)化
12.1 平臺的性能相關(guān)性
12.2 分配和調(diào)度內(nèi)存資源
12.2.1 使用大的內(nèi)存頁面
12.2.2 設(shè)定內(nèi)存替換閾值
12.2.3 設(shè)定內(nèi)存空閑閾值
12.2.4 對應(yīng)設(shè)置應(yīng)用內(nèi)存
12.3 設(shè)置系統(tǒng)進(jìn)程資源
12.4 系統(tǒng)IO資源的使用
12.4.1 優(yōu)化使用異步IO
12.4.2 優(yōu)化文件系統(tǒng)掛載
12.4.3 優(yōu)化應(yīng)用IO模式
12.5 關(guān)閉系統(tǒng)中無用的服務(wù)
12.6 監(jiān)控主機(jī)資源使用
12.6.1 服務(wù)器性能監(jiān)控
12.6.2 分析系統(tǒng)的性能
寫在最后
章節(jié)摘錄
第1章綜述:優(yōu)化是一個系統(tǒng)工程1.1 性能問題是一個系統(tǒng)工程1.2 性能改進(jìn)的工程方法面向數(shù)據(jù)庫系統(tǒng)性能的系統(tǒng)工程本章將著力于闡述本書所倡導(dǎo)的一個基本技術(shù)觀點—性能優(yōu)化是要在全系統(tǒng)范圍內(nèi)考慮的一個系統(tǒng)工程。眾所周知,性能是涉及范圍廣泛的一個綜合性問題。面對性能問題,有時候用戶看到的僅僅是一個表象:“慢”!事實上,這個詞太過含糊,其背后所涉及的問題可能包括:哪臺機(jī)器“慢”?哪個業(yè)務(wù)“慢”?什么時候“慢”?什么操作“慢”?誰操作時“慢”?……那么,我們就來嘗試解決這個含糊的“慢”的問題。現(xiàn)在站到服務(wù)器邊上,看看機(jī)架上縱橫交錯的連線,還有那如繁星般閃爍的群燈,然后問自己:“這個家伙到底哪里出了問題呢?”也許我們會考慮到如下一些方面:可能是CPU過載了?一定有這可能!是內(nèi)存調(diào)度顛簸?一定有這可能!網(wǎng)絡(luò)傳輸出現(xiàn)瓶頸?一定有這可能!磁盤系統(tǒng)訪問延遲嚴(yán)重?一定有這可能!I/O通道有硬件問題?一定有這可能!內(nèi)存泄露資源耗盡?一定有這可能!系統(tǒng)出現(xiàn)Bug?一定有這可能!業(yè)務(wù)數(shù)據(jù)量太大?一定有這可能!用戶連接太多了?一定有這可能!用戶正在執(zhí)行某報表業(yè)務(wù)?一定有這可能!用戶正在執(zhí)行備份?一定有這可能!業(yè)務(wù)系統(tǒng)模塊改變?一定有這可能! 中間件系統(tǒng)的問題?一定有這可能! 某些我們“尚不知道”的可能?一定有這可能!對于上述的諸多可能,如果要盡述其細(xì)節(jié),可能會列出數(shù)百種,甚至更多!假如我們能夠列出一份排除清單,并逐一排除,相信很快就會發(fā)現(xiàn)一個基本的事實:我們已陷入了一個“問題”的海洋,并且難以自拔。 我寫上述文字的目的不是想制造一種技術(shù)上的白色恐怖氛圍,而是想說明一個技術(shù)觀點:沒有行之有效的方法,不掌握解決問題的規(guī)律,那么事倍功半是必然的! 也就是說,技術(shù)實現(xiàn)是有其規(guī)律的,這里冒昧地將科學(xué)泰斗錢學(xué)森的“系統(tǒng)工程”理論引用到性能優(yōu)化這樣的工程實踐中來,全面系統(tǒng)地看待問題,找到方向,細(xì)粒度地解決問題,獲得工程收益。
媒體關(guān)注與評論
數(shù)據(jù)庫系統(tǒng)的性能優(yōu)化一直是困擾企業(yè)和DBA的一個大難題,因為它是一個復(fù)雜的系統(tǒng)工程,不僅與服務(wù)器系統(tǒng)、存儲系統(tǒng)、網(wǎng)絡(luò)設(shè)備等硬件關(guān)系密切,而且它也與操作系統(tǒng)、中間件系統(tǒng)等軟件關(guān)系密切。更為復(fù)雜的情況是,不同企業(yè)的應(yīng)用場景和不同數(shù)據(jù)庫操作人員的使用方式都是極度個性化的,他們所面臨的性能問題也會是個性化的。面對錯綜復(fù)雜的系統(tǒng)環(huán)境和高度個性化的用戶需求,當(dāng)數(shù)據(jù)庫出現(xiàn)性能問題時,我們究竟應(yīng)該從何處著手?有沒有普遍適用的方法論? 文平老師是國內(nèi)Oracle數(shù)據(jù)庫領(lǐng)域的頂級專家之一,在該領(lǐng)域潛心研究和實踐近20年,他用系統(tǒng)化的思維方法總結(jié)出了Oracle數(shù)據(jù)庫系統(tǒng)性能優(yōu)化的方法論,而不只是專注于解決某些具體的問題,從技術(shù)層面上升到了藝術(shù)層面,是該領(lǐng)域難得的一本經(jīng)典之作?!狪Tpub技術(shù)論壇
編輯推薦
《Oracle數(shù)據(jù)庫性能優(yōu)化的藝術(shù)》編輯推薦:資深數(shù)據(jù)庫專家、UNIX系統(tǒng)專家、系統(tǒng)架構(gòu)師近20年一線工作經(jīng)驗結(jié)晶,高屋建瓴,指導(dǎo)性強(qiáng);用系統(tǒng)化分析的方法,從系統(tǒng)工程的角度深入闡述了具有普遍意義的數(shù)據(jù)庫性能評估與優(yōu)化的思維方法與工作流程。
名人推薦
本書從系統(tǒng)工程和實踐藝術(shù)的角度,闡釋了數(shù)據(jù)庫這一典型技術(shù)領(lǐng)域里的各種奧秘、招式和方法論。無論是過去,還是現(xiàn)在,應(yīng)用系統(tǒng)的核心問題都是性能問題,而性能問題很大程度上又是數(shù)據(jù)庫的性能問題。所以,一直以來,數(shù)據(jù)的性能庫調(diào)優(yōu)都是熱門話題,備受關(guān)注。本書顛覆了同類書遵從Oracle官方文檔(尤其是OCP教材)體系的寫法,從性能優(yōu)化問題現(xiàn)場的角度,從一線工程師怎樣解決問題的角度,從用戶看待性能瓶頸的角度,從架構(gòu)設(shè)計的角度多視角進(jìn)行闡述,使到本書極具現(xiàn)場感和實踐感。本書是作者多年一線工作實踐的精華,也是作者對多年來積累的優(yōu)化心得的有感而發(fā)。個人一直認(rèn)為,只有那些用心去寫的書,投入了作者感情的書才是好書,而本書正是這樣的一部作品,值得向廣大讀者推薦。 近年來,由于存儲設(shè)備的單位成本以驚人的速度下降(1G硬盤空間的成本現(xiàn)在只需要幾美分,這在過去難以想象),使得我們可以用更低的成本存儲大量的數(shù)據(jù)。電信 運(yùn)營商,可以記錄用戶通話、短消息、無線上網(wǎng)產(chǎn)生的每一條信令,省級運(yùn)營商每小時寫入存儲設(shè)備的數(shù)據(jù)量就可以達(dá)到幾百G。電子商務(wù)網(wǎng)站,可以記錄用戶的每一 次交易,甚至每一次點擊,可以復(fù)原用戶的完整訪問路徑,從而找出用戶的興趣點。在生命科學(xué)領(lǐng)域,對人體的DNA分析,一個個體就能產(chǎn)生幾個G的數(shù)據(jù),可以想象如果 一個生物信息數(shù)據(jù)庫里包含了數(shù)以億計的個體數(shù)據(jù),信息量將會是怎樣一個規(guī)模,如此等等,不勝枚舉。毫無疑問,我們正處于一個信息爆炸的大數(shù)據(jù)時代。以 Oracle為代表的關(guān)系數(shù)據(jù)庫誕生已經(jīng)有30多年時間,經(jīng)過這幾十年的積累,很多應(yīng)用的數(shù)據(jù)量已經(jīng)非??捎^。作為這些數(shù)據(jù)的載體、容器,數(shù)據(jù)庫承受著日益 增長的壓力。對于存放這些數(shù)據(jù)的數(shù)據(jù)庫的關(guān)注,被提到了一個新的高度,這完全是系統(tǒng)需求使然。而系統(tǒng)需求,即為用戶需求,基于性能優(yōu)化目標(biāo)的海量數(shù)據(jù)庫設(shè)計,不可避免 地變成系統(tǒng)設(shè)計中的一個新領(lǐng)域。如何面對海量數(shù)據(jù)給存儲、查詢速度、災(zāi)備等方面帶來的壓力,是每位數(shù)據(jù)庫工程師所必須面對的課題。希望本書在此領(lǐng)域可以起到拋磚引玉的作用。ITPUB創(chuàng)始人 黃志洪于中山大學(xué)海量數(shù)據(jù)與云計算研究中心
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
Oracle數(shù)據(jù)庫性能優(yōu)化的藝術(shù) PDF格式下載