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

下載本文檔

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

文檔簡介

1、SQL語句的執(zhí)行過程以及數(shù)據(jù)庫內(nèi)存構(gòu)造 SQL語句的執(zhí)行過程 數(shù)據(jù)庫的內(nèi)存構(gòu)造DDL數(shù)據(jù)定義言語DML數(shù)據(jù)支配言語SQL語句的類型修正Oracle數(shù)據(jù)字典所執(zhí)行的語句。它們是創(chuàng)建表、添加用戶、刪除表中的列、創(chuàng)建觸發(fā)器等的語句例如: CREATE TABLE、CREATE USER、CREATE PACKAGE、ALTER TABLE、CREATE PROCEDUREDDL數(shù)據(jù)定義言語訪問和修正數(shù)據(jù)庫中數(shù)據(jù)所執(zhí)行的語句。這些語句包括SELECT、INSERT、MERGE、UPDATE和DELETE命令DML數(shù)據(jù)支配言語Oracle執(zhí)行一條語句從開場到終了經(jīng)過4個步驟:分析 對提交的語句進(jìn)展語法和

2、語義檢查優(yōu)化 生成一個可在數(shù)據(jù)庫中用來執(zhí)行語句的最正確方案行資源生成 為會話獲得最正確方案和建立執(zhí)行方案語句執(zhí)行 完成實踐執(zhí)行查詢的行資源生成步驟的輸出語句執(zhí)行過程語法分析查詢是不是合法的語句語義分析假設(shè)是合法的語句,還需求檢查能否具有訪問權(quán)限、訪問的列能否在所訪問的表中、能否存在歧義共享池檢查假設(shè)是DML語句還需求進(jìn)展共享池檢查,此語句能否曾經(jīng)被其他用戶分析過且Oracle可重用曾經(jīng)執(zhí)行的任務(wù),假設(shè)是就進(jìn)展軟分析,假設(shè)不是就進(jìn)展硬分析。DDL總是硬分析,從不重用分析共享池概念是Oracle體系構(gòu)造的一個關(guān)鍵成分。共享池是Oracle共享全局區(qū)SGA中的一塊內(nèi)存,其中庫高速緩存區(qū)存放以前執(zhí)行過

3、的SQL語句、PL/SQL代碼,數(shù)據(jù)字典高速緩存區(qū)存放字典信息硬分析軟分析共享池檢查分析查詢檢查語法驗證語義計算散列值找到一個匹配驗證存在一個與我們的查詢完全一樣的查詢援用一樣的對象確認(rèn)我們具有訪問一切援用對象的必需的權(quán)限驗證語句在一樣的環(huán)境中執(zhí)行假設(shè)是軟分析就直接跳過下面的優(yōu)化和行資源生成這一重要步驟硬分析和軟分析一切DML語句第一次提交給Oracle時,在它們的生存期中至少要優(yōu)化一次。優(yōu)化發(fā)生在硬分析中。語句義上和語法上完全一樣,且執(zhí)行環(huán)境也一樣的語句的執(zhí)行可以利用以前硬分析的任務(wù)。在此情形下,對它們進(jìn)展軟分析。硬分析包括查詢優(yōu)化步驟。這是一種費力的、CPU密集型的處置過程,所花的時間能夠

4、比語句的實踐執(zhí)行時間還要長。查詢優(yōu)化任務(wù)是要找到能夠是最好的執(zhí)行方案優(yōu)化和行資源生成基于規(guī)那么的優(yōu)化程序RBO這種優(yōu)化程序基于一組規(guī)那么建立查詢方案。它不思索對象尺寸、列的基數(shù)、數(shù)據(jù)的分布、排序區(qū)尺寸以及其它要素。查詢優(yōu)化只能利用曾經(jīng)編好的規(guī)那么?;诒惧X的優(yōu)化程序CBO這種優(yōu)化程序根據(jù)搜集的實踐訪問數(shù)據(jù)的統(tǒng)計信息對查詢進(jìn)展優(yōu)化。在確定最適宜的方案是,它將運用行數(shù)、數(shù)據(jù)集的尺寸以及許多其他信息。CBO將生成許多或許數(shù)千能夠的查詢方案處理查詢的預(yù)備途徑,并給每個查詢方案賦予一個數(shù)值本錢。采器具有最低本錢的查詢方案優(yōu)化程序方式優(yōu)化之后就是行資源生成,行資源生成器是Oracle中的一個軟件,它接受優(yōu)

5、化程序的輸出,將它格式化為實踐的執(zhí)行方案。例如:在運用SQL*PLUS中的AUTOTRACE適用程序時,它打印查詢方案行資源生成語句執(zhí)行的最后步驟是利用資源生成器的輸出實踐執(zhí)行語句。它是DML執(zhí)行中獨一的強迫性的步驟??梢蕴^分析、優(yōu)化和行資源生成步驟。反復(fù)執(zhí)行語句。由于這是目前為止最高效的方法,只需有能夠,我們都希望建立符合“分析一次,執(zhí)行許多次規(guī)那么的運用程序。執(zhí)行OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTScall count cpu elapsed disk query current rows- - - - - - - -Parse

