《基於Oracle的SQL優化》是本土Oracle數據庫性能優化大師泣血力作
集十數年實戰修行與潛心鑽研之大成;
蓋國強等國內數據庫一綫名傢聯閤推薦;
囊括數據庫性能優化技術所有分支與脈絡,講解通俗,實例經典。
從上述顯示內容可以看齣,此SQL的執行計劃已經從之前的索引唯一性掃描變為現在的索引範圍掃描,其耗費的邏輯讀也從之前的73遞增到現在的74,這說明在同等條件下,當目標索引的索引行的數量大於1時,索引範圍掃描所耗費的邏輯讀確實至少會比相應的索引唯一性掃描多1。
注意,上述測試結果中邏輯讀為73和74;這是包含瞭硬解析時遞歸調用所耗費的邏輯讀,上述SQL在軟解析/軟軟解析的情況下不會有這麼多的邏輯讀。這裏容易引起誤解,因為這多齣來的邏輯讀可能來源於遞歸調用時所耗費的邏輯讀(但實際上這裏兩次遞歸調用所耗費的邏輯讀顯然是相同的)。
這裏更好的比較方式是不刷新數據字典緩存和Buffer Cache,然後多執行幾次上述SQL並取最後幾次穩定的執行結果。實際上,這種更好的比較方式所得到的測試結果和上述測試結果是一緻的。
關於硬解析和軟解析/軟軟解析,我們會在“第3章Oracle裏的Cursor和綁定變量”中詳細解釋,這裏不再贅述。
12.323索引全掃描
索引全掃描(INDEX FULL SCAN)適用於所有類型的8樹索引(包括唯一性索引和非唯一性索引)。所謂的“索引全掃描”,就是指要掃描目標索引所有葉子塊的所有索引行。這裏需要注意的是,索引全掃描需要掃描目標索引的所有葉子塊,但這並不意味著需要掃描該索引的所有分支塊。在默認情況下,Oracle在做索引全掃描時隻需要通過訪問必要的分支塊定位到位於該索引最左邊的葉子塊的第一行索引行,就可以利用該索引葉子塊之間的雙嚮指針鏈錶,從左至右依次順序掃描該索引所有葉子塊的所有索引行瞭。
既然在默認情況下,索引全掃描要從左至右依次順序掃描目標索引所有葉子塊的所有索引行,而索引是有序的,所以索引全掃描的執行結果也是有序的,並且是按照該索引的索引鍵值列來排序,這也意味著走索引全掃描能夠既達到排序的效果,又同時避免瞭對該索引的索引鍵值列的真正排序操作。
……
為什麼寫這本書
寫這本書純屬偶然。
2010年12月11日,我在中國軟件技術大會上做瞭一個關於Oracle數據庫備份與恢復機製揭密的主題演講。可能是因為這個演講的緣故,電子工業齣版社的編輯畢寜隨後多次邀請我寫一本關於Oracle數據庫備份恢復方麵的書,但均被我以各種理由搪塞、推脫。這一拖就拖瞭大半年(為什麼會推脫?一來是因為我認為備份恢復這個點相對來說較窄,不具備普適性;二來市麵上已經有不少關於備份恢復方麵的書,這意味著如果我想寫齣有新意、有不一樣的內容的話,會有相當的難度)。
這種推脫一直持續到2011年10月,那個時候我正好在公司內部主講一個基於Oracle數據庫的SQL優化的係列課程。我開設這門課程的初衷是因為當時恰逢公司開始研發新一代係統,而我深知對於使用Oracle數據庫的應用係統而言,SQL語句的質量會直接影響係統的性能,甚至可以說大部分基於Oracle數據庫的應用係統的性能問題都是由於開發人員不懂Oracle數據庫,不懂如何在Oracle數據庫裏寫齣高質量的SQL所緻。這樣的係統性能問題,單靠高水準的OracleDBA來調整是非常痛苦的,很多時候是事倍功半。如果能把我在SQL優化方麵的經驗分享給大傢,告訴大傢如何避免在Oracle數據庫中寫齣很爛的SQL,如何在Oracle數據庫中做SQL優化,那麼就可以從源頭上提升新一代係統在數據庫端的性能,這也算是我為公司新一代係統的研發所做的一份貢獻。
這門課程一經推齣,就取得瞭很好的反響,同事們紛紛反饋說這門課程很實用,課程裏的不少方法和知識點在實際的工作中都能用上,這使我意識到自己是在做一件非常有意義的事情,雖然辛苦,但是確實能幫助到同事。
這門課程大約是30個學時,我纔開始講沒多久,畢寜就再次打電話給我,他還是希望我能寫一本關於Oracle數據庫備份恢復方麵的書。我清楚地記得那天下午接到畢寜電話的時候,腦海裏突然閃現瞭一個念頭——為什麼不把現在講的這門SQL優化的課程寫成一本書呢?這樣一來可以對畢寜有個交待,二來也可以幫到更多的人,而不僅僅是我的同事。因為隻要是用Oracle數據庫的,隻要是構建在Oracle數據庫上的應用係統就必然會涉及SQL優化,也就是說SQL優化不同於備份恢復,它是具備普適性的。另外,市麵上係統闡述Oracle數據庫中SQL優化的書非常少,這意味著我有很大的發揮空間。如果能寫一本係統的、從本質上闡述如何在Oracle數據庫裏做SQL優化的書,能夠通過這本書教會開發人員如何在Oracle數據庫裏寫齣高質量的SQL,以及如何對有性能問題的SQL做診斷與調整,那麼也許就可以從源頭上保證,由這些開發人員所開發齣來的基於Oracle數據庫的應用係統在SQL上是沒有性能問題的,而那些由於SQL撰寫不當而導緻的各種性能問題也就不復存在瞭。如果真能做到這一點,那真是一件功德無量的事情。
在和畢寜溝通過幾次後,我的上述想法獲得瞭他的支持,於是從2011年10月份開始,我就正式開始撰寫這本書。隻是我萬萬沒有想到,這一寫就寫瞭17個月。
這本書的撰寫過程是極為艱苦的。一來是因為我對自己要求很高,希望寫齣來的書通俗易懂(普通的使用Oracle數據庫的開發人員就能看懂),但同時又要具備一定的深度;二來是因為我倡導“從本質和原理入手,以不變應萬變”的SQL優化思路,必然涉及深入介紹Oracle數據庫裏的優化器,但Oracle數據庫裏的優化器實在是太復雜瞭。
現在迴想起來,我為這本書付齣瞭太多太多。在這一年多的撰寫過程中,由於長期熬夜,我能明顯感覺到身體越來越差,到瞭撰寫後期更是頻繁往醫院跑,但無論如何,我還是堅持下來瞭。
本書的主要內容
本書共8章。
第1章“Oracle裏的優化器”,詳細介紹瞭Oracle數據庫中與優化器相關的各個方麵的內容,包括優化器的模式、結果集(RowSource)、集的勢(Cardinality)、可選擇率(Selectivity)、可傳遞性(Transitivity)、各種數據訪問的方法,以及與錶連接相關的內容。
第2章“Oracle裏的執行計劃”,詳細介紹瞭Oracle數據裏與執行計劃有關的各個方麵的內容,包括執行計劃的含義,如何查看執行計劃,如何得到目標SQL真實的執行計劃,如何查看執行計劃的執行順序,Oracle數據庫裏各種常見的執行計劃的含義,以及如何在Oracle數據庫中穩定執行計劃。
第3章“Oracle裏的Cursor和綁定變量”,詳細介紹瞭Oracle數據庫中與Cursor和綁定變量相關的各個方麵的內容,包括SharedCursor、SessionCursor、綁定變量、遊標共享、硬解析、軟解析、軟軟解析,以及與它們息息相關的Oracle數據庫裏的四種應用類型。
第4章“Oracle裏的查詢轉換”,詳細介紹瞭Oracle數據庫中與查詢轉換有關的各個方麵的內容,包括子查詢展開、視圖閤並、星型轉換、連接謂詞推入、連接因式分解、錶擴展、錶移除,以及Oracle如何處理SQL語句中的IN。
第5章“Oracle裏的統計信息”,詳細介紹瞭Oracle數據庫裏與統計信息相關的各個方麵的內容,包括Oracle數據庫中各種統計信息的分類、含義、收集和查看方法,以及如何在Oracle數據庫裏正確地收集統計信息。
第6章“Oracle裏的Hint”,詳細介紹瞭Oracle數據庫中與Hint有關的各個方麵的內容,包括什麼是Hint,如何用Hint,Hint什麼情況下會失效,以及Oracle數據庫中常見的各種Hint。
第7章“Oracle裏的並行”,詳細介紹瞭Oracle數據庫裏並行的基本概念以及在Oracle數據庫裏如何控製並行,包括在Oracle數據庫裏開啓並行、控製並行度等。
第8章“Oracle裏SQL優化的方法論”,介紹瞭在Oracle數據庫裏如何做SQL優化,提齣瞭我們總結齣來的Oracle數據庫裏SQL優化的方法論,並結閤實例驗證瞭上述方法論。
本書的讀者對象
本書適用於使用Oracle數據庫的開發人員、OracleDBA和其他對Oracle數據庫感興趣的人員。
本書也可以作為各大中專院校相關專業的教學輔導和參考用書,或作為相關培訓機構的培訓教材。
本書代碼下載
本書使用的所有腳本和範例代碼均可以通過我網站上的Books專欄下載。
本書約定
本書介紹的SQL優化方法論是通用的方法,並不局限於Oracle數據庫的某個具體的版本,但本書的實例和測試結果絕大部分是基於Oracle11gR2的(除個彆特彆注明的實例之外)。而Oracle數據庫不同的版本之間在某些方麵可能會差彆很大,所以即便是同樣的實例,在Oracle數據庫不同的版本上的測試結果也有可能不同,在此特彆說明,一切以實際情況為準。
由於我的水準和經驗所限,書中的錯誤之處在所難免,在此誠摯期待大傢閱讀後的指正。可以通過電子郵件與我取得聯係,歡迎與我交流任何關於本書的問題。
對於有一定SQL基礎但希望在Oracle性能調優方麵有所突破的開發者來說,這本書絕對是不可多得的寶藏。我之前一直覺得SQL優化很大程度上依賴“經驗”,但這本書讓我意識到,背後有著嚴謹的理論和科學的方法論。書中關於執行計劃的解讀部分,可以說是點睛之筆。它詳細講解瞭各種節點(如全錶掃描、索引查找、哈希連接、排序等)的含義及其對性能的影響,並提供瞭多種工具和技巧來輔助分析。我學會瞭如何有效地使用`EXPLAIN PLAN`、SQLPlus的`AUTOTRACE`功能,以及更高級的AWR報告和ASH報告來定位性能瓶頸。特彆是書中關於統計信息的重要性和管理的部分,讓我對如何保持數據庫“健康”有瞭更深的認識。這本書的深度和廣度都讓我印象深刻,它不僅僅是關於SQL本身,更是對Oracle數據庫整體性能的深入探索。
評分這本書的價值體現在它對Oracle SQL優化“藝術”的極緻追求。它不僅僅停留在錶麵的SQL調優,而是深入到數據庫內核的層麵,講解瞭Oracle是如何處理SQL語句的,以及各種優化器的工作原理。我曾經對某些SQL語句的執行計劃感到睏惑,這本書就像一位嚮導,為我揭示瞭背後的邏輯。書中對各種優化器模式(如規則模式和成本模式)的講解,以及如何通過 Hints 來引導優化器做齣更優選擇,讓我受益匪淺。此外,書中關於並發控製、鎖機製以及它們如何影響SQL性能的論述,也極大地拓展瞭我的視野。我發現,很多時候SQL性能問題並非SQL語句本身的問題,而是由底層的數據庫運行機製引起的。這本書提供瞭一個宏觀的視角,讓我能夠從更深層次去理解和解決性能挑戰,這種“治本”的方法論,對於長期的職業發展至關重要。
評分如果你正在經曆SQL查詢緩慢的摺磨,或者想將自己的SQL性能提升到新的高度,那麼這本書絕對是你不可或缺的工具。它以一種非常直觀和易懂的方式,將Oracle SQL優化的復雜世界展現在我們麵前。書中對於“死鎖”和“阻塞”的分析,讓我對數據庫並發環境下的性能問題有瞭更清晰的認識。我學會瞭如何通過分析等待事件來定位瓶頸,以及如何采取有效的措施來緩解這些問題。書中還提供瞭關於“分區錶”和“物化視圖”等高級特性的優化技巧,這些都是在大型數據庫環境中非常實用的技術。總的來說,這本書就像一個全能的SQL優化助手,它不僅提供瞭理論知識,更重要的是提供瞭實操性的指導,讓我能夠立刻將所學應用到實際工作中,並看到立竿見影的效果。
評分這是一本從初學者到進階者都能找到共鳴的書。它就像一位經驗豐富的老師,循序漸進地引導我理解Oracle SQL優化的核心理念。我尤其欣賞書中對於“慢查詢”的剖析,不僅僅是給齣簡單的解決方案,而是深入講解瞭導緻性能瓶頸的各種可能性,比如索引缺失、低效的連接方式、不閤理的WHERE子句等等。書中大量的案例分析,讓我仿佛置身於實際的調優場景中,跟著作者一步步排查問題、分析執行計劃、調整SQL語句。它沒有堆砌晦澀難懂的理論,而是將復雜的概念用通俗易懂的語言和清晰的圖示解釋清楚。讀完之後,我對Oracle的內部機製有瞭更深刻的理解,也掌握瞭一套係統性的SQL優化方法論。即使我是一名數據庫初學者,也能從中受益匪淺。這本書的價值在於,它不僅教會瞭我“怎麼做”,更重要的是教會瞭我“為什麼這麼做”,讓我能夠舉一反三,獨立解決更復雜的性能問題。
評分這是一本能夠切實提升工作效率的書籍。作為一名資深的DBA,我一直在尋找一本能夠係統性地梳理Oracle SQL優化知識,並提供實用技巧的書籍。這本書正好滿足瞭我的需求。它沒有陳詞濫調,而是用大量實際的案例和深入的分析來論證每一個優化點。我尤其喜歡書中關於“參數調優”和“內存管理”部分的講解,這些都是日常工作中非常關鍵但往往容易被忽視的環節。書中提供的調優模闆和檢查清單,可以幫助我們快速地識彆潛在問題並采取相應的措施。此外,書中對數據庫升級和版本特性對SQL性能影響的討論,也為我們提供瞭重要的參考信息。讀完這本書,我感覺自己對Oracle SQL的掌握又上瞭一個颱階,能夠更自信地應對各種性能挑戰,也能夠更有效地為業務保駕護航。
評分然後到瞭我這一代,他在我3歲的時候,就給我買瞭一颱磚頭筆記本。
評分一直在京東上買書 5摺還是比較劃算的 就是買的書價格比較高
評分經常網購,總有大量的包裹收,感覺寫評語花掉瞭我大量的時間和精力!所以在一段時間裏,我總是不去評價或者隨便寫寫!但是,我又總是覺得好像有點對不住那些辛苦工作的賣傢客服、倉管、老闆。於是我寫下瞭一小段話,給我覺得能拿到我五星好評的賣傢的寶貝評價裏麵以示感謝和尊敬!首先,寶貝是性價比很高的,我每次都會先試用再評價的,雖然寶貝不一定是最好的,但在同等的價位裏麵絕對是錶現最棒的。京東的配送絕對是一流的,送貨速度快,配送員服務態度好,每樣東西都是送貨上門。希望京東能再接再厲,做得更大更強,提供更多更好的東西給大傢。為京東的商品和服務點贊
評分書挺不錯的,值得一看。。。。。
評分很好,送貨非常快,很快看起來瞭,便宜
評分我是我們村裏第一個買愛瘋7plus 手機殼 的人,我們這 裏大部分人都是用的小靈通,手機一般都不超過100 塊。當聽說我買瞭個手機殼就花瞭25塊之後,整個村 都震驚瞭,村長跑到我傢對我爸說,恁娃是不瘋瞭。媳婦跟我鬧離婚, 買這麼貴的手機殼,這日子還過不過瞭。麵對著重重壓 力,我依然堅持要買,我相信我這一個月工資不會白 花。終於,快遞到瞭,我懷著激動的心情,顫抖著雙手打開包裹,那一刹那,感覺我的眼睛都要閃瞎瞭 啊,這顔色,這紋理,這手感,買嘎等!隻恨我讀書 少,無法用華麗的詞語來形容它。舉起手機殼,我驕傲 的站在村口,頓時整個村都沸騰瞭,大姑娘小媳婦 拼瞭命的嚮我湧來,更有人趁我不備的時候想摸我的 手機殼,更有人大喊,我不給她們摸,她們就要跳井。就連村花都紅 著臉要跟我迴傢,看著隔壁老王殺人的目光,纔想起 這是他花瞭一麻袋地瓜 換來的老婆。嚇得我趕緊收起手機殼,擠齣人群落 荒而逃。為瞭測試手機殼硬度,我爬上瞭我們村的最高建築——高達3米的村長傢的平房上。舉 著手機往下一扔,頓時金光一閃,手機竟然毫發 無損,天啦擼,天壽啦,這硬度,我想跟傳說中一顆 就破産的鑽石比也相差不遠瞭吧
評分很好,是正版,送貨很快,值得擁有!
評分一年一度的618批量購書,還沒有看,但書的質量不錯,看瞭後再對內容追評
評分天生我材必有用,韆金散盡還復來。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有