新聞中心
http://database./art/200511/12457.htm在Oracle SQL語句的執(zhí)行過程中,Oracle數(shù)據(jù)庫的內(nèi)部分析原理,即 ,當某個用戶***次提交關于Oracle SQL表達式的時候,Oracle就會將這SQL語句進行Hard parse,這過程有點像程序編譯,檢查語法、表名、字段名等相關信息(如下圖),這過程會花比較長的時間,因為它要分析語句的語法與語義。

成都創(chuàng)新互聯(lián)公司企業(yè)建站,10余年網(wǎng)站建設經(jīng)驗,專注于網(wǎng)站建設技術,精于網(wǎng)頁設計,有多年建站和網(wǎng)站代運營經(jīng)驗,設計師為客戶打造網(wǎng)絡企業(yè)風格,提供周到的建站售前咨詢和貼心的售后服務。對于成都網(wǎng)站建設、網(wǎng)站建設中不同領域進行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準市場調(diào)研,為客戶提供的解決方案。
然后獲得***化后的執(zhí)行計劃(sql plan),并在內(nèi)存中分配一定的空間保存該語句與對應的執(zhí)行計劃等信息。
當用戶第二次請求或多次請求時,Oracle會自動找到先前的語句與執(zhí)行計劃,而不會進行Hard parse,而是直接進行Soft parse(把語句對應的執(zhí)行計劃調(diào)出,然后執(zhí)行),從而減少數(shù)據(jù)庫的分析時間。
注意的是:Oracle中只能完全相同的語句,包大小寫、空格、換行都要求一樣時,才會重復使用以前的分析結果與執(zhí)行計劃。
分析過程如下圖:
對于大量的、頻繁訪問的Oracle SQL語句,如果不采用Bind 變量的方式,哪Oracle會花費大量的Shared latch與CPU在做Hard parse處理,所以,要盡量提高語句的重用率,減少語句的分析時間,通過了解OracleSQL語句的分析過程可以明白Oracle的內(nèi)部處理邏輯,并在設計與實現(xiàn)上避免。
在用JDBC或其它持久化數(shù)據(jù)(如Hibernate,JDO等)操作時,盡量用占位符(?)
網(wǎng)站標題:OracleSQL語句的執(zhí)行過程詳解
網(wǎng)頁路徑:http://www.fisionsoft.com.cn/article/dpseohd.html


咨詢
建站咨詢