6、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所花的時間單位是秒Elapsed:提供了執(zhí)行時所花的時間。單位是秒。這個參數(shù)值等于用戶呼應(yīng)時間Disk:提供緩存區(qū)從磁盤讀取的次數(shù)Query:以一致性方式從緩存區(qū)獲得數(shù)據(jù)的次數(shù)Current:以當(dāng)前方式從緩存區(qū)獲得數(shù)據(jù)的次數(shù)ROWs: 前往調(diào)用或執(zhí)行調(diào)用時,處置的

7、數(shù)據(jù)行的數(shù)量。 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 STATEMENT | | 4 | 120 | 3 (0)| 00:00:01 | 1 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic samplin

8、g 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 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4 rows processed 10:

9、35:00 SQL /Elapsed: 00:00:00.02Execution Plan-Plan hash value: 3383998547-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | SELECT 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 (le

10、vel=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 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4 rows processed 11:31:43 SQL l 1* select * from dept

11、 order by 1Elapsed: 00:00:00.03Execution 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 |-N

12、ote- - dynamic sampling used for this statement (level=2)Statistics- 0 recursive calls 0 db block gets 7 consistent 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

13、rows processed alter system flush shared_pool;alter system flush buffer_cache;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:

14、00:01 | 2 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic 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 clie

15、nt 2 SQL*Net roundtrips to/from client 13 sorts (memory) 0 sorts (disk) 4 rows processed 數(shù)據(jù)庫緩沖區(qū)高速緩存共享池重做日志緩沖區(qū)Java池Java Pool大池Large Pool流池Stream Pool數(shù)據(jù)庫內(nèi)存構(gòu)造 SGA共享池Java池流池庫高速緩存數(shù)據(jù)字典緩存DB CACHE SIZELog Buffer大池用于存儲 最近執(zhí)行的SQL語句 最近運用的數(shù)據(jù)定義包括的內(nèi)存構(gòu)造 庫高速緩存 數(shù)據(jù)字典高速緩存共享池庫高速緩存包括以下兩個構(gòu)造: 共享SQL:共享SQL 為針對數(shù)據(jù)庫運轉(zhuǎn)的SQL 語句存儲并

16、共享執(zhí)行方案和 語法分析樹。下次運轉(zhuǎn)同一SQL 語句時,這個語句就能利用共享SQL 提供的語法分析信息來加快其執(zhí)行速度。要確保SQL 語句隨時可以運用共享SQL 區(qū),文本、方案和綁定變量必需完全一樣。 共享PL/SQL:共享PL/SQL 區(qū)存儲并共享最近執(zhí)行的PL/SQL 語句。經(jīng)過語法分析和編譯的程序單元和過程函數(shù)、程序包和觸發(fā)器都存儲在這個區(qū)中庫高速緩存數(shù)據(jù)庫中最近運用的定義的集合包括與數(shù)據(jù)庫文件、表、索引、列、用戶、權(quán)限和其它數(shù)據(jù)庫對象相關(guān)的信息在語法分析階段,效力器進(jìn)程會在數(shù)據(jù)字典中查找用于解析對象名和驗證訪問的信息將數(shù)據(jù)字典信息高速緩存到內(nèi)存中,可縮短查詢和DML的呼應(yīng)時間數(shù)據(jù)字典高

17、速緩存存儲已從數(shù)據(jù)文件中檢索到的數(shù)據(jù)塊的副本可以大幅提高獲取和更新數(shù)據(jù)時的性能經(jīng)過LRU 算法管理 處置查詢時,Oracle 效力器進(jìn)程在數(shù)據(jù)庫緩沖區(qū)高速緩存中查找任何所需的塊。假設(shè)未在數(shù)據(jù)庫緩沖區(qū)高速緩存中找到這個塊,效力器進(jìn)程就從數(shù)據(jù)文件讀取這個塊,并在數(shù)據(jù)庫緩沖區(qū)高速緩存中放置一個副本。由于對同一個塊的后續(xù)懇求可以在內(nèi)存中找到這個塊,因此這些懇求能夠不需求進(jìn)展物理讀取。數(shù)據(jù)庫緩沖區(qū)高速緩存Oracle 效力器運用LRU 最近最少運用算法算法來釋放近期未被訪的緩沖區(qū),以便在數(shù)據(jù)庫緩沖區(qū)高速緩存中為新塊騰出空間 記錄對數(shù)據(jù)庫數(shù)據(jù)塊所做的全部更改主要用于恢復(fù)其中記錄的更改稱作重做條目重做條目包含用于重新構(gòu)造或重做更改的信息 重做日志緩沖區(qū)是一個循環(huán)緩沖區(qū),它包含對數(shù)據(jù)文件塊所做的各種更改。此信息存儲在重做條目中。重做條目包含將數(shù)據(jù)恢復(fù)到運用INSERT、UPDATE、DELETE、CREATE、ALTER、或DROP 操作進(jìn)展更改前的形狀所需求的信息。重做日志緩沖區(qū)

溫馨提示

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

評論

0/150

提交評論