SQL語句的執(zhí)行過程_第1頁
SQL語句的執(zhí)行過程_第2頁
SQL語句的執(zhí)行過程_第3頁
SQL語句的執(zhí)行過程_第4頁
SQL語句的執(zhí)行過程_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料以及數(shù)據(jù)庫內(nèi)存結(jié)構(gòu)拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料DDL(數(shù)據(jù)定義語言)DML(數(shù)據(jù)操縱語言)拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料修改Oracle數(shù)據(jù)字典所執(zhí)行的語句。它們是創(chuàng)建表、增加用戶、刪除表中的列、創(chuàng)建觸發(fā)器等的語句例如: CREATE TABLE、CREATE USER、CREATE PACKAGE、ALTER TABLE、CREATE PROCEDURE拓明科技Oracle數(shù)據(jù)庫內(nèi)

2、部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料訪問和修改數(shù)據(jù)庫中數(shù)據(jù)所執(zhí)行的語句。這些語句包括SELECT、INSERT、MERGE、UPDATE和DELETE命令拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle執(zhí)行一條語句從開始到結(jié)束經(jīng)過4個(gè)步驟:分析 對(duì)提交的語句進(jìn)行語法和語義檢查優(yōu)化 生成一個(gè)可在數(shù)據(jù)庫中用來執(zhí)行語句的最佳計(jì)劃行資源生成 為會(huì)話取得最佳計(jì)劃和建立執(zhí)行計(jì)劃語句執(zhí)行 完成實(shí)際執(zhí)行查詢的行資源生成步驟的輸出拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料語法分析查詢是不是合法的語句語義分析如果是合法的語句,還需要檢查是否具有訪問權(quán)限

3、、訪問的列是否在所訪問的表中、是否存在歧義共享池檢查如果是DML語句還需要進(jìn)行共享池檢查,此語句是否已經(jīng)被其他用戶分析過且Oracle可重用已經(jīng)執(zhí)行的工作,如果是就進(jìn)行軟分析,如果不是就進(jìn)行硬分析。DDL總是硬分析,從不重用拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料共享池概念是Oracle體系結(jié)構(gòu)的一個(gè)關(guān)鍵成分。共享池是Oracle共享全局區(qū)(SGA)中的一塊內(nèi)存,其中庫高速緩存區(qū)存放以前執(zhí)行過的SQL語句、PL/SQL代碼,數(shù)據(jù)字典高速緩存區(qū)存放字典信息硬分析軟分析拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料分析查詢檢查語法驗(yàn)證語義計(jì)算散列值

4、找到一個(gè)匹配驗(yàn)證存在一個(gè)與我們的查詢完全相同的查詢(引用相同的對(duì)象)確認(rèn)我們具有訪問所有引用對(duì)象的必須的權(quán)限驗(yàn)證語句在相同的環(huán)境中執(zhí)行如果是軟分析就直接跳過下面的優(yōu)化和行資源生成這一重要步驟拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料所有DML語句第一次提交給Oracle時(shí),在它們的生存期中至少要優(yōu)化一次。優(yōu)化發(fā)生在硬分析中。語句義上和語法上完全相同,且執(zhí)行環(huán)境也相同的語句的執(zhí)行可以利用以前硬分析的工作。在此情形下,對(duì)它們進(jìn)行軟分析。硬分析包括查詢優(yōu)化步驟。這是一種費(fèi)勁的、CPU密集型的處理過程,所花的時(shí)間可能比語句的實(shí)際執(zhí)行時(shí)間還要長。查詢優(yōu)化工作是要找到可能是最好的

