綁定變量的一些知識_第1頁
綁定變量的一些知識_第2頁
綁定變量的一些知識_第3頁
綁定變量的一些知識_第4頁
綁定變量的一些知識_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、綁定變量的一些知識第一部分 術語第二部分 綁定類型 手工綁定    JAVA    PLSQL    SQL 自動綁定    cursor_sharing (不推薦)我們對相似的,只有某些數值變化的語句改寫成完全相同的文本,稱其為綁定。因為ORACLE數據庫設計特性之一就是不管何時,只要可能,就盡量重用執(zhí)行計劃。例如:如果是SQL查詢,ORACLE首先通過HASH運算到數據庫的共享池的相應地址下去查找是否已經有該語句的解析信息(包括執(zhí)行計劃,權限,用戶信息

2、等),如果發(fā)現了那個查詢,且那個查詢能重用(可共享),則可以準備運行。如果ORACLE沒有發(fā)現那個查詢,它就必須經歷完全分析這個查詢、優(yōu)化此執(zhí)行計劃、進行安全檢查等費勁的過程(hard parse),這不僅消耗了大量的CPU(CPU的處理時間比執(zhí)行查詢本身多了很多倍),而且在相當長的時間內鎖住了一部分庫緩存。等待關閉庫緩存的時間越長,系統(tǒng)慢慢趨于停止。我們在搜索LIBRARY CACHE時存在三種可能: 原先同樣的語句執(zhí)行過,可以重用。 這個語句曾經的解析,但信息被擠出了共享池。需要reload 這個語句是第一次運行,那么就需要完全解析該語句。硬解析對于相似的語句,我們如果能夠重用在

3、共享池中以前生成的解析,將會減少重新解析過程所花的時間及共享池的LATCH的競爭,這就是我們一直提到的綁定這個概念。采用綁定的方式將原來在變化的常量改寫成不變的綁定變量名,實現完全相同的語句。比如相似的語句只有數字常量部分是不同的,我們如果把后面的常量替換成一個變量前面常量1和2被一個相同的綁定變量名:b代替,那么這兩個語句的字符就完全相同了。所以經過HASH運算后得到的共享池地址也肯定相同,常見的應用環(huán)境下如何綁定呢?手工綁定 (應用級別) JAVA雖然這里我們用?問號綁定了三個參數,但是由于每次調用都要執(zhí)行conn.prepareCall等,會造成重復構造元數據。(不推薦上圖寫法)正確寫法

4、: PLSQLv_sal是綁定變量,而ORACLE接受的SQL串永遠是用new_sal。這里我們共享了相同的游標,但還不是最佳。因為這種語句只能解決軟解析的功能,不能解決軟軟解析的功能,還有更優(yōu)化的session_cached_cursor 未綁定EXECUTE IMMEDIATE'UPDATE emp SET sal '|new_sal; 系統(tǒng)綁定(cursor_sharing=FORCESIMILAR)在10G前,這兩個參數還不成熟,容易產生BUG10G比較穩(wěn)定,但是也不建議冒險使用。用戶發(fā)送SQL語句后的LIBRARY參與

5、的步驟如下(解析詳細步驟): 語法檢查階段1 對SQL語句進行語法檢查,看是否有語法錯誤2 到數據字典里校驗SQL語句涉及的對象和列是否都存在3 將對象進行名稱轉換:比如將同名詞翻譯成實際的對象4 檢查游標里用戶是否具有訪問SQL語句里所引用的對象的權限 解析階段5 對SQL文本進行HASH運算6. 如果文本完全匹配,則需要檢查對象相關性 因為有可能SQL對象與LIBRARY CACHE的同名對象屬于不同的OWNER,如果程序使用了很多用戶,則盡量使用在對象前加OWNER前綴,來減少匹配對象相關性7. 即使對象匹配,綁定文本也一樣了,也不能確保做軟解析 有下面幾個因素會造成不能軟解析 綁定名不一樣 綁定數據類型和綁定變量長度不一樣8. 語言、優(yōu)化、排序環(huán)境不一樣9. 通過優(yōu)化器創(chuàng)建一個最優(yōu)的執(zhí)行計劃10. 將該游標所產生的執(zhí)行計劃、SQL文本等裝載進library cache的若干個

溫馨提示

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

評論

0/150

提交評論