收穫,不止SQL優化——抓住SQL的本質 收获,不止SQL优化:抓住SQL的本质

梁敬彬, 梁敬弘

  • 出版商: 電子工業出版社
  • 出版日期: 2017-06-01
  • 定價: CNY $88.00
  • 售價: $528
  • 貴賓價: 9.5$502
  • 語言: 簡體中文
  • 頁數: 462
  • 裝訂: 平裝
  • ISBN: 7121314363
  • ISBN-13: 9787121314360

立即出貨

買這商品的人也買了...

產品描述

有人就有江湖,有江湖就有IT系統,有IT系統就有數據庫,有數據庫就有SQL,SQL應用可一字概括:“廣”。加之其簡單易學,SQL實現也可一字概括:“樂”。然而,SQL雖然實現簡單可樂,卻極易引發性能問題,此時廣大SQL使用人員可要“愁”就一個字,心碎無數次了。 緣何有性能問題?原因也一字概括:“量”。當系統數據量、並發訪問量上去後,不良SQL就會拖跨了整個系統,我們甚至找不出哪些SQL影響了系統。即便找到也不知如何動手優化。此時的心情也可以一字概括:“懵”。現在本書開始帶你拋除煩惱,走進優化的可樂世界了!首先教你SQL整體優化、快速優化實施、如何讀懂執行計劃、如何左右執行計劃這四大必殺招。整這些乾嘛呢?答案是,傳授一個先整體後局部的宏觀解決思路,走進“道”的世界。接下來帶領大家飛翔在“術”天空。教你體系結構、邏輯結構、表設計、索引設計、表連接這五大要領。這麽多套路,這又是要乾嘛?別急,這是教你如何解決問題,準確的說,是如何不改寫即完成SQL優化。隨後本書指引大家學會等價改寫、過程包優化、高級SQL、分析函數、需求優化這些相關的五大神功。有點頭暈,能否少一點套路?淡定,這還是“術”的範疇,依然是教你如何解決問題,只不過這次是如何改寫SQL完成優化。最後一個章節沒套路了,其中跟隨你多年的錯誤認識是否讓你懷疑人生,其中讓SQL跑的更慢的觀點,是否讓你三觀盡毀?再多一點真誠吧,本書提供掃二維碼輔助學習,是不是心被筆者給暖到了。讀完全書,來,合上書本,閉上眼睛,深呼吸,用心來感受SQL優化的世界。一個字:“爽”!

作者簡介

梁敬彬,福富研究院副理事長及公司特級專家、福富公司四星級內訓師及福州大學計算機系研究生企業導師、ITPUB版主及社區專家、Oracle東南用戶組創始人及福建軟協高級顧問。

十餘年數據庫設計調優及培訓相關經驗,在業內有著廣泛的影響力。曾多次應邀參加中國、全球數據庫技術大會,並任演講嘉賓。著有多本暢銷數據庫技術書籍,其代表作《收穫,不止Oracle》已成為數據庫領域有口皆碑的經典書籍。

新書《收穫,不止SQL優化》即將開創一個新的里程碑。

目錄大綱

第1章全局在胸——用工具對SQL整體優化1 
1.1都有哪些性能工具1 
1.1.1不同調優場景分析2 
1.1.2不同場景對應工具2 
1.2整體性能工具的要點4 
1.2.1五大性能報表的獲取5 
1.2.2五大報表關注的要點10 
1.3案例的分享與交流18 
1.3.1和並行等待有關的案例18 
1.3.2和熱塊競爭有關的案例19 
1.3.3和日誌等待有關的案例20 
1.3.4新疆某系統的前台優化20 
1.3.5浙江某系統的調優案例21 
1.4本章總結延伸與習題21 
1.4.1總結延伸21 
1.4.2習題訓練23 

第2章風馳電掣——有效縮短SQL優化過程24 
2.1 SQL調優時間都去哪兒了25 
2.1.1不善於批處理頻頻忙交互25 
2.1.2無法抓住主要矛盾瞎折騰25 
2.1.3未能明確需求目標白費勁26 
2.1.4沒有分析操作難度亂調優26 
2.2如何縮短SQL調優時間27 
2.2.1先獲取有助調優的數據庫整體信息27 
2.2.2快速獲取SQL運行台前信息27 
2.2.3快速拿到SQL關聯幕後信息28 
2.3從案例 快速SQL調優29 
2.3.1獲取數據庫整體的運行情況29 
2.3.2獲取SQL的各種詳細信息29 
2.4本章總結延伸與習題32 
2.4.1總結延伸32 
2.4.2習題訓練33 

