出版時(shí)間:2010 年8月 出版社:電子工業(yè)出版社 作者:譚懷遠(yuǎn) 頁數(shù):438
Tag標(biāo)簽:無
前言
筆者在寫這本書的時(shí)候,翻看了很多當(dāng)前國內(nèi)數(shù)據(jù)庫方面的書籍,發(fā)現(xiàn)寫性能優(yōu)化的書并不多,特別是從工作經(jīng)驗(yàn)和思路上來討論性能方面的書,更是少之又少,這些因素讓筆者思考要寫這樣一本書,這也算是這本書的一個(gè)定位。在這本書里,你將會(huì)學(xué)到筆者在性能優(yōu)化方面的一些思路和思考,一些故障處理的方法和原則,這些東西是筆者在實(shí)踐中長期積累的心得體會(huì),在筆者看來,掌握處理問題的方法和分析問題的思路在日常工作中顯得更為重要,當(dāng)你掌握了一些處理問題的基本思路之后,剩下的工作就是去Google或者閱讀參考書了。本書的一個(gè)特點(diǎn)是,凡是作者提到的觀點(diǎn),都盡可能地使用一些例子來證明它,這樣看起來更有說服力一些。為什么會(huì)出現(xiàn)數(shù)據(jù)庫的性能問題性能問題是最近幾年來DBA們越來越關(guān)注的一個(gè)數(shù)據(jù)庫技術(shù)領(lǐng)域,歸根結(jié)底,造成它的原因是最近幾年信息化進(jìn)程的飛速發(fā)展,導(dǎo)致了很多系統(tǒng)的用戶數(shù)量猛增,數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)量亦成幾何級(jí)數(shù)激增,數(shù)據(jù)庫作為數(shù)據(jù)處理和存儲(chǔ)的最終受體,將必然直接承擔(dān)這種變化導(dǎo)致的性能下降。因此在人們對(duì)信息的依賴性越來越強(qiáng)的時(shí)候,對(duì)信息使用的效率也變得越來越關(guān)注,這樣數(shù)據(jù)庫的性能優(yōu)化問題就日益嚴(yán)重地壓在DBA的身上。
內(nèi)容概要
在《讓Oracle跑得更快:Oracle 10g性能分析與優(yōu)化思路》里讀者將會(huì)學(xué)到作者在性能優(yōu)化方面的一些思路和思考,一些故障處理的方法和原則,這些東西是作者在實(shí)踐中長期積累的心得體會(huì),當(dāng)讀者掌握了一些處理問題的基本思路之后,成為一名合格的DBA就是一件輕而易舉的事情了。 《讓Oracle跑得更快:Oracle 10g性能分析與優(yōu)化思路》適用對(duì)象:Oracle DBA、Oracle開發(fā)人員,和其他對(duì)Oracle數(shù)據(jù)庫感興趣的人員。
作者簡介
譚懷遠(yuǎn),副總工,DBA團(tuán)隊(duì)負(fù)責(zé)人,在國內(nèi)屬于較早進(jìn)入專職DBA崗位的人。是國內(nèi)著名數(shù)據(jù)庫論壇ITPUB的資深版主。論壇idalantarny。10年的Oracle DBA工作經(jīng)驗(yàn)。從Oracle 8開始進(jìn)入數(shù)據(jù)庫領(lǐng)域,從Oracle 8到Oracle 8i,Oracle 9i,Oracle 10g,見證了中國DBA職業(yè)的發(fā)展歷程。作者對(duì)數(shù)據(jù)庫的性能優(yōu)化有獨(dú)到的見解,頗擅長于海量數(shù)據(jù)數(shù)據(jù)庫的設(shè)計(jì)管理及優(yōu)化工作。
書籍目錄
第1章 引起數(shù)據(jù)庫性能問題的因素 1.1 軟件設(shè)計(jì)對(duì)數(shù)據(jù)庫的影響 1.1.1 軟件架構(gòu)設(shè)計(jì)對(duì)數(shù)據(jù)庫性能的影響 1.1.2 軟件代碼的編寫對(duì)數(shù)據(jù)庫性能的影響 1.2 數(shù)據(jù)庫的設(shè)計(jì) 1.2.1 0LTP數(shù)據(jù)庫 1.2.2 0LAP數(shù)據(jù)庫 1.3 數(shù)據(jù)庫的硬件設(shè)計(jì) 1.3.1 存儲(chǔ)容量 1.3.2 存儲(chǔ)的物理設(shè)計(jì) 1.3.3 數(shù)據(jù)的安全 1.4 小結(jié)第2章 鎖和阻塞 2.1 關(guān)于鎖 2.2 鎖和阻塞 2.3 引起阻塞的其他情況 2.3.1 select for update 2.3.2 外鍵和索引第3章 Latch和等待 3.1 共享池中的Latch爭用 3.2 數(shù)據(jù)緩沖池Latch爭用 3.2.1 表數(shù)據(jù)塊 3.2.2 索引數(shù)據(jù)塊 3.2.3 索引根數(shù)據(jù)塊 3.2.4 段頭數(shù)據(jù)塊第4章 優(yōu)化器 4.1 RB0基于規(guī)則的優(yōu)化器 4.2 CB0基于成本的優(yōu)化器第5章 執(zhí)行計(jì)劃 5.1 Cardinality(基數(shù)) 5.2 SQL的執(zhí)行計(jì)劃第6章 Hint 6.1 和優(yōu)化器相關(guān)的Hint 6.1.1 all_rows和flrst_rows(CB0) 6.1.2 RULE Hint 6.2 訪問路徑相關(guān)的Hint 6.2.1 RULE Hint 6.2.2 RULE Hint 6.2.3 RULE Hint 6.2.4 INDEX_DESC Hint 6.2.5 INDEX_COMBINE Hint 6.2.6 INDEX_FFS 6.2.7 INDEX_JOIN 6.2.8 INDEX_SSHint 6.3 表關(guān)聯(lián)順序的Hint 6.3.1 LEADING Hint 6.3.2 ORDERED Hint 6.4 表關(guān)聯(lián)操作的Hint 6.4.1 USE_HASH,USE_NL和USE_MERGE Hint 6.4.2 N0USEHASH Hint 6.4.3 N0_USEMERGE Hint 6.4.4 NO_USENL Hint 6.5 并行執(zhí)行相關(guān)的Hint 6.5.1 PARALLEL Hint 6.5.2 NO_PARALLEL Hint 6.6 其他方面的一些Hint 6.6.1 APPEND Hint 6.6.2 DYNAMIC_SAMPLING Hint 6.6.3 DRIVING_SITEHint 6.6.4 CACHE Hint 6.7 小結(jié)第7章 分析及動(dòng)態(tài)采樣 7.1 直方圖 7.2 DBMS-STATS包 7.3 動(dòng)態(tài)采樣 7.3.1 什么是動(dòng)態(tài)采樣 7.3.2 動(dòng)態(tài)采樣的級(jí)別 7.3.3 什么時(shí)候使用動(dòng)態(tài)采樣 7.4 小結(jié)第8章 并行執(zhí)行 8.1 并行和0LAP系統(tǒng) 8.2 并行處理的機(jī)制 8.3 讀懂一個(gè)并行處理的執(zhí)行計(jì)劃 8.4 一個(gè)很常見的并行執(zhí)行等待事件 8.5 并行執(zhí)行的適用范圍 8.5.1 并行查詢 8.5.2 并行DDL操作 8.5.3 并行DML操作 8.6 并行執(zhí)行的設(shè)定 8.6.1 并行相關(guān)的初始化參數(shù) 8.6.2 并行度的設(shè)定 8.7 直接加載 8.7.1 直接加載和REDO 8.7.2 直接加載和索引 8.7.3 直接加載和并行 8.7.4 直接加載和SQL*LOADER第9章 變量綁定 9.1 什么是變量綁定,為什么要做變量綁定 9.2 為什么說0LTP必須要求變量綁定而0LAP不應(yīng)該綁定變量 9.3 bind peaking第10章 SQL_TRACE和10046事件 10.1 SQL_TRACE 10.2 TKPROF工具 10.3 10046事件第11章 10053事件第12章 性能視圖和性能參數(shù) 12.1 性能視圖 12.1.1 V$SQL 12.1.2 V$SOLSHAREDCURSOR 12.1.3 v$session 12.1.4 V$sessstat 12.1.5 V$session_wait 12.2 性能參數(shù) 12.2.1 Cursor_sharing 12.2.2 DB_FILE_MULTIBLOCK_READ_COUNT 12.2.3 PGA_AGGREGATE_TARGET和SGA_TARGET 12.2.4 OPTIMIZER_DYNAMIC_SAMPLING第13章 性能報(bào)告 13.1 AWR性能報(bào)告 13.1.1 生成AWR性能報(bào)告 13.1.2 AWR性能報(bào)告分析 13.2 Statspack性能報(bào)告 13.2.1 Statspack的安裝 13.2.2 Statspack性能采集 13.3 ASH性能報(bào)告 13.3.1 生成ASH性能報(bào)告 13.3.2 ASH性能報(bào)告分析 13.4 小結(jié)附錄A 常見的等待事件后記 關(guān)于數(shù)據(jù)庫的學(xué)習(xí)方法
章節(jié)摘錄
插圖:比如是超過3000個(gè)并發(fā),通常這種情況下,我們會(huì)考慮采用一套軟件來搭建一個(gè)中間層,這就是通常講到的3層或是多層結(jié)構(gòu)。使用這一套軟件的目的是用來構(gòu)建一個(gè)緩沖池,在數(shù)據(jù)庫之前對(duì)大量的并發(fā)進(jìn)行處理,以便于每次只有少數(shù)的用戶連接到數(shù)據(jù)庫中,其他的用戶在緩沖池的隊(duì)列中等待。當(dāng)然,這只是一個(gè)動(dòng)態(tài)的過程,程序會(huì)盡可能快地去響應(yīng)所有用戶的請求,這種提前對(duì)大量并發(fā)用戶進(jìn)行處理的方式,會(huì)比讓這3000個(gè)用戶直接連接到數(shù)據(jù)庫中效果要好得多,同時(shí)數(shù)據(jù)庫也可以使用更多的資源來處理用戶的操作請求而不是去開3000個(gè)進(jìn)程來處理每個(gè)用戶的請求,這個(gè)開銷是非常大的。所以對(duì)于大量并發(fā)的系統(tǒng)來講,在數(shù)據(jù)庫之前建一個(gè)緩沖用戶請求的中間件服務(wù),顯得至關(guān)重要。同時(shí),很多這種中間件軟件還提供了負(fù)載均衡的功能。當(dāng)然,Oracle數(shù)據(jù)庫自身也提供了一種MTS的技術(shù),作用和這種中間件服務(wù)是一樣的,但目前看來,采用商業(yè)中間件軟件或是開發(fā)商自己開發(fā)一套中間件服務(wù)的做法更多一些(參見圖1.1 )。1.1.2 軟件代碼的編寫對(duì)數(shù)據(jù)庫性能的影響軟件代碼對(duì)數(shù)據(jù)庫的影響,通常指的是應(yīng)用程序代碼中對(duì)數(shù)據(jù)庫操作的代碼部分對(duì)數(shù)據(jù)庫產(chǎn)生的影響。具體來講就是SQL語句或是PL/SQL包。SQL語句造成的影響,一種是SQL,語句本身在邏輯上就是效率低下的,另一種就是SQL語句沒有綁定變量。性能低下的SQL語句,比如使用Hint不合適的外連接,謂詞的隱含轉(zhuǎn)換,優(yōu)化器的選擇等,會(huì)對(duì)SQL的執(zhí)行產(chǎn)生非常大的影響,特別是多表關(guān)聯(lián)的情況下,影響更是顯著。
后記
我想在這里聊一些數(shù)據(jù)庫方面的學(xué)習(xí)方法,算是對(duì)自己這些年學(xué)習(xí)的一個(gè)總結(jié),也可以給那些才進(jìn)入Oracle領(lǐng)域的朋友們提供一些借鑒。如果能夠使你有所收獲的話,我將非常高興。1、英語和技術(shù)的關(guān)系從2005年開始到現(xiàn)在,我只看過三本關(guān)于數(shù)據(jù)庫方面的印刷書籍,都是由一個(gè)人寫的,他叫Tom Kyte,業(yè)內(nèi)都叫他Tom,這三本書分別是:《Expert One-Oil-One Oracle》——《Oracle專家高級(jí)編程》《Expert_Oracle-Database Architecture》——《Oracle 9i&10g編程藝術(shù)深入數(shù)據(jù)庫體系結(jié)構(gòu)》《Effective Oracle by Design》——《Oracle高效設(shè)計(jì)》在買這三本書時(shí),多少帶有些許百目性,因?yàn)槌绨輹淖髡?,所以愛屋及馬地買了他寫的所有的書,實(shí)際上我用在看這三本書上的時(shí)間并不多,更多的時(shí)候我都泡在Asktom.Oracle.com這個(gè)網(wǎng)站上,就是這個(gè)網(wǎng)站,改變了我對(duì)問題的思考方式和學(xué)習(xí)方法。對(duì)于大多數(shù)中國人來說,特別是做技術(shù)的人,英語成為很多人的軟肋,這是一個(gè)無奈的局面。我甚至聽到很多人在說,為什么非要學(xué)習(xí)英語,自己國家的話說好就行了,言辭之間頗鄙視那些學(xué)英語的“崇洋派們”。本身這句話也還不錯(cuò),作為自己國家的公民,學(xué)好自己國家的語言,自然是再好不過的事情。但是很遺憾的是,我們說著自己的語言,卻在用著別人的東西。用別人的東西,卻拒絕學(xué)習(xí)別人的語言,這看起來不免有些矛盾。如果有一天世界上所有的商業(yè)軟件都來自于中國,那么我們再自豪地鄙視那些學(xué)習(xí)英語的人也不遲。所以我必須要說的是,如果你想把計(jì)算機(jī)的技術(shù)學(xué)深一些,請你務(wù)必要學(xué)好英語,至少要做到能夠熟練閱讀英文文檔的啞巴英語,如果再進(jìn)一步,你能夠使用英語和別人做書面的溝通(比如在論壇中或者E-mail中提出問題),那會(huì)更好一些。在Asktom.Oracle.com中有來自世界上很多國家的Oracle DBA或者開發(fā)人員在提出問題,我最初的時(shí)候只是瀏覽,后來嘗試著用自己蹩腳的英語向Fom提出了一個(gè)問題,當(dāng)收到Tom給出的回復(fù)后,當(dāng)時(shí)心情真是無比的激動(dòng),可喜之余不免又甚感悲哀,為什么一個(gè)簡單的提問,卻讓我歡喜至此呢?原因大概是,我們和他們之間溝通太少了,一個(gè)小小的問答,對(duì)我來說就像跨過一個(gè)巨大的鴻溝。之后的日子里,就慢慢習(xí)慣了這種學(xué)習(xí)方式,當(dāng)我有一個(gè)問題,在找遍了所有的Oracle官方文檔,Google和Metalink(一個(gè)Oracle公司的在線技術(shù)支持平臺(tái))未果之后,總是能夠在這里得到一個(gè)確切的回答,它已經(jīng)變成了我在技術(shù)上最后的依靠了。
媒體關(guān)注與評(píng)論
作者將自己多年的經(jīng)驗(yàn)用自己的語言和通俗的比喻給我們展示出來,帶給人的是另一種體驗(yàn),更親切和容易理解。除了常規(guī)的優(yōu)化所涉及的范疇及Oracle 10g開始推出的AWR和ASH之外,作者還引出了10053這樣的CBO相關(guān)的事件及不少的Hint方法,這些都將幫助我們非常深入地研究數(shù)據(jù)庫的SQL優(yōu)化問題。相信作者將親身經(jīng)歷的體驗(yàn)深入淺出地展示給我們,能給Oracle數(shù)據(jù)庫愛好者很好的幫助?! T春培當(dāng)我們在2004年開始編輯出版Oracle技術(shù)書籍時(shí),國內(nèi)原創(chuàng)的作品還十分有限,現(xiàn)在,這種情況完全改變了,越來越多的技術(shù)愛好者開始總結(jié)、寫作和分享,Oracle技術(shù)出版物開始豐富起來。在這個(gè)歷程中,ITPUB論壇一直推動(dòng)著Oracle數(shù)據(jù)庫技術(shù)的探討和應(yīng)用,作者alantany來自于ITPUB的一位技術(shù)專家,他將自己多年的實(shí)踐與經(jīng)驗(yàn)不斷總結(jié)出來,和我們大家分享,這種精神與堅(jiān)持值得尊敬,我樂于見到這樣的作品問世,也期待作者能夠堅(jiān)持不懈,不斷同我們分享他的知識(shí)與經(jīng)驗(yàn)。 ——蓋國強(qiáng),恩墨科技創(chuàng)始人,Oracle ACE總監(jiān)很欣喜地看到這幾年來國內(nèi)Oracle數(shù)據(jù)庫技術(shù)原創(chuàng)書籍的蓬勃發(fā)展,對(duì)每一位能夠坐下來并且將自己的經(jīng)-驗(yàn)寫出來的作者我都報(bào)以深深的敬意??梢哉f這本書作者擁有得天獨(dú)厚的工作環(huán)境,據(jù)我所知,他所參與管理的數(shù)據(jù)庫無論是數(shù)量還是大小還是性能要求上在國內(nèi)都可以排入前列,因此這是一本融合了真知灼見、可以指導(dǎo)實(shí)際工作Oracle數(shù)據(jù)庫性能優(yōu)化書籍。實(shí)際上我更希望讀者們可以從后記開始讀起,作者在后記中提及的所有觀點(diǎn)都與我不謀而合,我同樣相信無論是后記中這些觀點(diǎn)還是全書中記錄的技術(shù)知識(shí),對(duì)于所有從業(yè)人員都有極大幫助?! 獦I(yè)內(nèi)資深Oracle技術(shù)專家,Oracle ACE張樂奕據(jù)我所知作者是中國獨(dú)立撰定Oracle性能優(yōu)化書籍的第一人,該書幾乎涵概了Oracle性能優(yōu)化的所有主題,在國內(nèi)數(shù)據(jù)庫性能優(yōu)化領(lǐng)域的書籍中實(shí)屬罕見?! x永生,資深Oracle培訓(xùn)講師The fast and easy way to understanding the fundamentals of database performance tunning. If you retired of wading through huge technical manuals that drown you in jargon,making it difficult to decipher database performance issues,help has finally arrived.Simple enough for a beginner,but challenging enough for anadvanced user,this book is your shortcut to mastering database perfperformance tunning. ——Mike ITG(Investment technology group)資深軟件工程師
編輯推薦
《讓Oracle跑得更快:Oracle 10g性能分析與優(yōu)化思路》:ITPUB技術(shù)叢書
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載