-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
10/8 新書到! 10/1 新書到! 9/24 新書到! 9/18 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

SQL優化最佳實踐:構建高效率Oracle數據庫的方法與技巧

( 簡體 字)
作者:韓 鋒 著類別:1. -> 資料庫 -> SQL語言
譯者:
出版社:機械工業出版社SQL優化最佳實踐:構建高效率Oracle數據庫的方法與技巧 3dWoo書號: 44004
詢問書籍請說出此書號!

缺書
NT售價: 345

出版日:5/1/2016
頁數:311
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111534549
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么要寫這本書

我早年畢業后,曾長期從事ERP、電子政務類軟件的開發工作,作為一個數據庫的使用者,我接觸到了大量數據庫,如FoxPro、SQL Server、Oracle、Informix……在不斷的使用過程中,我對這一領域越來越感興趣,并最終選擇了數據庫這條路。曾經長期擔任DBA、數據庫架構師等職,參與了大大小小很多項目的數據庫設計、開發、優化工作,并在這一過程中積累了一些經驗。在多年的工作中,我發現數據庫領域存在一些現象。

現象一,開發人員將數據庫視為“黑盒子”。開發人員不關心、不重視,也不了解SQL語句的執行情況、數據庫的運行機理。甚至在很多O/R Mapping工具的輔助下,連基本的SQL語句也不需要手工編寫。固然,通過引入這些工具可以大大加快研發速度,但其帶來的弊端是,開發人員并不了解數據庫是如何完成這些請求并獲得數據的,優化更是無從談起。

現象二,對SQL質量重視程度不足。我在長期的工作中發現,絕大多數公司對SQL質量的重視程度嚴重不足。往往在項目的前期設計、代碼開發、測試等多個環節,都沒有DBA的參與。直到項目上線,甚至到出現性能問題時,才會有DBA介入處理。這種救火員的模式,往往效果不好,即使有了解決方案,其代價、成本也必然是巨大的。

現象三,開發人員想提高卻無從下手。有些開發人員認識到SQL語句質量的重要性,想要提高卻無從下手。一方面,他們本身不具備數據庫的專業知識;另一方面,SQL編程本身也有其特殊性,與其他常用開發語言有較大差異。正是這些因素,導致開發人員想要提高卻困難重重。

現象四,重運行維護,輕開發優化。數據庫的穩定運行、數據安全等是非常重要的,這也是DBA的核心職責之一。但對于開發優化,則往往存在重視程度不足的問題。我們經常會看到一個項目里,公司會花大筆費用購買昂貴的硬件、備份軟件等,卻不舍得購買與數據庫優化、SQL審計相關的軟件。此外,隨著自動化運維的逐步推廣,乃至數據庫云服務的逐步成熟,傳統意義的數據庫運維工作必然會逐步萎縮,取而代之的則是數據庫的設計、開發乃至整體架構工作逐步增多。這也是DBA未來發展的一個方向。

現象五,資料繁多,卻無從選擇。Oracle數據庫在國內流行多年,該領域的書籍也非常多,但涉及優化類的相對較少,特別是局限在SQL語句優化范疇的。近年來我也發現了幾本不錯的書籍,但普遍存在技術偏深、可操作性不強的問題。廣大數據庫開發的初學者或者有一定經驗但急需提高的讀者,不太適用。

正是因為存在上述種種現象,促使我有了將多年的經驗匯集成冊,編寫出版的想法。一方面是能夠幫助有相關需求的人,另一方面也是對自己多年工作的一個總結。最后,希望這本書能夠引領開發人員、DBA在SQL語句的編寫優化上更進一步。倘若這本書能夠幫助大家解決實際中遇到的問題,我將非常榮幸。

本書特色

本書從多角度闡述了SQL語句優化的方方面面,總體上可分為兩大部分。第一部分主要講解跟SQL優化相關的背景知識和基本原理;第二部分重點講述了優化器的各種優化手段。本書整體具有以下幾個特點:

書中內容由項目而生,以一線開發工程師的視角和言語展開。

注重實戰。幾乎所有的章節都配以代碼,讀者可在環境中直接編寫代碼并運行。大部分代碼都附有詳細的說明,便于讀者理解內容。

涵蓋了SQL語句的諸多方面,特別是第二部分,可作為工作手冊供大家優化時查閱使用。

讀者對象

本書適用于想要提高SQL語句運行效率乃至數據庫整體性能的所有人,包括架構師、DBA、開發人員、測試人員等。書中講解了Oracle數據庫的SQL語句優化,但除了個別Oracle自有的優化特性外,其核心思想也適用于其他關系型數據庫。書中沒有講解Oracle體系結構和SQL語言本身,這里假設大部分人已熟悉Oracle和SQL語言。具體來說,包括但不局限于下列人員:

Oracle數據庫開發人員;

數據庫架構師、數據庫管理員;

其他關系型數據庫的從業者;

對SQL語句優化感興趣的人員;

大專院校計算機相關專業的學生。

如何閱讀本書

本書分為四大部分:

第一部分為引入篇(第0∼1章)。

引言部分我結合多年的工作經驗,總結了進行SQL語句優化時可能會面臨的一些問題。讀者可以觀察是否在自己的身邊也存在類似的問題。后面還講述了一些常見的關于SQL優化的誤區,以方便讀者正確看待SQL語句優化。

第1章講述了我曾經處理過的幾個案例。通過這些活生生的案例,可以讓讀者更直觀感受到SQL語句優化的重要。同時在每個案例后面,我還針對案例出現的問題進行了總結。

第二部分為原理篇(第2∼9章)。

第2章講述了SQL語句優化的核心組件—優化器,以及優化的最基礎概念—成本。這部分非常重要,建議初學者仔細閱讀。

第3∼6章介紹了和優化相關的幾個重要概念:執行計劃、統計信息、SQL解析、游標、綁定變量。這部分都較為基礎,建議初學者根據情況選擇閱讀。

第7∼8章介紹了SQL語句的實體對象及物理上是如何存儲的。這部分對于數據庫結構設計有較大幫助。此外,在對SQL語句進行優化時,也需要考慮相關對象的情況,因為優化措施可能會影響該對象的其他語句,需要統籌考慮。

第9章介紹了Oracle專有的一些SQL語句。有時使用這些語句,可以達到意想不到的效果。如不考慮以后有數據庫平臺遷移的問題,可以充分利用這些語句。

原理篇是我們是邁入實戰篇的基礎,它幾乎覆蓋了SQL優化相關的所有原理知識。通過對這些內容的學習,可以為后面的優化部分打下良好的基礎。如果你已經擁有相關知識,可以直接進入實戰篇。

第三部分為實戰篇(第10∼16章)。它是本書的重點。

第10章介紹了一個重要的優化手段—查詢轉換。這部分相對來說比較難,相關資料說明較少,可作為重點來看。

第11章介紹了數據對象的訪問方式。這部分也非常基礎,應重點來看。

第12∼16章介紹了多種操作及常見的優化手段,包括表關聯、半/反連接、子查詢、排序、并行等。這部分讀者可根據實際需要進行有重點的閱讀。

實戰篇是本書的重點,這部分覆蓋了常見優化的多個方面。讀者可將這部分作為參考資料,當需要時反復閱讀。這部分還包含了大量示例代碼,讀者可以通過實踐反復體會。

本書還提供了讀者可能感興趣的拓展知識,放在附錄。

附錄介紹了前面各章節提到的數據庫參數、數據字典、等待事件、提示等內容。此外,還包括如何構造樣例數據,方便讀者進行實際操作。

以上是本書各個章節的安排情況和寫作思路,希望有助于讀者閱讀。

勘誤和支持

由于筆者水平有限,加之編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。大家可以通過郵箱hanfeng7766@sohu.com與我取得聯系。你可以將書中的錯誤和問題反饋給我,我將盡量在線上為你提供最滿意的解答。期待能夠得到你的真摯反饋。

致謝

感謝每一位幫助過我的老師、同事和領導,是你們讓我有了學習和總結的機會。感謝宜信公司的各級領導、同事對我的支持和鼓勵,你們的支持充分體現了宜信開放、分享的企業文化。此外,也要感謝我的老東家—當當網,在那里我積累了豐富的經驗,并堅定了完成本書的信心。

感謝機械工業出版社華章公司的編輯孫海亮,在這一年多的時間中始終支持我的寫作。第一次著書寫作,過程漫長而艱辛,正是你的鼓勵和幫助引導我順利完成全部書稿。

感謝遠在哈爾濱的爸爸、媽媽和姐姐,是你們在艱苦環境下將我培養成人,并時時刻刻為我灌輸愛的力量!感謝我的岳父母,是你們承擔了瑣碎的家務,讓我能安心寫作。最后,也是最重要的,一如既往地感謝陪伴我左右的妻子和孩子,你們的愛和支持是本書得以完成的最大動力。

謹以本書獻給我最親愛的家人和朋友,以及正在為自我實現而奮斗的、充滿朝氣的IT工程師們!



韓 鋒
內容簡介:

