版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1、優(yōu)化前前提應(yīng)用系統(tǒng)方方案制定準(zhǔn)準(zhǔn)確,對應(yīng)應(yīng)用系統(tǒng)運(yùn)運(yùn)行環(huán)境分分析合理、正確,在在數(shù)據(jù)庫服服務(wù)器性能能、存儲空空間、網(wǎng)絡(luò)絡(luò)帶寬等方方面的配置置能夠達(dá)到到系統(tǒng)運(yùn)行行要求. 2、優(yōu)化目目標(biāo)響應(yīng)時間與與吞吐量平平衡臨界資源2.1 響響應(yīng)時間與與吞吐量平平衡根據(jù)應(yīng)用類類型的不同同,性能優(yōu)優(yōu)化的目標(biāo)標(biāo)不同:在線事務(wù)處處理系統(tǒng)OOLTP)把把吞吐量定定義為性能能指標(biāo);決策支持系系統(tǒng)(DSSS)把響響應(yīng)時間定定義為性能能指標(biāo)。響應(yīng)時間響應(yīng)時間=服務(wù)時間間+等待時間間系統(tǒng)吞吐量量系統(tǒng)吞吐量量指在給定定的時間內(nèi)內(nèi)所完成的的工作量。有以下兩兩種技術(shù):以相同的資資源來完成成更多的工工作(減少少服務(wù)時間間);通過減
2、少整整個響應(yīng)時時間來更快快完成工作作。等待時間當(dāng)競爭增強(qiáng)強(qiáng)的時候,某某個任務(wù)的的服務(wù)時間間也許保持持不變,但但它的等待待時間將增增長。我們開發(fā)的的系統(tǒng)一般般為OLTTP和DSS的復(fù)復(fù)合系統(tǒng),側(cè)側(cè)重于OLLTP,在在硬件允許許的情況下下最好能夠夠?qū)⑦\(yùn)行數(shù)數(shù)據(jù)庫、分分析數(shù)據(jù)庫庫分離。2.2 臨臨界資源諸如 CPPU、內(nèi)存存、I/OO容量、網(wǎng)網(wǎng)絡(luò)帶寬等等資源,都都是減少時時間的關(guān)鍵鍵因素。性性能好壞取取決于以下下因素:可用資源的的數(shù)量需要該資源源的客戶方方的數(shù)目客戶方等待待資源所消消耗的時間間客戶保持資資源的時間間長短隨著請求單單元的增加加,服務(wù)時時間也增加加。為了處處理這種情情形,用戶戶可以選擇擇
3、:通過限制請請求的速率率,從而維維護(hù)可接受受響應(yīng)時間間還可通過增增加資源數(shù)數(shù)目,如CCPU和硬硬盤(增加加資源的前前提是應(yīng)用用系統(tǒng)設(shè)計計良好,并并且已經(jīng)做做了充分的的優(yōu)化)3、優(yōu)化階階段從實際做的的項目過程程來看,除除了系統(tǒng)安安裝優(yōu)化外外,系統(tǒng)優(yōu)優(yōu)化往往都都是在系統(tǒng)統(tǒng)實施、運(yùn)運(yùn)行時才考考慮,其實實到這階段段做系統(tǒng)優(yōu)優(yōu)化的局限限性比較大大,因為系系統(tǒng)架構(gòu)設(shè)設(shè)計都成型型、固化,大大幅度調(diào)整整設(shè)計的代代價非常昂昂貴,一般般只能在局局部領(lǐng)域做做優(yōu)化,只只能通過重重新分配內(nèi)內(nèi)存或優(yōu)化化I/O來或或多或少地地提高性能能,實際上上優(yōu)化應(yīng)該該貫穿系統(tǒng)統(tǒng)設(shè)計、開開發(fā)、安裝裝、測試、運(yùn)行整個個過程。3.1 設(shè)設(shè)計
4、階段為了達(dá)到最最佳的效果果,優(yōu)化工工作應(yīng)當(dāng)從從設(shè)計階段段進(jìn)行,而而不是在系系統(tǒng)實施后后進(jìn)行。在數(shù)據(jù)庫設(shè)設(shè)計階段,個個人認(rèn)為需需要注意如如下幾個方方面:業(yè)務(wù)對象不不能建立在在系統(tǒng)表空空間;索引表空間間和業(yè)務(wù)表表空間分開開;將LOB類類型的字段段與其它的的類型分開開;根據(jù)應(yīng)用系系統(tǒng)功能確確定是否要要采用冗余余字段;正確的主鍵鍵字段的選選擇,建議議采用數(shù)字字,不推薦薦使用復(fù)合合主鍵;3.2 開開發(fā)、測試試階段在開發(fā)實現(xiàn)現(xiàn)階段,個個人認(rèn)為需需要注意如如下幾個方方面:執(zhí)行sqll使用變量量綁定的方方式,盡可可能的保留留在共享內(nèi)內(nèi)存中,提提高sqll命中率;多表關(guān)聯(lián)查查詢時采用用有效的連連接順序;盡可能的
5、降降低客戶端端和服務(wù)器器的網(wǎng)絡(luò)數(shù)數(shù)據(jù)交互,某某個業(yè)務(wù)功功能點需要要頻繁和數(shù)數(shù)據(jù)庫交互互的,建議議采用存儲儲過程、臨臨時表實現(xiàn)現(xiàn);根據(jù)查詢條條件建立必必要的索引引,查詢條條件中使用用oraccle函數(shù)數(shù)建立相對對應(yīng)的函數(shù)數(shù)索引,數(shù)據(jù)值范范圍較小的的采用位圖圖索引多張表關(guān)聯(lián)聯(lián)查詢時,有有時可采用用先查詢符符合條件對對應(yīng)的表中中關(guān)鍵字,然然后通過關(guān)關(guān)鍵字再查查詢對應(yīng)表表中相關(guān)信信息;頻繁訪問,較較少更新的的數(shù)據(jù)量較較小的表信信息可采用用緩存的方方式;在實現(xiàn)批量量更新、插插入時,要要采用jddbc批量執(zhí)執(zhí)行方法,并并且調(diào)整對對應(yīng)的feetchssize參參數(shù)。在測試階段段,應(yīng)該模模擬實際運(yùn)運(yùn)行環(huán)境,測
6、測試出相關(guān)關(guān)性能較差差的功能點點。因為在設(shè)計計、開發(fā)階階段往往因因為并發(fā)用用戶少、數(shù)數(shù)據(jù)量小,很很多性能問問題顯現(xiàn)不不出來,如如果軟件測測試充分,很很多性能問問題都可以以顯現(xiàn)出來來,現(xiàn)在有有很多優(yōu)秀秀的軟件測測試工具,如如LoaddRunnner、Robeert在做做壓力測試試方面都比比較方便、優(yōu)秀。盡量將系統(tǒng)統(tǒng)因程序設(shè)設(shè)計、編碼碼不當(dāng)導(dǎo)致致的性能問問題暴露在在測試階段段。3.3 安安裝階段一般在安裝裝生產(chǎn)數(shù)據(jù)據(jù)庫時,我我們根據(jù)系系統(tǒng)最早的的規(guī)劃,集集合軟、硬硬件環(huán)境,需需要調(diào)整操操作系統(tǒng)以以及數(shù)據(jù)庫庫參數(shù),3.3.11操作系統(tǒng)統(tǒng)交換區(qū)交換區(qū)是OOraclle的一項項基本的要要求??梢砸愿鶕?jù)O
7、rraclee的發(fā)行要要求來確定定。一般交交換區(qū)大小小的要求是是該服務(wù)器器內(nèi)存的22倍至4倍之間,建建議是內(nèi)存存的4倍3.3.22操作系統(tǒng)統(tǒng)內(nèi)核參數(shù)數(shù)shmmaax 共享內(nèi)存段段,建議設(shè)設(shè)大點, 達(dá)到最大大SGAshmmiin 最小的共享享內(nèi)存段.shmmnni 共享內(nèi)存標(biāo)標(biāo)志符的數(shù)數(shù)量.shmseeg 一個進(jìn)程可可分配的最最大內(nèi)存段段數(shù).shmalll 最大可允許許的內(nèi)存數(shù)數(shù),比SGGA還要大大.semmnns信號量,跟跟ORACCLE的PPROCEESS數(shù)有有關(guān).semmssl 一個信號量量中最大的的信號量數(shù)數(shù).3.3.33 oraacle 文件設(shè)置置當(dāng)服務(wù)器平平臺已完成成操作系統(tǒng)統(tǒng)的安裝
8、后后,就應(yīng)該該開始認(rèn)真真的考慮下下面的問題題:是否采用裸裸設(shè)備實際應(yīng)用的的生產(chǎn)系統(tǒng)統(tǒng)基本都是是采用裸設(shè)設(shè)備,使用用裸設(shè)備對對于讀寫頻頻繁的數(shù)據(jù)據(jù)庫應(yīng)用來來說,可以以極大地提提高數(shù)據(jù)庫庫系統(tǒng)的性性能。安裝點的考考慮Oraclle的安裝裝點就是指指數(shù)據(jù)文件件、日志文文件和控制制文件的安安置路徑,為為了使系統(tǒng)統(tǒng)在以后運(yùn)運(yùn)行性能達(dá)達(dá)到優(yōu)化,建建議將數(shù)據(jù)據(jù)文件、日日志文件和和控制文件件的安置路路徑與數(shù)據(jù)據(jù)庫系統(tǒng)存存放在不同同的路徑上上。最好將將數(shù)據(jù)文件件、日志文文件和控制制文件分別別存放在不不同的路徑徑。SYSTEEM表空間間對應(yīng)數(shù)據(jù)據(jù)文件在自定義安安裝會話中中,建議你你根據(jù)需要要設(shè)置syystemm表
9、空間所所對應(yīng)的數(shù)數(shù)據(jù)文件的的大小。一一般要設(shè)置置比默認(rèn)值值的2倍。該數(shù)數(shù)據(jù)文件的的大小最好好是在3000MB至至500MMB間。因因為數(shù)據(jù)文文件太小不不利于系統(tǒng)統(tǒng)的運(yùn)行。臨時表空間間對應(yīng)的數(shù)數(shù)據(jù)文件臨時表空間間對應(yīng)的數(shù)數(shù)據(jù)文件可可以根據(jù)將將來系統(tǒng)存存放的應(yīng)用用的處理情情況來定。比如系統(tǒng)統(tǒng)將來可能能要經(jīng)常進(jìn)進(jìn)程排序處處理,則需需要設(shè)置較較大的臨時時表空間,也也可能需要要再建立新新的臨時表表空間。這這里建議臨臨時表空間間的數(shù)據(jù)文文件在1000MB至至300MMB左右?;貪L段表空空間對應(yīng)的的數(shù)據(jù)文件件9i回滾表表空間都是是系統(tǒng)管理理,初始值值也是根據(jù)據(jù)系統(tǒng)事務(wù)務(wù)量預(yù)估計計的值,實實際到運(yùn)行行階段如果
10、果系統(tǒng)常出出現(xiàn)oraa-015555錯誤誤的時候,可可能就需要要增加回滾滾表空間的的大小。日志文件的的大小日志文件的的大小對于于Oraccle系統(tǒng)統(tǒng)的運(yùn)行也也是相當(dāng)重重要。默認(rèn)認(rèn)值是太小小。實際根根據(jù)事務(wù)繁繁忙預(yù)估計計日志大小小,沒有固固定的具體體值范圍,建建議重做日日志切換時時間不能過過短也不能能過長,一一般在20040分鐘左左右。該參參數(shù)可以在在系統(tǒng)運(yùn)行行期間根據(jù)據(jù)數(shù)據(jù)庫系系統(tǒng)日志切切換時間重重新調(diào)整,控控制文件的的大小。數(shù)據(jù)庫塊的的大小如果你的應(yīng)應(yīng)用系統(tǒng)是是OLTPP的話,可可以采用較較小的數(shù)據(jù)據(jù)庫塊。如如果是DSSS類型的的應(yīng)用系統(tǒng)統(tǒng),則可以以設(shè)置較大大的數(shù)據(jù)庫庫塊,目前前Oraccl
11、e產(chǎn)品品所允許的的數(shù)據(jù)庫塊塊可以是22KB至64KBB之間。無無論你選擇擇較大的塊塊或較小的的塊,它的的值都必須須是2的整數(shù)倍倍,比如22048,40966,81992等。但但需要注意意的是,如如果操作系系統(tǒng)為644位,則可可選擇較大大的塊。字符集的選選擇字符集是OOraclle系統(tǒng)專專門支持的的一項技術(shù)術(shù)。詳細(xì)請請參考另外外的章節(jié)。一般不要要與另外的的已經(jīng)存放放的Oraacle系系統(tǒng)的字符符集產(chǎn)生沖沖突即可。但如果你你的環(huán)境是是一個新的的平臺,不不需要與其其它平臺進(jìn)進(jìn)行數(shù)據(jù)交交換的話,建建議選擇默默認(rèn)的字符符集。這樣樣可以利于于將來的修修改。3.3.44數(shù)據(jù)庫啟啟動參數(shù)sga_mmax_ss
12、ize例程存活期期間所占用用的系統(tǒng)全全局區(qū)的最最大大小,一一般為物理理內(nèi)存的11/2-11/3shareed_poool_ssize指定共享池池的大小,共共享池包含含:共享游游標(biāo)、存儲儲的過程、控制結(jié)構(gòu)構(gòu)和并行執(zhí)執(zhí)行消息緩緩沖區(qū)等對對象,較大大的值用于于改善多用用戶系統(tǒng)的的性能,該該參數(shù)調(diào)整整不能過大大,會增加加管理負(fù)擔(dān)擔(dān)和lattch 的的開銷,一一般是在2200M-500MM左右db_caache_sizee該參數(shù)指定定數(shù)據(jù)緩沖沖區(qū)的大小小,原則上上時越大越越好,取代代了8i中中的db_blocck_siize * db_blocck_buufferrslog_bbuffeer重做日志緩緩
13、沖區(qū)大小小,該參數(shù)數(shù)設(shè)置大沒沒有意義,Oracle推薦log_buffer最大為cpu_count乘以128KB或512KB中最大值proceessess系統(tǒng)用戶進(jìn)進(jìn)程的最大大數(shù)量,該該參數(shù)設(shè)置置為系統(tǒng)最最繁忙時估估計并發(fā)用用戶數(shù)largee_poool_siize 如果不設(shè)置置MTS,通通常在 RRMAN 、OPQQ 會使用用到,但是是在10MM -550M應(yīng)該該差不多了了。可以考考慮為 ssessiion * (soort_aarea_sizee + 22M)。Java_pooll_sizze 它用于存放放javaa代碼,若若不使用jjava,建建議設(shè)置為為30Mpga_aaggreega
14、tee_tarrget程序全局區(qū)區(qū)大小,11.對于OOLTP系系統(tǒng)PGAA_AGGGREGAATE_TTARGEET = ( * 80%) * 200% 2.對于DSSS系統(tǒng)PPGA_AAGGREEGATEE_TARRGET = ( * 800%) * 50%timedd_staatisttics建議將tiimed_stattistiics 設(shè)設(shè)置為trrue,否否則無法查查看到準(zhǔn)確確的統(tǒng)計信信息(9ii版本后的的設(shè)置為ttrue對對系統(tǒng)性能能影響較小小,千分之之一)上述參數(shù)基基本是初始始估計值,在在運(yùn)行階段段可能會根根據(jù)實際運(yùn)運(yùn)行情況再再調(diào)整。3.4 運(yùn)運(yùn)行階段這也是實際際優(yōu)化工作作最多的階
15、階段,個人人認(rèn)為運(yùn)行行階段優(yōu)化化的真正工工作是解決決因為實際際運(yùn)行數(shù)據(jù)據(jù)庫參數(shù)設(shè)設(shè)置不當(dāng)、表、索引引統(tǒng)計信息息不準(zhǔn)確,執(zhí)執(zhí)行路徑不不當(dāng)?shù)葘?dǎo)致致的性能問問題。優(yōu)化工作應(yīng)應(yīng)該作為日日常工作的的一部分,而而不是等到到用戶反映映系統(tǒng)慢,系系統(tǒng)宕機(jī)時時才去優(yōu)化化,那時已已經(jīng)是亡羊羊補(bǔ)牢,為為時有點晚晚,從實際際項目來看看,往往都都是應(yīng)用程程序編寫的的sql、表、索引引統(tǒng)計信息息不準(zhǔn)確,執(zhí)執(zhí)行路徑不不當(dāng)而導(dǎo)致致的性能問問題,個人人認(rèn)為一般般的sqll調(diào)優(yōu)還是是有章可循循的,基本本三步: 查找、分分析、優(yōu)化化。3.4.11查找3.4.11.1 非非實時查找找查找工具常常用的就是是stattspacck,該工
16、工具的安裝裝、使用比比較簡便。腳本路徑徑$orraclee_homme/rrdbmss/admmin目錄錄下,常用用腳本如下下:spdroop.sqql 刪除腳本,丟丟棄統(tǒng)計分分析的相關(guān)關(guān)包、視圖圖、表、同同義詞等對對象(首次次創(chuàng)建無須須執(zhí)行)spcreeate.sql創(chuàng)建腳本,生生成統(tǒng)計分分析的相關(guān)關(guān)包、視圖圖、表、同同義詞等對對象(首次次執(zhí)行前建建議創(chuàng)建一一個統(tǒng)計用用的表空間間)sprepport.sql 生成報告記記錄sqll ,生成成的報告文文件在系統(tǒng)統(tǒng)當(dāng)前路徑徑下,文件件名默認(rèn)為為:sp_開始快照照號_結(jié)束束快照號.lst spreppsql.sql 分析相關(guān)快快照中的ssql執(zhí)行行
17、計劃。sppurrge.ssql 刪除在兩個個快照號之之間包括本本身的所有有統(tǒng)計分析析數(shù)據(jù)。sptruunc.ssql 截取staatspaack統(tǒng)計計分析的相相關(guān)數(shù)據(jù) 在統(tǒng)計分分析的對應(yīng)應(yīng)用戶peerfsttat下執(zhí)執(zhí)行執(zhí)行時間:統(tǒng)計時生成成兩次快照照,一般在在30-440分鐘左左右執(zhí)行方方法:用ssys登陸陸sqlpplus后后間隔對應(yīng)應(yīng)時間執(zhí)行行兩次 eexec stattspacck.snnap;統(tǒng)計結(jié)果視視圖:statss$snaapshoot快照相關(guān)信信息; sselecct snnap_iid,snnap_ttime fromm staats$ssnapsshot;statss$
18、sqlltextt快照統(tǒng)計ssql信息息,查詢統(tǒng)統(tǒng)計sqll(staatspaack報告告中sqll過長會被被截掉)sselecct sqql_teext ffrom statts$sqqltexxt whhere hashh_vallue=查查詢值 aand llast_snapp_id=begiin_snnap_iid orrder by ppiecee;3.4.11.2 實實時查找如果需要實實時的查找找性能隱患患的相關(guān)ssql,通通過v$ssessiion_wwait,v$seessioon,v$sqlttext_withh_newwlinees三張動動態(tài)視圖就就可以基本本查找到相相關(guān)的
19、sqql,腳本本如下:selecct sqql_teext ,sw.eeventt fromm v$ssqlteext_wwith_newlliness st,v$seessioon see,v$ssessiion_wwait sw wherre stt.adddresss=se.sql_addrress and st.hhash_valuue=see.sqll_hassh_vaalueaand sse.siid =ssw.siid annd (ssw.evvent = bbuffeer buusy wwaitss orrsw.eeventt = enquueue orssw.evvent =
20、 ffree bufffer wwaitss orrsw.eeventt = globbal ccachee freeelisst waait orsww.eveent = laatch freee orrsw.eeventt = log bufffer sspacee orrsw.eeventt = paraallell queery qqref latcch oorsw.evennt = pippe puut oorsw.evennt = wriite ccompllete waitts oorsw.evennt liike librrary cachhe% orsww.eveent ll
21、ike logg fille swwitchh% ) ordder bby stt.hassh_vaalue,st.ppiecee; 3.4.22分析分析報告?zhèn)€個人一般主主要關(guān)注ttop 55 eveent以及及相關(guān)的讀讀邏輯塊、物理塊、執(zhí)行次數(shù)數(shù)較多的ssql,實實際上更多多的側(cè)重在在sql分分析上一般常見的的top 5 事件件如下:db fiile ssequeentiaal reead等待事件,一一般問題出出現(xiàn)在讀索索引上,建建議將業(yè)務(wù)務(wù)表空間和和索引表空空間分開存存儲在不同同的物理卷卷下,以提提高磁盤的的I/O性性能。db fiile sscattteredd reaad建議程序中中盡
22、量避免免使用全表表掃描的語語句,或者者可以增大大db_ffile_multtibloock_rread_counnt的值,提提高全表掃掃描一次讀讀取數(shù)據(jù)塊塊的速度,減減少磁盤II/O。db fiile pparalllel writte說明DBWWR進(jìn)程正正等待把緩緩沖區(qū)的內(nèi)內(nèi)容并行寫寫入數(shù)據(jù)文文件中去,等待將一一直持續(xù)到到所有的II/O全部部完成。建建議增大初初始化參數(shù)數(shù)中的dbb_wriiter_proccessees的值。log ffile syncc說明任何時時候一個事事物提交時時,它將通通知LGWWR將LOOG_BUUFFERR寫入日志志文件,如如果此部分分占用時間間較長,應(yīng)應(yīng)減少C
23、OOMMITT的次數(shù),建建議將重做做日志放到到較快的磁磁盤上進(jìn)行行存儲。log ffile paraallell wriite等待事件,和和上面一樣樣建議將重重做日志放放到較快的的磁盤上進(jìn)進(jìn)行存儲。提取出sqql以后就就可以進(jìn)行行分析,主主要采用分分析執(zhí)行計計劃的方式式。個人一一般喜歡如如下的方式式進(jìn)行分析析:生成計劃表表(初次)以sys用用戶執(zhí)行腳腳本$ooraclle_hoome/rdbmms/addmin/utlxxplann.sqll,創(chuàng)建公用同同義詞,方方便在每個個用戶下生生成執(zhí)行計計劃(初次次)Creatte puublicc synnonymm plaan_taable for
24、plann_tabble;Grantt alll on plann_tabble tto puublicc;每次分析時時設(shè)置sqqlpluus環(huán)境變變量Set ttiminng onnSet aautottracee traaceonnly查看相關(guān)ssql執(zhí)行行計劃其他客戶端端軟件pll/sqll devvelopper,ttoad 分析執(zhí)行行計劃都比比較方便。執(zhí)行計劃路路徑解釋Full Tablle Sccans全表掃描、無可用索索引Indexx Uniique Scanns索引唯一掃掃描IndexxRangge Sccans索引范圍掃掃描IndexxRangge Sccans Descce
25、ndiing索引降序范范圍掃描Indexx Skiip Sccans索引跳躍掃掃描Full Scanns全索引掃描描Fast Fulll Inddex SScanss快速全索引引掃描Indexx Joiins索引連接Bitmaap Jooins位圖連接常見連接解解釋:Nesteed Looops會循環(huán)外表表(驅(qū)動表表),逐個個比對和內(nèi)內(nèi)表的連接接是否符合合條件?;贑osst的Orraclee優(yōu)化器(CBO)會自動選選擇較小的的表做外表表。優(yōu)點:在驅(qū)驅(qū)動表比較較小,內(nèi)表表比較大,而而且內(nèi)外表表的連接列列有索引的的時候比較較好,嵌套套循環(huán)連接接比其他連連接方法有有優(yōu)勢,它它可以快速速地從結(jié)果果
26、集中提取取第一批記記錄,而不不用等待整整個結(jié)果集集完全確定定下來。缺缺點:如果果內(nèi)部行源源表(讀取取的第二張張表(內(nèi)表表)已連接接的列上不不包含索引引,或者索索引不是高高度可選時時, 嵌套套循環(huán)連接接效率是很很低的。SORT- merrge JJOIN將兩表的連連接列各自自排序然后后合并,只只能用于連連接列相等等的情況,適適合兩表大大小相若的的情況 優(yōu)點:在缺缺乏數(shù)據(jù)的的選擇性或或者可用的的索引時,或者兩個個源表都過過于龐大(超過記錄錄數(shù)的5%)時,排排序合并連連接將比嵌嵌套循環(huán)連連更加高效效。局限性性:排列合合并連接只只能用于等等價連接排排列合并連連接需要臨臨時的內(nèi)存存塊,以用用于排序( 如
27、果SSORT_AREAA_SIZZE設(shè)置得得太小的話話)。這將將導(dǎo)致在臨臨時表空間間占用更多多的內(nèi)存和和磁盤I/OHASH JOINN在其中一表表的連接列列上作散列列,因此只只有另外一一個表做排排序合并,只有基于代價的優(yōu)化器才可以使用哈希連接。當(dāng)缺少有用用的索引時時,哈希連連接比嵌套套循環(huán)連接接更加有效效。哈希連連接可能比比排序合并并連接更快快,哈希希連接使用用內(nèi)存資源源,并且當(dāng)當(dāng)用于排序序內(nèi)存不足足時,會增增加臨時表表空間的II/O(這這將使這種種連接方法法速度變得得極慢3.4.33優(yōu)化 Oraccle運(yùn)行行階段優(yōu)化化的更多是是對sqll的優(yōu)化,個個人理解工工作主要是是: 分析析性能較差差s
28、ql;調(diào)整性能較較差的sqql的實現(xiàn)現(xiàn)方式,協(xié)協(xié)助程序員員更改相關(guān)關(guān)程序;對相關(guān)的查查詢條件建建立合理的的索引;根據(jù)需要合合理的更新新表、索引引的程序信信息;3.4.33.1 ooraclle 優(yōu)化化器 優(yōu)化器優(yōu)優(yōu)化方式Oraclle的優(yōu)化化器共有兩兩種的優(yōu)化化方式,即即基于規(guī)則則的優(yōu)化方方式(Ruule-BBasedd Opttimizzatioon,簡稱稱為RBOO)和基于于代價的優(yōu)優(yōu)化方式(Costt-Bassed OOptimmizattion,簡稱為CCBO)。A、RBOO方式:優(yōu)優(yōu)化器在分分析SQLL語句時,所遵循的的是Oraacle內(nèi)內(nèi)部預(yù)定的的一些規(guī)則則。比如我我們常見的的,當(dāng)
29、一個個wherre子句中中的一列有有索引時去去走索引。B、CBOO方式:依依詞義可知知,它是看看語句的代代價(Coost)了了,這里的的代價主要要指Cpuu和內(nèi)存。優(yōu)化器在在判斷是否否用這種方方式時,主主要參照的的是表及索索引的統(tǒng)計計信息。統(tǒng)統(tǒng)計信息給給出表的大大小、有少少行、每行行的長度等等信息。這這些統(tǒng)計信信息起初在在庫內(nèi)是沒沒有的,是是你在做aanalyyze后才才出現(xiàn)的,很多的時時侯過期統(tǒng)統(tǒng)計信息會會令優(yōu)化器器做出一個個錯誤的執(zhí)執(zhí)行計劃,因些我們們應(yīng)及時更更新這些信信息。在OOraclle8及以以后的版本本,Oraacle推推薦用CBBO的方式式。 優(yōu)化器的的優(yōu)化模式式(Optterm
30、iizer Modee)Rule:走基于規(guī)規(guī)則的方式式。Choosse:默認(rèn)認(rèn)的情況下下Oraccle用的的是這種方方式,不建建議修改該該參數(shù)。指指的是當(dāng)一一個表或索索引有統(tǒng)計計信息,則走CBOO的方式,如果表或或索引沒統(tǒng)統(tǒng)計信息,表又不是是特別的小小,而且相應(yīng)應(yīng)的列有索索引時,那么就走走索引,走RBO的方方式。Firstt Rowws:它與與Chooose方式式是類似的的,所不同的的是當(dāng)一個個表有統(tǒng)計計信息時,它將是以以最快的方方式返回查查詢的最先先的幾行,從總體上上減少了響響應(yīng)時間。All RRows:也就是我我們所說的的Costt的方式,當(dāng)一個表表有統(tǒng)計信信息時,它將以最最快的方式式返回
31、表的的所有的行行,從總體上上提高查詢詢的吞吐量量。沒有統(tǒng)統(tǒng)計信息則則走基于規(guī)規(guī)則的方式式。3.4.33.2 常常見優(yōu)化問問題 明明有索索引,表的的數(shù)據(jù)量也也非常大,執(zhí)執(zhí)行路徑不不走索引 對對應(yīng)表、索索引的統(tǒng)計計信息有誤誤,可以通通過dbaa_tabbles,dba_indeexes視視圖中的nnum_rrows查查看對應(yīng)表表、索引的的統(tǒng)計信息息,如果有有誤,重新新統(tǒng)計。 AAnalyyze ttablee tabble_nname comppute stattistiics FFor ttablee /*統(tǒng)計表*/ FFor aall iindexxed ccolummns /*統(tǒng)計計有索引的
32、的表列*/ 統(tǒng)計后性性能反而變變差 雖雖然oraacle推推薦采用CCBO方式式,但有時時對應(yīng)的執(zhí)執(zhí)行路徑并并不是最佳佳,所 以以我們在統(tǒng)統(tǒng)計信息時時只有針對對性的統(tǒng)計計相關(guān)表、索引信息息。 一一般有兩種種處理方法法 aa. 刪除除對應(yīng)的統(tǒng)統(tǒng)計信息 AAnalyyze ttablee tabble_nname deleete sstatiisticcs AAnalyyze iindexx inddex_nname deleete sstatiisticcs 對對應(yīng)的系統(tǒng)統(tǒng)包dbmms_sttats也也可實現(xiàn)生生成、刪除除表、索引引的統(tǒng)計信信息 bb. 使用用hintts 明確確指定對應(yīng)應(yīng)的執(zhí)行
33、路路徑3.4.33.3 hhintss常用的幾種種hintts如下:Hint SynttaxDescrriptiion優(yōu)化方式/*+ AALL_RROWS */ 表明對語句句塊選擇基基于開銷的的優(yōu)化方法法,并獲得得最佳吞吐吐量,使資資源消耗最最小化/*+ CCHOOSSE */ 表明如果數(shù)數(shù)據(jù)字典中中有訪問表表的統(tǒng)計信信息,將基基于開銷的的優(yōu)化方法法,并獲得得最佳的吞吞吐量;表表明如果數(shù)數(shù)據(jù)字典中中沒有訪問問表的統(tǒng)計計信息,將將基于規(guī)則則開銷的優(yōu)優(yōu)化方法;/*+ FFIRSTT_ROWWS */ 表明對語句句塊選擇基基于開銷的的優(yōu)化方法法,并獲得得最佳響應(yīng)應(yīng)時間,使使資源消耗耗最小化,在在做分頁查查詢時有時時可以改善善性能/*+ RRULE */ 表明對語句句塊選擇基基于規(guī)則的的優(yōu)化方法法處理方法/*+ AAND_EEQUALL(tabble iindexx) */ 提示明確進(jìn)進(jìn)行執(zhí)行規(guī)規(guī)劃的選擇擇,將幾個個單列索引引的掃描合合起來.SSELECCT /*+INDDEX_FFFS(BBSEMPPMS IIN_DPPTNO,IN_EEMPNOO,IN_SEX)*/ * FROOM BSSEMPMMS WHHERE EMP_NO=SCOTTT AAND DDPT_NNO=TTDC3006/*+ CCLUSTTER(ttablee) */ Expliicit
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度終止供貨協(xié)議范本:關(guān)于智能機(jī)器人核心部件供應(yīng)合同終止
- 二零二五年度食堂員工職業(yè)健康監(jiān)護(hù)合同
- 2025年度搬運(yùn)工職業(yè)健康體檢與服務(wù)合同
- 二零二五年度路橋工程安全生產(chǎn)教育與監(jiān)督合同
- 二零二五年度醫(yī)療機(jī)構(gòu)陪護(hù)人員招聘及培訓(xùn)合同
- 二零二五年度電子商務(wù)平臺注冊及跨境物流服務(wù)合同
- 二零二五年度新能源汽車車庫抵押借款合同
- 二零二五年度終止勞動合同通知書范本及離職補(bǔ)償計算方法
- 心臟再同步治療
- 業(yè)務(wù)流程再造分析案例
- 詩經(jīng)研究課程教學(xué)大綱
- 垂體瘤診療規(guī)范內(nèi)科學(xué)診療規(guī)范診療指南2023版
- 三年級道德與法治教學(xué)工作總結(jié)
- 托卡馬克等離子體約束
- 各級各類護(hù)理人員崗位職責(zé)
- 狂犬病與破傷風(fēng)的同意告知書
- FZ/T 81013-2016寵物狗服裝
- PPVT幼兒語言能力測試題附答案
- JB∕T 14089-2020 袋式除塵器 濾袋運(yùn)行維護(hù)技術(shù)規(guī)范
- 陜西省寶雞市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)及行政區(qū)劃代碼
- 中華人民共和國職業(yè)分類大典電子版
評論
0/150
提交評論