資源描述:
《SYBASE內(nèi)部培訓(xùn)_數(shù)據(jù)庫(kù)應(yīng)用調(diào)優(yōu).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Sybase數(shù)據(jù)庫(kù)性能調(diào)優(yōu)第二十六章數(shù)據(jù)庫(kù)應(yīng)用調(diào)優(yōu)本章內(nèi)容查詢優(yōu)化器的使用事務(wù)處理調(diào)優(yōu)游標(biāo)使用調(diào)優(yōu)優(yōu)化問(wèn)題的癥狀查詢基于索引和表大小運(yùn)行,比預(yù)期慢很多比類似查詢運(yùn)行慢得多的查詢突然比平常查詢慢得多的查詢存儲(chǔ)過(guò)程運(yùn)行時(shí)間比將其處理為adhoc語(yǔ)句的時(shí)間長(zhǎng)查詢計(jì)劃預(yù)期使用索引卻使用了表掃描優(yōu)化問(wèn)題的來(lái)源統(tǒng)計(jì)信息近期沒(méi)有更新給定事務(wù)所引用的行不適合由索引統(tǒng)計(jì)信息所反映的模式使用一個(gè)索引訪問(wèn)一個(gè)表的大部分Where子句已不可優(yōu)化的方式寫(xiě)入沒(méi)有用于關(guān)鍵查詢的適當(dāng)索引存儲(chǔ)過(guò)程在基礎(chǔ)表有效變更生效前編譯26.1查詢優(yōu)化器的使用SQL
2、Server的優(yōu)化器showplan的輸出信息說(shuō)明搜索變量(SARGs)策略or與in子句的優(yōu)化索引覆蓋集函數(shù)的優(yōu)化orderby優(yōu)化連接操作的優(yōu)化子查詢的優(yōu)化存儲(chǔ)過(guò)程的優(yōu)化修改操作的優(yōu)化26.1.1ASE的優(yōu)化器ASE處理一個(gè)查詢語(yǔ)句的全過(guò)程如下:1.首先對(duì)SQL語(yǔ)句進(jìn)行語(yǔ)法分析,確保SQL語(yǔ)句的語(yǔ)法正確2.對(duì)查詢進(jìn)行優(yōu)化,生成最優(yōu)的查詢計(jì)劃。主要考慮的問(wèn)題有:·表和它的大?。ㄐ袛?shù),數(shù)據(jù)頁(yè))·表上索引類型和它是否能覆蓋查詢的搜索變量(SARGs)·連接的順序(包括子查詢)·是否有集函數(shù)·索引中關(guān)鍵字的密度和分布·邏輯
3、和物理讀寫(xiě)的開(kāi)銷(xiāo)·數(shù)據(jù)緩沖區(qū)的大小、I/O的大小和緩沖策略3.對(duì)查詢計(jì)劃進(jìn)行編譯。4.執(zhí)行查詢,并把結(jié)果返回給用戶。給優(yōu)化器提供合適的索引優(yōu)化器的目標(biāo)是選擇正確的執(zhí)行計(jì)劃來(lái)降低執(zhí)行查詢所用的時(shí)間,其依據(jù)是查詢的表的內(nèi)容以及緩沖策略、緩沖區(qū)大小和I/O大小等因素。磁盤(pán)存取是開(kāi)銷(xiāo)最大的操作,因此優(yōu)化查詢的基本任務(wù)是給優(yōu)化器提供合適的索引。SQLServer提供了以下工具來(lái)查看查詢優(yōu)化的結(jié)果:setshowplanon可以列出執(zhí)行查詢的每一步驟,對(duì)返回大結(jié)果集的查詢,它通常與setnoexecon一起使用。setstatis
4、ticsinon可以列出查詢所需要的邏輯和物理讀寫(xiě)次數(shù)。setstatisticssubquerycacheon列出了對(duì)每一子查詢?cè)诰彌_區(qū)中的數(shù)據(jù)行數(shù)和緩沖命中的次數(shù)。setstatisticstimeon列出執(zhí)行查詢的每一步驟所用的時(shí)間。dbcctraceon(302)提供了選擇一特殊計(jì)劃的原因的信息,它通常在當(dāng)優(yōu)化器選擇的執(zhí)行計(jì)劃看起來(lái)不正確時(shí)使用。26.1.2showplan的輸出信息說(shuō)明showplan基本信息QueryPlanforStatementN(atlineN)第一個(gè)N是批命令中的語(yǔ)句號(hào),第二個(gè)N是行
5、號(hào),STEPN該語(yǔ)句來(lái)表示每步的情況Thetypeofqueryisquerytype給出每一步查詢的類型FROMTABLEtablename說(shuō)明了查詢的數(shù)據(jù)來(lái)源,tablename有可能是一工作表。在表的連接查詢中,”FROMTABLE”信息的順序也說(shuō)明了查詢優(yōu)化器在做表連接時(shí)選擇的表的順序例:setshowplanonselectauthors.au_id,au_fname,au_lnamefromtitles,titleauthors,authorswhereauthors.au_id=titleauthor.a
6、u_idandtitleauthor.title_id=titles.title_idandauthors.au_lname="Bloom"QUERYPLANFORSTATEMENT1(atline1)STEP1ThetypeofqueryisSELECT.FROMTABLEauthors/*數(shù)據(jù)來(lái)源表*/Nestediteration./*嵌套循環(huán)掃描*/Index:au_lname_ix/*使用索引au_lname_ix*/Ascendingscan./*升序掃描*/Positioningbykey/*利用key定
7、位*/Keysare:au_lname/*key是au_lnameUsingI/OSize2Kbytes./*I/O塊大小為*/WithLRUBufferReplacementStrategy./*使用LRU緩沖交換策略*/FROMTABLEtitleauthorNestediteration.Index:ta_au_tit_ixAscendingscan.PositioningbykeyIndexcontainsallneededcolumns.Basetablewillnotberead./*IndexCoveri
8、ng*/Keysare:au_idUsingI/OSize2Kbytes.WithLRUBufferReplacementStrategy.FROMTABLEtitlesNestediteration.UsingClusteredIndex.Index:au_lname_ixAscendingscan.Positioningbyk