astingracle執(zhí)行sql語句過程
1.parse(解析)
軟解析/硬解析(第一次執(zhí)行sql需要進行硬解析)
1)從共享池的庫緩沖區(qū)搜索,確定該語句是否曾經(jīng)執(zhí)行過,凡是執(zhí)行過的sql語句,oracle會使用hash函數(shù)進行計算,產(chǎn)生一個很小的文本記錄。如果是第一次執(zhí)行,則進入第二步;
2)檢查語法、權(quán)限等等(權(quán)限的信息是存放在oracle的數(shù)據(jù)字典中),oracle先從共享池的數(shù)據(jù)字典緩沖區(qū)中搜索,如果沒有找到,再從數(shù)據(jù)文件(system表空間的數(shù)據(jù)文件)中讀取,然后存放在共享池的數(shù)據(jù)字典緩沖區(qū)中,以便共享;
3)分析過程中,對訪問到的表進行鎖操作,目的是為了保護表的結(jié)構(gòu)不被修改;
4)oracle優(yōu)化器會根據(jù)數(shù)據(jù)的存儲結(jié)構(gòu)(表的存儲結(jié)構(gòu)、索引)統(tǒng)計信息等。計算各種讀取的代價,選擇一條最佳路徑(代價最低),生成執(zhí)行計劃,同時編譯并存儲在共享池的庫緩沖區(qū)中,以便共享。
2.bind(綁定變量)
3.execute(執(zhí)行)
先從數(shù)據(jù)緩沖區(qū)查找數(shù)據(jù),如果沒有,再從數(shù)據(jù)文件中讀取數(shù)據(jù)到數(shù)據(jù)緩沖區(qū)、保持,以便共享。
4.fetch
把結(jié)果返回給用戶。
posted @
2012-09-27 21:39 kxbin 閱讀(677) |
評論 (1) |
編輯 收藏