第3章循規蹈矩— —如何讀懂SQL執行計劃34 
3.1執行計劃分析概述35 
3.1.1 SQL執行計劃是什麼35 
3.1.2統計信息用來做什麼36 
3.1.3數據庫統計信息的收集37 
3.1.4數據庫的動態採樣37 
3.1.5獲取執行計劃的方法(6種武器) 40 
3.2讀懂執行計劃的關鍵48 
3.2.1解釋經典執行計劃方法49 
3.2.2總結說明55 
3.3從案例辨別低效SQL 55 
3.3.1從執行計劃讀出效率56 
3.3.2執行計劃效率總結60 
3.4本章習題、總結與延伸60 

第4章運籌帷幄——左右SQL執行計劃妙招62 
4.1控制執行計劃的方法綜述63 
4.1.1控制執行計劃的意義63 
4.1.2控制執行計劃的思路64 
4.2從案例探索其方法及意義65 
4.2.1 HINT的思路65 
4.2.2非HINT方式的執行計劃改變72 
4.2.3執行計劃的固定100 
4.3本 習題、總結與延伸102 

第5章且慢,感受體系結構讓SQL飛103 
5.1體系結構知識104 
5.1.1組成104 
5.1.2原理104 
5.1.3體會105 
5.2體係與SQL優化106 
5.2.1與共享池相關107 
5.2.2數據緩衝相關111 
5.2.3日誌歸檔相關116 
5.3擴展優化案例118 
5.3.1與共享池相關118 
5.3.2數據緩衝相關122 
5.3.3日誌歸檔相關126 
5.4本章習題、總結與延伸130 

第6章且慢,體驗邏輯結構讓SQL飛132 
6.1邏輯結構132 
6.2體系細節與SQL優化133 
6.2.1 Block 133 
6.2.2 Segment與extent 137 
6.2.3 Tablespace 139 
6.2.4 rowid 139 
6.3相關優化案例分析140 
6.3.1塊的相關案例141 
6.3.2段的相關案例144 
6.3.3表空間的案例148 
6.3.4 rowid 151 
6.4本章習題、總結與延伸153 

第7章且慢,探尋表的設計讓SQL飛154 
7.1表設計154 
7.1.1表的設計155 
7.1.2其他補充155 
7.2表設計與SQL優化156 
7.2.1表的設計156 
7.2.2其他補充179 
7.3相關優化案例分析184 
7.3.1分區表相關案例185 
7.3.2全局臨時表案例190 
7.3.3監控異常的表設計195 
7.3.4表設計優化相關案例總結199 
7.4本章習題、總結與延伸199 

第8章且慢,學習索引如何讓SQL飛200 
8.1索引知識要點概述201 
8.1.1索引結構的推理201 
8.1.2索引特性的提煉204 
8.2索引的SQL優化206 
8.2.1經典三大特性207 
8.2.2組合索引選用217 
8.2.3索引掃描類型的分類與構造219 
8.3索引相關優化案例225 
8.3.1三大特性的相關案例225 
8.3.2組合索引的經典案例231 
8.4本章習題、總結與延伸234 

第9章且慢,弄清索引之阻礙讓SQL飛235 
9.1索引的不足之處235 
9.1.1索引的各種開銷236 
9.1.2索引使用失效236 
9.2感受美好索引另一面237 
9.2.1索引各種開銷237 
9.2.2索引使用失效243 
9.2.3索引取捨控制246 
9.3從案例看索引各種恨248 
9.3.1索引的開銷248 
9.3.2索引去哪兒了253 
9.3.3索引的取捨267 
9.4本章習題、總結與延伸269 

