基于oracle的sql優(yōu)化是一本數(shù)據庫優(yōu)化扛鼎巨著,是本土Oracle數(shù)據庫性能優(yōu)化大師崔華泣血力作。全書共有8章,詳細的介紹了Oracle里的優(yōu)化器,Oracle里的執(zhí)行計劃,Oracle里的查詢轉換,Oracle里的Hint,Oracle里的并行,Oracle里SQL優(yōu)化的方法論等內容,囊括數(shù)據庫性能優(yōu)化技術所有分支與脈絡,講解通俗,實例經典,深入研究這些內容,SQL優(yōu)化的能力一定會有巨大提升,歡迎廣大讀者免費下載閱讀。
基本介紹
《基于Oracle的SQL優(yōu)化》是一本與眾不同的書,它的目的是使讀者真正掌握如何在Oracle數(shù)據庫里寫出高質量的SQL語句,以及如何在Oracle數(shù)據庫里對有性能問題的SQL做診斷和調整。本書從Oracle處理SQL的本質和原理入手,由淺入深、系統(tǒng)地介紹了Oracle數(shù)據庫里的優(yōu)化器、執(zhí)行計劃、Cursor和綁定變量、查詢轉換、統(tǒng)計信息、Hint和并行等這些與SQL優(yōu)化息息相關的本質性內容,并輔以大量極具借鑒意義的一線SQL優(yōu)化實例,闡述了作者倡導的“從本質和原理入手,以不變應萬變”的優(yōu)化思路,最后還介紹了作者在實際工作中總結出來的Oracle數(shù)據庫里SQL優(yōu)化的方法論。《基于Oracle的SQL優(yōu)化》適用于使用Oracle數(shù)據庫的開發(fā)人員、OracleDBA和其他對Oracle數(shù)據庫感興趣的人員,也可以作為各院校相關專業(yè)的教學輔導和參考用書,或作為相關培訓機構的培訓教材。
《基于oracle的sql優(yōu)化》共8章:
第1章“Oracle里的優(yōu)化器”,詳細介紹了Oracle數(shù)據庫中與優(yōu)化器相關的各個方面的內容,包括優(yōu)化器的模式、結果集(RowSource)、集的勢(Cardinality)、可選擇率(Selectivity)、可傳遞性(Transitivity)、各種數(shù)據訪問的方法,以及與表連接相關的內容。
第2章“Oracle里的執(zhí)行計劃”,詳細介紹了Oracle數(shù)據里與執(zhí)行計劃有關的各個方面的內容,包括執(zhí)行計劃的含義,如何查看執(zhí)行計劃,如何得到目標SQL真實的執(zhí)行計劃,如何查看執(zhí)行計劃的執(zhí)行順序,Oracle數(shù)據庫里各種常見的執(zhí)行計劃的含義,以及如何在Oracle數(shù)據庫中穩(wěn)定執(zhí)行計劃。
第3章“Oracle里的Cursor和綁定變量”,詳細介紹了Oracle數(shù)據庫中與Cursor和綁定變量相關的各個方面的內容,包括SharedCursor、SessionCursor、綁定變量、游標共享、硬解析、軟解析、軟軟解析,以及與它們息息相關的Oracle數(shù)據庫里的四種應用類型。
第4章“Oracle里的查詢轉換”,詳細介紹了Oracle數(shù)據庫中與查詢轉換有關的各個方面的內容,包括子查詢展開、視圖合并、星型轉換、連接謂詞推入、連接因式分解、表擴展、表移除,以及Oracle如何處理SQL語句中的IN。
第5章“Oracle里的統(tǒng)計信息”,詳細介紹了Oracle數(shù)據庫里與統(tǒng)計信息相關的各個方面的內容,包括Oracle數(shù)據庫中各種統(tǒng)計信息的分類、含義、收集和查看方法,以及如何在Oracle數(shù)據庫里正確地收集統(tǒng)計信息。
第6章“Oracle里的Hint”,詳細介紹了Oracle數(shù)據庫中與Hint有關的各個方面的內容,包括什么是Hint,如何用Hint,Hint什么情況下會失效,以及Oracle數(shù)據庫中常見的各種Hint。
第7章“Oracle里的并行”,詳細介紹了Oracle數(shù)據庫里并行的基本概念以及在Oracle數(shù)據庫里如何控制并行,包括在Oracle數(shù)據庫里開啟并行、控制并行度等。
第8章“Oracle里SQL優(yōu)化的方法論”,介紹了在Oracle數(shù)據庫里如何做SQL優(yōu)化,提出了我們總結出來的Oracle數(shù)據庫里SQL優(yōu)化的方法論,并結合實例驗證了上述方法論。
基于oracle的sql優(yōu)化章節(jié)目錄
第1章 Oracle 里的優(yōu)化器 1.1 什么是Oracle 里的優(yōu)化器 1.1.1 基于規(guī)則的優(yōu)化器 1.1.2 基于成本的優(yōu)化器 1.1.2.1 集的勢 1.1.2.2 可選擇率 1.1.2.3 可傳遞性 1.1.2.4 CBO 的局限性 1.2 優(yōu)化器的基礎知識 1.2.1 優(yōu)化器的模式 1.2.2 結果集 1.2.3 訪問數(shù)據的方法 1.2.3.1 訪問表的方法 1.2.3.1.1 全表掃描 1.2.3.1.2 ROWID 掃描 1.2.3.2 訪問索引的方法 1.2.3.2.1 索引唯一性掃描 1.2.3.2.2 索引范圍掃描 1.2.3.2.3 索引全掃描 1.2.3.2.4 索引快速全掃描 1.2.3.2.5 索引跳躍式掃描 1.2.4 表連接 1.2.4.1 表連接的類型 1.2.4.1.1 內連接 1.2.4.1.2 外連接 1.2.4.2 表連接的方法 1.2.4.2.1 排序合并連接 1.2.4.2.2 嵌套循環(huán)連接 1.2.4.2.3 哈希連接 1.2.4.2.4 笛卡兒連接 1.2.4.3 反連接 1.2.4.4 半連接 1.2.4.5 星型連接 1.3 優(yōu)化器模式對CBO 計算成本帶來巨大影響的實例 1.4 總結 第2章 Oracle 里的執(zhí)行計劃 2.1 什么是執(zhí)行計劃 2.2 如何查看執(zhí)行計劃 2.2.1 explain plan 命令 2.2.2 DBMS_XPLAN 包 2.2.3 AUTOTRACE 開關 2.2.4 事件與tkprof 命令 2.3 如何得到真實的執(zhí)行計劃 2.4 如何查看執(zhí)行計劃的執(zhí)行順序 2.5 Oracle 里的常見執(zhí)行計劃 2.5.1 與表訪問相關的執(zhí)行計劃 2.5.2 與B 樹索引相關的執(zhí)行計劃 2.5.3 與位圖索引相關的執(zhí)行計劃 2.5.4 與表連接相關的執(zhí)行計劃 2.5.5 其他典型的執(zhí)行計劃 2.5.5.1 AND-EQUAL(INDEX MERGE) 2.5.5.2 INDEX JOIN 2.5.5.3 VIEW 2.5.5.4 FILTER 2.5.5.5 SORT 2.5.5.6 UNION/UNION ALL 2.5.5.7 CONCAT 2.5.5.8 CONNECT BY 2.6 Oracle 里執(zhí)行計劃的穩(wěn)定 2.6.1 使用SQL Profile 來穩(wěn)定執(zhí)行計劃 2.6.1.1 Automatic 類型的SQL Profile 2.6.1.2 Manual 類型的SQL Profile 2.6.2 使用SPM 來穩(wěn)定執(zhí)行計劃 2.7 總結 第3章 Oracle 里的Cursor 和綁定變量 3.1 Oracle 里的Cursor 3.1.1 Oracle 里的Shared Cursor 3.1.1.1 Shared Cursor 的含義 3.1.1.2 硬解析 3.1.1.3 軟解析 3.1.2 Oracle 里的Session Cursor 3.1.2.1 Session Cursor 的含義 3.1.2.2 Session Cursor 的相關參數(shù)解析 3.1.2.2.1 OPEN_CURSORS 3.1.2.2.2 SESSION_CACHED_CURSORS 3.1.2.2.3 CURSOR_SPACE_FOR_TIME 3.1.2.3 Session Cursor 的種類和用法 3.1.2.3.1 隱式游標 3.1.2.3.2 顯式游標 3.1.2.3.3 參考游標 3.2 Oracle 里的綁定變量 3.2.1 綁定變量的作用 3.2.2 綁定變量的典型用法 3.2.3 綁定變量的使用原則和最佳實踐 3.2.3.1 PL/SQL 批量綁定模板一 3.2.3.2 PL/SQL 批量綁定模板二 3.2.4 綁定變量窺探 3.2.5 綁定變量分級 3.2.6 綁定變量的個數(shù)不宜太多 3.2.7 批量綁定時如何處理錯誤 3.2.8 如何得到已執(zhí)行的目標SQL 中綁定變量的值 3.3 Oracle 里的游標共享 3.3.1 常規(guī)游標共享 3.3.2 自適應游標共享 3.4 Oracle 里的應用類型 3.4.1 Session Cursor 的生命周期 3.4.2 應用類型一(硬解析) 3.4.3 應用類型二(軟解析) 3.4.4 應用類型三(軟軟解析) 3.4.5 應用類型四(一次解析、多次執(zhí)行) 3.4.6 四種應用類型的實測性能對比 3.5 總結 第4章 Oracle 里的查詢轉換 4.1 Oracle 里查詢轉換的作用 4.2 子查詢展開 4.3 視圖合并 4.3.1 簡單視圖合并 4.3.2 外連接視圖合并 4.3.3 復雜視圖合并 4.4 星型轉換 4.5 連接謂詞推入 4.6 連接因式分解 4.7 表擴展 4.8 表移除 4.9 Oracle 如何處理SQL 語句中的IN 4.9.1 IN-List Iterator 4.9.2 IN-List Expansion / OR Expansion 4.9.3 IN-List Filter 4.9.4 對IN 做子查詢展開/視圖合并 4.10 查詢轉換的綜合應用實例(邏輯讀從200 萬降到6) 4.11 總結 第5章 Oracle 里的統(tǒng)計信息 5.1 什么是Oracle 里的統(tǒng)計信息 5.2 Oracle 里收集與查看統(tǒng)計信息的方法 5.2.1 收集統(tǒng)計信息 5.2.1.1 用ANALYZE 命令收集統(tǒng)計信息 5.2.1.2 用DBMS_STATS 包收集統(tǒng)計信息 5.2.1.3 ANALYZE 和DBMS_STATS 的區(qū)別 5.2.2 查看統(tǒng)計信息 5.3 表的統(tǒng)計信息 5.3.1 表統(tǒng)計信息的種類和含義 5.3.2 表統(tǒng)計信息不準導致SQL 性能問題的實例 5.4 索引的統(tǒng)計信息 5.4.1 索引統(tǒng)計信息的種類和含義 5.4.2 聚簇因子的含義及重要性 5.5 列的統(tǒng)計信息 5.5.1 列統(tǒng)計信息的種類和含義 5.5.2 列統(tǒng)計信息不準導致謂詞越界的實例 5.5.3 直方圖 5.5.3.1 直方圖的含義 5.5.3.2 直方圖的類型 5.5.3.2.1 Frequency 類型的直方圖 5.5.3.2.2 Height Balanced 類型的直方圖 5.5.3.3 直方圖的收集方法 5.5.3.4 直方圖對CBO 的影響 5.5.3.4.1 直方圖對Shared Cursor 的影響 5.5.3.4.2 直方圖對可選擇率的影響 5.5.3.5 使用直方圖的注意事項 5.6 全局統(tǒng)計信息 5.7 動態(tài)采樣 5.8 多列統(tǒng)計信息 5.9 系統(tǒng)統(tǒng)計信息 5.10 數(shù)據字典統(tǒng)計信息 5.11 內部對象統(tǒng)計信息 5.12 Oracle 里的自動統(tǒng)計信息收集 5.13 Oracle 里應如何收集統(tǒng)計信息 5.14 總結 第6章 Oracle 里的Hint 6.1 什么是Hint 6.2 Hint 的用法 6.3 Hint 被Oracle 忽略的常見情形 6.3.1 情形一:使用的Hint 有語法或者拼寫錯誤 6.3.2 情形二:使用的Hint 無效 6.3.3 情形三:使用的Hint 自相矛盾 6.3.4 情形四:使用的Hint 受到了查詢轉換的干擾 6.3.5 情形五:使用的Hint 受到了保留關鍵字的干擾 6.4 常見的Hint 6.4.1 與優(yōu)化器模式相關的Hint 6.4.1.1 ALL_ROWS 6.4.1.2 FIRST_ROWS(n) 6.4.1.3 RULE 6.4.2 與表訪問相關的Hint 6.4.2.1 FULL 6.4.2.2 ROWID 6.4.3 與索引訪問相關的Hint 6.4.3.1 INDEX 6.4.3.2 NO_INDEX 6.4.3.3 INDEX_DESC 6.4.3.4 INDEX_COMBINE 6.4.3.5 INDEX_FFS 6.4.3.6 INDEX_JOIN 6.4.3.7 AND_EQUAL 6.4.4 與表連接順序相關的Hint 6.4.4.1 ORDERED 6.4.4.2 LEADING 6.4.5 與表連接方法相關的Hint 6.4.5.1 USE_MERGE 6.4.5.2 NO_USE_MERGE 6.4.5.3 USE_NL 6.4.5.4 NO_USE_NL 6.4.5.5 USE_HASH 6.4.5.6 NO_USE_HASH 6.4.5.7 MERGE_AJ 6.4.5.8 NL_AJ 6.4.5.9 HASH_AJ 6.4.5.10 MERGE_SJ 6.4.5.11 NL_SJ 6.4.5.12 HASH_SJ 6.4.6 與查詢轉換相關的Hint 6.4.6.1 USE_CONCAT 6.4.6.2 NO_EXPAND 6.4.6.3 MERGE 6.4.6.4 NO_MERGE 6.4.6.5 UNNEST 6.4.6.6 NO_UNNEST 6.4.6.7 EXPAND_TABLE 6.4.6.8 NO_EXPAND_TABLE 6.4.7 與并行相關的Hint 6.4.7.1 PARALLEL 6.4.7.2 NO_PARALLEL 6.4.7.3 PARALLEL_INDEX 6.4.7.4 NO_PARALLEL_INDEX 6.4.8 其他常見Hint 6.4.8.1 DRIVING_SITE 6.4.8.2 APPEND 6.4.8.3 APPEND_VALUES 6.4.8.4 PUSH_PRED 6.4.8.5 NO_PUSH_PRED 6.4.8.6 PUSH_SUBQ 6.4.8.7 NO_PUSH_SUBQ 6.4.8.8 OPT_PARAM 6.4.8.9 OPTIMIZER_FEATURES_ENABLE 6.4.8.10 QB_NAME 6.4.8.11 CARDINALITY 6.4.8.12 SWAP_JOIN_INPUTS 6.5 用Cardinality Hint 解決ORA-01555 錯誤的實例 6.6 總結 第7章 Oracle 里的并行 7.1 Oracle 里并行的基本概念 7.1.1 為什么要用并行 7.1.2 并行的理論基礎 7.1.3 Oracle 里能夠并行執(zhí)行的操作 7.1.4 Oracle 里與并行有關的術語及解釋 7.1.4.1 Query Coordinator 7.1.4.2 Query Slaves 和Query Slave Set 7.1.4.3 Table Queues 7.1.4.4 數(shù)據傳遞方法 7.1.4.5 granules 7.1.4.6 直接讀取 7.1.5 深入解析并行執(zhí)行計劃的實例 7.2 Oracle 里并行的控制 7.2.1 Oracle 里如何開啟并行 7.2.2 Oracle 里并行度的控制 7.2.3 Oracle RAC 環(huán)境下的并行 7.2.4 Oracle 里與并行相關的參數(shù) 7.2.4.1 PARALLEL_MAX_SERVERS 7.2.4.2 PARALLEL_MIN_SERVERS 7.2.4.3 自動并行相關的參數(shù) 7.2.4.3.1 PARALLEL_DEGREE_POLICY 7.2.4.3.2 PARALLEL_MIN_TIME_THRESHOLD 7.2.4.3.3 PARALLEL_DEGREE_LIMIT 7.2.4.3.4 PARALLEL_SERVERS_TARGET 7.2.4.4 自適應并行相關的參數(shù) 7.2.4.4.1 PARALLEL_ADAPTIVE_MULTI_USER 7.2.4.4.2 PARALLEL_MIN_PERCENT 7.2.4.4.3 PARALLEL_AUTOMATIC_TUNING 7.2.4.5 其他參數(shù) 7.2.4.5.1 PARALLEL_THREADS_PER_CPU 7.2.4.5.2 PARALLEL_EXECUTION_MESSAGE_SIZE 7.2.4.5.3 PARALLEL_FORCE_LOCAL 7.2.5 繞開Oracle 并行執(zhí)行Bug 大幅提升性能的實例 7.3 總結 第8章 Oracle 里SQL 優(yōu)化的方法論 8.1 Oracle 里如何做SQL 優(yōu)化 8.1.1 Oracle 里SQL 優(yōu)化的本質是基于對CBO 和執(zhí)行計劃的深刻理解 8.1.2 Oracle 里SQL 優(yōu)化需要聯(lián)系實際的業(yè)務 8.1.3 Oracle 里SQL 優(yōu)化需要適時使用綁定變量 8.2 Oracle 里SQL 優(yōu)化的方法論在實戰(zhàn)中的驗證 8.3 總結
使用說明
1、下載并解壓,得出pdf文件
2、如果打不開本文件,請務必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進行閱讀
- 下載地址
發(fā)表評論
1人參與,1條評論- 第1樓運營商級NATIP地址網友發(fā)表于: 2019-12-01 10:57:02
- 絕對好資料0蓋樓(回復)
軟件排行榜
熱門推薦
瀟湘書院電腦版 v2.3.13.92049.58M / 簡體中文
得間免費小說電腦版 v5.3.7.196.85M / 簡體中文
有柿電腦版 v11.8.9121.22M / 簡體中文
南方Plus電腦版 v12.3.024.02M / 簡體中文
網易云閱讀電腦版 v6.7.226.41M / 簡體中文
京東讀書電腦版 v1.13.4官方版2.13M / 簡體中文
吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
本草綱目 5.34M / 簡體中文
C++多核高級編程 修斯pdf掃描版57.21M / 簡體中文