5、執(zhí)行計(jì)劃拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料基于規(guī)則的優(yōu)化程序(RBO)這種優(yōu)化程序基于一組規(guī)則建立查詢計(jì)劃。它不考慮對(duì)象尺寸、列的基數(shù)、數(shù)據(jù)的分布、排序區(qū)尺寸以及其它因素。查詢優(yōu)化只能利用已經(jīng)編好的規(guī)則。基于成本的優(yōu)化程序(CBO)這種優(yōu)化程序根據(jù)收集的實(shí)際訪問數(shù)據(jù)的統(tǒng)計(jì)信息對(duì)查詢進(jìn)行優(yōu)化。在確定最合適的計(jì)劃是,它將使用行數(shù)、數(shù)據(jù)集的尺寸以及許多其他信息。CBO將生成許多(或許數(shù)千)可能的查詢計(jì)劃(解決查詢的預(yù)備途徑),并給每個(gè)查詢計(jì)劃賦予一個(gè)數(shù)值成本。采用具有最低成本的查詢計(jì)劃拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料優(yōu)化之后就是行

6、資源生成,行資源生成器是Oracle中的一個(gè)軟件,它接受優(yōu)化程序的輸出,將它格式化為實(shí)際的執(zhí)行計(jì)劃。例如:在使用SQL*PLUS中的AUTOTRACE實(shí)用程序時(shí),它打印查詢計(jì)劃拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料語句執(zhí)行的最后步驟是利用資源生成器的輸出實(shí)際執(zhí)行語句。它是DML執(zhí)行中唯一的強(qiáng)制性的步驟??梢蕴^分析、優(yōu)化和行資源生成步驟。反復(fù)執(zhí)行語句。因?yàn)檫@是目前為止最高效的方法,只要有可能,我們都希望建立符合“分析一次,執(zhí)行許多次”規(guī)則的應(yīng)用程序。拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料OVERALL TOTALS FOR ALL N

7、ON-RECURSIVE STATEMENTScall count cpu elapsed disk query current rows- - - - - - - -Parse 12 0.04 0.12 0 2 0 0Execute 12 0.02 0.04 0 268 29 23Fetch 4856 0.86 0.81 0 7703 0 72673- - - - - - - -total 4880 0.93 0.98 0 7973 29 72696count:提供OCI過程的執(zhí)行次數(shù)CPU: 提供執(zhí)行CPU所花的時(shí)間單位是秒Elapsed:提供了執(zhí)行時(shí)所花的時(shí)間。單位是秒。這個(gè)參數(shù)值等于用

8、戶響應(yīng)時(shí)間Disk:提供緩存區(qū)從磁盤讀取的次數(shù)Query:以一致性模式從緩存區(qū)獲得數(shù)據(jù)的次數(shù)Current:以當(dāng)前模式從緩存區(qū)獲得數(shù)據(jù)的次數(shù)ROWs: 返回調(diào)用或執(zhí)行調(diào)用時(shí),處理的數(shù)據(jù)行的數(shù)量。拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料10:34:55 SQL select * from dept;Elapsed: 00:00:00.10Execution Plan-Plan hash value: 3383998547-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | SELECT

9、STATEMENT | | 4 | 120 | 3 (0)| 00:00:01 | 1 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic sampling used for this statement (level=2)Statistics- 279 recursive calls 0 db block gets 58 consistent gets 8 physical reads 0 redo size 1630 bytes sent via SQL*Net to client 524 byte

10、s received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4 rows processed拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料10:35:00 SQL /Elapsed: 00:00:00.02Execution Plan-Plan hash value: 3383998547-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | SEL

11、ECT STATEMENT | | 4 | 120 | 3 (0)| 00:00:01 | 1 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic sampling used for this statement (level=2)Statistics- 0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size 802 bytes sent via SQL*Net to client 524 byte

12、s received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4 rows processed拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料11:31:43 SQL l 1* select * from dept order by 1Elapsed: 00:00:00.03Execution Plan-Plan hash value: 120787663-| Id | Operation | Name | Rows | Bytes

13、 | Cost (%CPU)| Time |-| 0 | SELECT STATEMENT | | 4 | 120 | 4 (25)| 00:00:01 | 1 | SORT ORDER BY | | 4 | 120 | 4 (25)| 00:00:01 | 2 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic sampling used for this statement (level=2)Statistics- 0 recursive calls 0 db block gets 7 consis