第10章且慢,其他索引應 讓SQL飛270 
10.1其他索引的總體概述270 
10.1.1位圖索引271 
10.1.2函數索引271 
10.1.3反向鍵索引272 
10.1.4全文索引272 
10.2走進其他索引的世界272 
10.2.1位圖索引273 
10.2.2函數索引278 
10.2.3反向鍵索引282 
10.2.4全文索引282 
10.3其他索引的相關案例285 
10.3.1位圖索引286 
10.3.2函數索引288 
10.3.3反向鍵索引297 
10.3.4全文索引299 
10.4本章習題、總結與延伸300 

第11章且慢,表連接的秘密讓SQL飛302 
11.1三大經典表連接概要說明302 
11.2各類型表連接的知識要點303 
11.2.1從表的訪問次數探索304 
11.2.2表驅動順序與性能308 
11.2.3表連接是否有排序311 
11.2.4各連接的使用限制314 
11.2.5三大表連接的特性總結317 
11.3從案例學表連接優化要點(三刀三斧四式走天下) 317 
11.3.1一次Nested Loops Join的優化全過程318 
11.3.2一次Hash Join的優化全過程320 
11.3.3一次Merge Sort Join的優化全過程324 
11.3. 4一次 計信息收集不准確引發的NL性能瓶頸329 
11.4本章習題、總結與延伸332 

第12章動手,經典等價改寫讓SQL飛333 
12.1設法減少訪問路徑333 
12.1.1 Case When改造334 
12.1.2 Rownum分頁改寫337 
12.1.3 Hint直接路徑改造338 
12.1.4只取你所需的列339 
12.1.5避免或者減少遞歸調用341 
12.1.6 ROWID優化應用347 
12.2設法避免外因影響350 
12.2.1 Hint改寫確保執行計劃正確350 
12.2.2避免子查詢的錯誤執行計劃350 
12.2.3所在環境的資源不足等問題351 
12.3本章習題、總結與延伸351 

第13章動手,過程函數優化讓SQL飛352 
13.1 PL/SQL優化重點353 
13.1.1定義類型的優化353 
13.1.2 PL/SQL的集合優化355 
13.1.3 PL/SQL的游標合併361 
13.1.4動態SQL 364 
13.1.5使用10046trace跟踪PL/SQL 368 
13.2 PL/SQL優化其他相關擴展369 
13.2.1編譯無法成功369 
13.2.2通用腳本分享370 
13.3本章習題、總結與延伸380 

第14章動手,高級寫法應用讓SQL飛381 
14.1具體SQ L調優思路381 
14.1.1改寫SQL調優382 
14.1.2不改寫SQL調優382 
14.2高級SQL介紹與案例383 
14.2.1 GOURP BY的擴展383 
14.2.2 INSERT ALL 389 
14.2.3 MERGE 392 
14.2. 4 WITH子句402 
14.3本章習題、總結與延伸404 

第15章動手,分析函數讓SQL飛406 
15.1高級SQL之分析函數407 
15.1.1語法概述407 
15.1.2特別之處407 
15.2分析函數詳解與案例409 
15.2.1學習詳解410 
15.2.2案例分享417 
15.3本章習題、總結與延伸432 

第16章動手,把握需求改寫讓SQL飛433 
16.1考慮需求最小化434 
16.2千萬弄清SQL改造的等價性434 
16.2.1看似等價的寫法,其實不等價435 
16.2.2看似不等價的寫法,其實等價438 
16.3開發設計應用中的需求439 
16.3.1界面權限設計優化439 
16.3.2界面匯總與展現439 
16.3.3界面實時刷新改良439 
16.3.4目錄樹菜單的優化440 
16.4場景選擇的經典案例之誰是Count(*)之王440 
16.4.1優化過程440 
16.4.2優化總結445 
16.5本章習題、總結 延伸446 

第17章總結與延伸:從勿信訛傳到洞若觀火447 
17.1 SQL優化的各個誤區447 
17.1.1 COUNT(*)與COUNT(列)的傳言447 
17.1.2談SQL編寫順序之流言蜚語451 
17.1 .3 IN與EXISTS之爭455 
17.1.4總結探討457 
17.2誤區背後的話題擴展457 
17.2.1話題擴展之等價與否優先457 
17.2.2話題擴展之顛覆誤區觀點458 
17.3全書完,致讀者461