oracle查詢工作原理_第1頁
oracle查詢工作原理_第2頁
oracle查詢工作原理_第3頁
oracle查詢工作原理_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、Oracle 數(shù)據(jù)庫查詢工作原理第一步:客戶端把語句發(fā)給服務(wù)器端執(zhí)行當(dāng)我們在客戶端執(zhí)行 select 語句時,客戶端會把這條 SQL 語句發(fā)送給服務(wù)器端,讓服 務(wù)器端的進程來處理這語句。也就是說, Oracle 客戶端是不會做任何的操作,他的主要任 務(wù)就是把客戶端產(chǎn)生的一些 SQL 語句發(fā)送給服務(wù)器端。 雖然在客戶端也有一個數(shù)據(jù)庫進程, 但是,這個進程的作用跟服務(wù)器上的進程作用事不相同的。服務(wù)器上的數(shù)據(jù)庫進程才會對 SQL 語句進行相關(guān)的處理。不過,有個問題需要說明,就是客戶端的進程跟服務(wù)器的進程 是一一對應(yīng)的。 也就是說, 在客戶端連接上服務(wù)器后, 在客戶端與服務(wù)器端都會形成一個進 程,客戶

2、端上的我們叫做客戶端進程 ;而服務(wù)器上的我們叫做服務(wù)器進程。所以,由于所有 的 SQL 語句都是服務(wù)器進程執(zhí)行的,所以,有些人把服務(wù)器進程形象地比喻成客戶端進程 的“影子”。第二步:語句解析當(dāng)客戶端把 SQL 語句傳送到服務(wù)器后,服務(wù)器進程會對該語句進行解析。同理,這個解析的工作, 也是在服務(wù)器端所進行的。 雖然這只是一個解析的動作, 但是,其會做很多 “小 動作”。1、查詢高速緩存。服務(wù)器進程在接到客戶端傳送過來的 SQL 語句時,不會直接去數(shù)據(jù)庫查詢。而是會先 在數(shù)據(jù)庫的高速緩存中去查找, 是否存在相同語句的執(zhí)行計劃。 如果在數(shù)據(jù)高速緩存中, 剛 好有其他人使用這個查詢語句的話,則服務(wù)器進

3、程就會直接執(zhí)行這個 SQL 語句,省去后續(xù) 的工作。所以,采用高速數(shù)據(jù)緩存的話,可以提高 SQL 語句的查詢效率。一方面是從內(nèi)存 中讀取數(shù)據(jù)要比從硬盤中的數(shù)據(jù)文件中讀取數(shù)據(jù)效率要高, 另一方面, 也是因為這個語句解 析的原因。不過這里要注意一點, 這個數(shù)據(jù)緩存跟有些客戶端軟件的數(shù)據(jù)緩存是兩碼事。 有些客戶 端軟件為了提高查詢效率, 會在應(yīng)用軟件的客戶端設(shè)置數(shù)據(jù)緩存。 由于這些數(shù)據(jù)緩存的存在, 可以提高客戶端應(yīng)用軟件的查詢效率。 但是, 若其他人在服務(wù)器進行了相關(guān)的修改, 由于應(yīng) 用軟件數(shù)據(jù)緩存的存在, 導(dǎo)致修改的數(shù)據(jù)不能及時反映到客戶端上。 從這也可以看出, 應(yīng)用 軟件的數(shù)據(jù)緩存跟數(shù)據(jù)庫服務(wù)器

4、的高速數(shù)據(jù)緩存不是一碼事。2、語句合法性檢查。當(dāng)在高速緩存中找不到對應(yīng)的 SQL 語句時,則數(shù)據(jù)庫服務(wù)器進程就會開始檢查這條語 句的合法性。這里主要是對 SQL 語句的語法進行檢查,看看其是否合乎語法規(guī)則。如果服 務(wù)器進程認(rèn)為這條 SQL 語句不符合語法規(guī)則的時候, 就會把這個錯誤信息, 反饋給客戶端。 在這個語法檢查的過程中, 不會對 SQL 語句中所包含的表名、 列名等等進行 SQL 他只是語 法上的檢查。3、語言含義檢查。若 SQL 語句符合語法上的定義的話,則服務(wù)器進程接下去會對語句中的字段、表等內(nèi)容進行檢查??纯催@些字段、表是否在數(shù)據(jù)庫中。如果表名與列名不準(zhǔn)確的話,則數(shù)據(jù)庫會就會反饋

5、錯誤信息給客戶端。所以,有時候我們寫 select 語句的時候,若語法與表名或者列名同時寫錯的話,則系 統(tǒng)是先提示說語法錯誤, 等到語法完全正確后, 再提示說列名或表名錯誤。 若能夠掌握這個 順序的話,則在應(yīng)用程序排錯的時候,可以節(jié)省時間。4、獲得對象解析鎖。當(dāng)語法、 語義都正確后, 系統(tǒng)就會對我們需要查詢的對象加鎖。 這主要是為了保障數(shù)據(jù) 的一致性, 防止我們在查詢的過程中, 其他用戶對這個對象的結(jié)構(gòu)發(fā)生改變。 對于加鎖的原 理與方法,我在其他文章中已經(jīng)有專門敘述,在這里就略過不談了。5、數(shù)據(jù)訪問權(quán)限的核對。當(dāng)語法、語義通過檢查之后,客戶端還不一定能夠取得數(shù)據(jù)。 服務(wù)器進程還會檢查,你 所連

6、接的用戶是否有這個數(shù)據(jù)訪問的權(quán)限。 若你連接上服務(wù)器的用戶不具有數(shù)據(jù)訪問權(quán)限的 話,則客戶端就不能夠取得這些數(shù)據(jù)。 故, 有時候我們查詢數(shù)據(jù)的時候, 辛辛苦苦地把 SQL 語句寫好、編譯通過,但是,最后系統(tǒng)返回個“沒有權(quán)限訪問數(shù)據(jù)”的錯誤信息,讓我們氣 半死。這在前端應(yīng)用軟件開發(fā)調(diào)試的過程中,可能會碰到。所以,要注意這個問題,數(shù)據(jù)庫 服務(wù)器進程先檢查語法與語義,然后才會檢查訪問權(quán)限。6、確定最佳執(zhí)行計劃。當(dāng)語句與語法都沒有問題, 權(quán)限也匹配的話, 服務(wù)器進程還是不會直接對數(shù)據(jù)庫文件進 行查詢。服務(wù)器進程會根據(jù)一定的規(guī)則, 對這條語句進行優(yōu)化。不過要注意,這個優(yōu)化是有 要大大地大于服務(wù)器進程的自我優(yōu)化。 所以, 一般在應(yīng)用軟件開發(fā)的時候, 數(shù)據(jù)庫的優(yōu)化是 少不了的。限的。一般在應(yīng)用軟件開發(fā)的過程中,需要對數(shù)據(jù)庫的sql 語言進行優(yōu)化,這個優(yōu)化的作用當(dāng)服務(wù)器進程的優(yōu)化器確定這條查詢語句的最佳

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論