14、tent gets 0 physical reads 0 redo size 794 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 4 rows processed拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料alter system flush shared_pool;alter system flush buffer_cache;

15、Elapsed: 00:00:00.20Execution Plan-Plan hash value: 120787663-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | SELECT STATEMENT | | 4 | 120 | 4 (25)| 00:00:01 | 1 | SORT ORDER BY | | 4 | 120 | 4 (25)| 00:00:01 | 2 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dyna

16、mic sampling used for this statement (level=2)Statistics- 1195 recursive calls 0 db block gets 203 consistent gets 32 physical reads 0 redo size 794 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 13 sorts (memory) 0 sorts (disk) 4 rows

17、 processed拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料數(shù)據(jù)庫緩沖區(qū)高速緩存共享池重做日志緩沖區(qū)Java池(Java Pool)大池(Large Pool)流池(Stream Pool)拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料 SGA共享池Java池流池庫高速緩存數(shù)據(jù)字典緩存DB CACHE SIZELog Buffer大池拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料用于存儲(chǔ) 最近執(zhí)行的SQL語句 最近使用的數(shù)據(jù)定義包括的內(nèi)存結(jié)構(gòu) 庫高速緩存 數(shù)據(jù)字典高速緩存拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)

18、據(jù)庫內(nèi)部培訓(xùn)資料庫高速緩存包括以下兩個(gè)結(jié)構(gòu): 共享SQL:共享SQL 為針對(duì)數(shù)據(jù)庫運(yùn)行的SQL 語句存儲(chǔ)并共享執(zhí)行計(jì)劃和 語法分析樹。下次運(yùn)行同一SQL 語句時(shí),這個(gè)語句就能利用共享SQL 提供的語法分析信息來加快其執(zhí)行速度。要確保SQL 語句隨時(shí)可以使用共享SQL 區(qū),文本、方案和綁定變量必須完全相同。 共享PL/SQL:共享PL/SQL 區(qū)存儲(chǔ)并共享最近執(zhí)行的PL/SQL 語句。經(jīng)過語法分析和編譯的程序單元和過程(函數(shù)、程序包和觸發(fā)器)都存儲(chǔ)在這個(gè)區(qū)中拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料數(shù)據(jù)庫中最近使用的定義的集合包括與數(shù)據(jù)庫文件、表、索引、列、用戶、權(quán)限和

19、其它數(shù)據(jù)庫對(duì)象相關(guān)的信息在語法分析階段,服務(wù)器進(jìn)程會(huì)在數(shù)據(jù)字典中查找用于解析對(duì)象名和驗(yàn)證訪問的信息將數(shù)據(jù)字典信息高速緩存到內(nèi)存中,可縮短查詢和DMLDML的響應(yīng)時(shí)間拓明科技Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料Oracle數(shù)據(jù)庫內(nèi)部培訓(xùn)資料存儲(chǔ)已從數(shù)據(jù)文件中檢索到的數(shù)據(jù)塊的副本能夠大幅提高獲取和更新數(shù)據(jù)時(shí)的性能通過LRU LRU 算法管理算法管理 處理查詢時(shí),Oracle 服務(wù)器進(jìn)程在數(shù)據(jù)庫緩沖區(qū)高速緩存中查找任何所需的塊。如果未在數(shù)據(jù)庫緩沖區(qū)高速緩存中找到這個(gè)塊,服務(wù)器進(jìn)程就從數(shù)據(jù)文件讀取這個(gè)塊,并在數(shù)據(jù)庫緩沖區(qū)高速緩存中放置一個(gè)副本。由于對(duì)同一個(gè)塊的后續(xù)請(qǐng)求可以在內(nèi)存中找到這個(gè)塊,因此這些請(qǐng)求可能不需要進(jìn)行物理讀取。拓明科技Oracl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論