Oracle數據庫使用十分廣泛,長期盤踞數據庫使用排行榜首位。而SQL語句作為訪問數據的接口語言,其運行效率的高低直接決定了數據庫的整體性能。SQL語句優化本身覆蓋面較廣,涉及數據庫領域的諸多方面,其中優化器部分尤為復雜。
本書作者根據多年的工作經驗,圍繞SQL優化這一核心主題,多角度闡述了SQL語句優化的各個方面。內容兼顧技術的深度和廣度,結合大量案例,方便讀者更好地了解SQL語句優化的本質。本書特別適合廣大從事數據庫開發工作的初中級讀者閱讀,可幫助這部分讀者深入學習與SQL優化相關的原理方法和技巧,為以后的工作和進一步提高打下良好的基礎。
本書既是一本不錯的學習資料,也可作為案頭必備的手冊,供讀者隨時翻閱。
目錄:

前 言

第一篇 引入篇

第0章 引言2

第1章 與SQL優化相關的幾個案例4

案例1 一條SQL引發的血案4

案例2 糟糕的結構設計帶來的問題6

案例3 規范SQL寫法好處多9

案例4 “月底難過”11

案例5 COUNT(*)到底能有多快13

案例6 “抽絲剝繭”找出問題所在17

第二篇 原理篇

第2章 優化器與成本22

2.1 優化器22

2.1.1 基于規則的優化器23

2.1.2 基于成本的優化器25

2.1.3 對比兩種優化器26

2.1.4 優化器相關參數27

2.1.5 優化器相關Hint30

2.2 成本35

2.2.1 基本概念35

2.2.2 計算公式36

2.2.3 計算示例36

第3章 執行計劃40

3.1 概述40

3.1.1 什么是執行計劃40

3.1.2 庫執行計劃存儲方式42

3.2 解讀執行計劃43

3.2.1 執行順序43

3.2.2 訪問路徑45

3.3 執行計劃操作45

3.3.1 查看執行計劃45

3.3.2 固定執行計劃72

3.3.3 修改執行計劃80

第4章 統計信息84

4.1 統計信息分類84

4.1.1 系統統計信息84

4.1.2 對象統計信息87

4.1.3 數據字典統計信息109

4.1.4 內部對象統計信息109

4.2 統計信息操作109

4.2.1 系統統計信息110

4.2.2 對象統計信息111

4.2.3 數據字典統計信息115

4.2.4 內部對象統計信息115

第5章 SQL解析與游標116

5.1 解析步驟116

5.2 解析過程117

5.3 游標示例119

第6章 綁定變量122

6.1 使用方法122

6.2 綁定變量與解析124

6.3 游標共享129

第7章 SQL優化相關對象131

7.1 表131

7.2 字段137

7.3 索引140

7.4 視圖148

7.5 函數149

7.6 數據鏈(DB_LINK)150

第8章 SQL優化相關存儲結構153

8.1 表空間153

8.2 段154

8.3 區155

8.4 塊156

第9章 特有SQL160

9.1 MERGE160

9.2 INSERT ALL162

9.3 WITH162

9.4 CONNECT BY /START WITH163

第三篇 實戰篇

第10章 查詢轉換166

10.1 查詢轉換的分類及說明166

10.2 查詢轉換—子查詢類168

10.3 查詢轉換—視圖類174

10.4 查詢轉換—謂詞類178

10.5 查詢轉換—消除類180

10.6 查詢轉換—其他181

第11章 訪問路徑189

11.1 表訪問路徑189

11.1.1 全表掃描189

11.1.2 ROWID掃描193

11.1.3 采樣掃描194

11.2 B樹索引訪問路徑195

11.3 位圖索引訪問路徑205

11.4 其他訪問路徑210

第12章 表間關聯215

12.1 關聯關系215

12.2 表關聯實現方法218

12.3 嵌套循環連接220

12.4 排序合并連接226

12.5 哈希連接232

12.6 其他連接方式238

第13章 半連接與反連接243

13.1 半連接243

13.2 反連接246

第14章 排序250

14.1 引發排序的操作250

14.2 避免和減少排序251

14.2.1 優化原則及基本方法251

14.2.2 避免排序的示例252

14.3 排序過程及內存使用255

14.4 執行計劃中的“Sort”258

第15章 子查詢262

15.1 處理方式262

15.2 子查詢分類263

15.2.1 按照語法分類263

15.2.2 按照謂詞分類263

15.2.3 示例264

15.3 子查詢優化266

15.4 子查詢特殊問題272

15.4.1 空值問題272

15.4.2 OR問題274

15.4.3 [NOT] IN/EXISTS問題275

第16章 并行276

16.1 并行操作276

16.1.1 并行查詢277

16.1.2 并行DML280

16.1.3 并行DDL283

16.2 并行級別286

16.3 并行原理286

16.3.1 從屬進程286

16.3.2 粒度287

附錄A 常用技巧290

附錄B SQL優化參數295

附錄C SQL優化數據字典298

附錄D SQL優化等待事件300

附錄E SQL優化提示303
序: