oracle分析技巧 Oracle硬解析與軟解析分別是什么?
Oracle硬解析與軟解析分別是什么?Oracle中的每一條SQL語句在執(zhí)行前都需要進(jìn)行解析,分為軟解析和硬解析。Oracle中的SQL語句有兩種,一種是DDL語句(數(shù)據(jù)定義語言),從不共享,即每次執(zhí)
Oracle硬解析與軟解析分別是什么?
Oracle中的每一條SQL語句在執(zhí)行前都需要進(jìn)行解析,分為軟解析和硬解析。Oracle中的SQL語句有兩種,一種是DDL語句(數(shù)據(jù)定義語言),從不共享,即每次執(zhí)行都需要硬解析。還有一類是DML語句(數(shù)據(jù)操作語言),會根據(jù)情況選擇要么硬解析,要么軟解析。要么將SQL文本加載到庫緩存的堆中。
1.艱難的分析
硬解析通常包括以下過程:
1)檢查SQL語句的語法,看看是否有語法錯誤。比如有select from where之類的拼寫錯誤,如果有語法錯誤,則推導(dǎo)解析過程;
2)通過數(shù)據(jù)字典(行緩存)檢查SQL語句涉及的對象和列是否存在。如果不存在,則推導(dǎo)解析過程。
3)檢查SQL語句的用戶是否對涉及的對象有權(quán)限。如果否,則推斷解決方案;
4)通過優(yōu)化器創(chuàng)建最佳執(zhí)行計劃。這個過程會根據(jù)數(shù)據(jù)字典中對象的統(tǒng)計信息來計算多個執(zhí)行計劃的代價,從而得到一個最優(yōu)的執(zhí)行計劃。這一步涉及大量的數(shù)據(jù)操作,會消耗大量的CPU資源;(庫緩存的主要目的是通過軟解析減少這一步);
5)將游標(biāo)生成的執(zhí)行計劃和SQL文本加載到庫緩存中的堆中。
2.軟解析
所謂軟解析是因?yàn)樵趲炀彺嬷写嬖谖谋鞠嗤腟QL語句,所以對這條SQL語句的解析可以省去硬解析中的一步多步。從而節(jié)省了大量的資源消耗。
3.軟分析
所謂軟解析,就是不解析。設(shè)置session_cached_cursors參數(shù)時,當(dāng)一個會話第三次執(zhí)行同一個SQL語句時,該SQL語句的游標(biāo)信息將被傳輸?shù)皆摃挼腜GA中。這樣,s
Oracle分析函數(shù)RANK()?
Rank是oracle分析函數(shù)之一,主要用法是Rank()over(partition by XX or der by ZZ desc),一般用于分組排序。與group by XX order by ZZ不同,它不影響現(xiàn)有數(shù)據(jù)。
例如:xx zz1 21 31 42 22 6然后選擇xx,zz,ra。表中的NK()over(partition by xx or der by ZZ)aa的結(jié)果是xx zzaa 12132143221262 partition by,所以你不 不用寫了,和order by的排序結(jié)果一樣,只是會有序號等用途,還有很多分析功能。這個你可以在網(wǎng)上找,里面有很多例子。希望對你有幫助。