資源描述:
《sybase大量并發(fā)查詢的綜合優(yōu)化》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、匯智通信技術(shù)有限公司Sybase大量并發(fā)查詢的優(yōu)化摘要:在單Sybase服務(wù)器條件下,從多個(gè)方面對(duì)并發(fā)查詢性能的提升進(jìn)行了研究,并取得了較好的效果。關(guān)鍵詞:Sybase并發(fā)查詢優(yōu)化1引言一個(gè)業(yè)務(wù)系統(tǒng),有20臺(tái)Sybase客戶端需要高頻度查詢轉(zhuǎn)發(fā)地址信息。轉(zhuǎn)發(fā)地址信息,每天都有1%~10%的變更。隨著業(yè)務(wù)數(shù)據(jù)的逐漸增大,Sybase服務(wù)器的CPU和IO也逐漸升高,業(yè)務(wù)高峰期還可能達(dá)到100%,導(dǎo)致查詢響應(yīng)緩慢,轉(zhuǎn)發(fā)數(shù)據(jù)出現(xiàn)積壓,實(shí)時(shí)性下降。為了提高查詢的性能,對(duì)Sybase大量并發(fā)查詢的優(yōu)化方法進(jìn)行了多方面的研究。2設(shè)計(jì)優(yōu)化設(shè)計(jì)優(yōu)化,主要是直接影響
2、服務(wù)器和客戶端的設(shè)計(jì)優(yōu)化。2.1專用索引描述:針對(duì)頻繁使用的查詢操作,設(shè)計(jì)專用的索引,一般能提高查詢性能。數(shù)據(jù)量越大,索引發(fā)揮的作用約明顯。索引能使查詢的時(shí)間呈幾何指數(shù)級(jí)的下降。原來的全表掃描,在有索引條件下,只需要幾次比較和尋址就可以定位,輸出最終結(jié)果。實(shí)施要點(diǎn):統(tǒng)計(jì)業(yè)務(wù)系統(tǒng)的所有查詢指令和使用頻度,將使用率高的查詢條件的字段作為索引。索引使用的字段,盡可能是取值比較豐富的,查詢結(jié)果集在5%以下,索引才能發(fā)揮優(yōu)勢(shì)。匯智通信技術(shù)有限公司點(diǎn)評(píng):索引時(shí)數(shù)據(jù)庫優(yōu)化最直接,也是最復(fù)雜的方法。索引應(yīng)該跟著數(shù)據(jù)和使用情況及時(shí)調(diào)整。1.1合并索引描述:有時(shí),多
3、個(gè)查詢操作,每個(gè)都創(chuàng)建了專門的索引,以便提高查詢性能,但,一個(gè)表的索引過多,會(huì)導(dǎo)致插入和修改數(shù)據(jù)性能下降,而且也增加了執(zhí)行計(jì)劃解析的時(shí)間。因此,應(yīng)盡量控制索引的數(shù)量。案例:表(用戶user,物品序號(hào)oid,信息info)。由于插入和刪除都使用(用戶user,物品序號(hào)oid)作為條件,因此,這3個(gè)字段建了一個(gè)索引idx1。由于查詢總是使用(物品序號(hào)oid)作為條件,查詢返回(用戶user,信息info),因此,用這個(gè)字段建了一個(gè)索引idx2。其實(shí),idx1已經(jīng)包含了idx2,但由于字段順序問題,idx1無法用于查詢的優(yōu)化。調(diào)整idx1的字段順序,形
4、成idx3(物品序號(hào)oid,用戶user),可以代替idx1和idx2,完成索引合并。合并后,查詢也能使用idx3。點(diǎn)評(píng):索引太多,不但占用存儲(chǔ)空間,而且對(duì)插入操作的性能影響很大,應(yīng)盡量控制索引的數(shù)量。1.2使用簇索引描述:如果表的一條記錄的數(shù)據(jù)很小,使用簇索引(ClusteredIndex),可以減少從索引到數(shù)據(jù)的尋址過程。實(shí)施要點(diǎn):創(chuàng)建索引時(shí),使用關(guān)鍵字CLUSTERED?;建聚簇索引需要至少相當(dāng)該表120%的附加空間,以存放該表的副本和索引中間頁點(diǎn)評(píng):一個(gè)表的簇索引,至多1個(gè)。簇索引不一定總是比非簇索引性能高。1.3合理使用分區(qū)技術(shù)描述:匯
5、智通信技術(shù)有限公司Syabse高版本已經(jīng)進(jìn)入了表分區(qū)功能,有利于操控大量數(shù)據(jù)。實(shí)施要點(diǎn):根據(jù)表的特性,選擇適合的字段作為分區(qū)字段。通常使用整數(shù)區(qū)間,日期作為分區(qū)字段。點(diǎn)評(píng):表分區(qū)后,查詢指令應(yīng)盡量在分區(qū)內(nèi)進(jìn)行。分區(qū)后,沒有使用分區(qū)字段的查詢,還是會(huì)全表掃描,應(yīng)該盡量避免。1服務(wù)器端的優(yōu)化1.1一次性申請(qǐng)共享內(nèi)存描述:Sybase使用的最大共享內(nèi)存可以通過配置修改,但默認(rèn)是內(nèi)存不足時(shí),才再申請(qǐng)新的共享內(nèi)存。實(shí)施要點(diǎn):命令:sp_configure"allocatemaxsharedmem",1點(diǎn)評(píng):一次性申請(qǐng)內(nèi)存,還可以避免因?yàn)槠渌M(jìn)程占用內(nèi)存,導(dǎo)
6、致需要內(nèi)存時(shí)申請(qǐng)失敗,可以保證Sybase使用內(nèi)存的總量。1.2有名高速Cache綁定到庫描述:Sybase默認(rèn)有一個(gè)cache內(nèi)存,用于保存近期經(jīng)常使用的數(shù)據(jù)??梢越o一個(gè)庫專門開辟cache空間,提高查詢性能。實(shí)施要點(diǎn):1、創(chuàng)建一個(gè)200M命名高速緩存db1_cache:sp_cacheconfig‘db1_cache’,'200m’,'mixed2、將db1_cache綁定到db1:sp_bindcache‘db1_cache’,db1點(diǎn)評(píng):匯智通信技術(shù)有限公司有名Cache能給庫提供額外的緩存空間,能提高經(jīng)常性、近期重復(fù)性的查詢性能。1.1
7、使用多個(gè)獨(dú)立的存儲(chǔ)設(shè)備描述:使用多塊獨(dú)立的硬盤,對(duì)需要并發(fā)讀取的表,將存儲(chǔ)設(shè)備分散到多個(gè)磁盤上,可以實(shí)現(xiàn)磁盤的并發(fā)讀寫,提高處理性能。實(shí)施要點(diǎn):在采購時(shí),選擇獨(dú)立硬盤接口數(shù)量足夠多服務(wù)器型號(hào),并配置多塊硬盤。通常一塊硬盤安裝操作系統(tǒng)和Sybase軟件,其他作為設(shè)備存儲(chǔ)。點(diǎn)評(píng):采用多塊獨(dú)立硬盤,系統(tǒng)的數(shù)據(jù)安全性會(huì)比RAID5差些,需要對(duì)硬盤的健康狀態(tài)進(jìn)行監(jiān)控,及時(shí)更換硬盤。1.2使用多個(gè)段(Sigment)描述:段(Segment)是數(shù)據(jù)庫設(shè)備上磁盤空間的邏輯組合,它可以看作是指向一個(gè)或多個(gè)數(shù)據(jù)庫設(shè)備的標(biāo)簽。利用段可以控制數(shù)據(jù)庫對(duì)象的存放位置,可以
8、將數(shù)據(jù)庫對(duì)象分類存放到不同的段上。設(shè)備與段之間的關(guān)系:多對(duì)多關(guān)系。一個(gè)設(shè)備上可以創(chuàng)建多個(gè)段,一個(gè)段也可以覆蓋多個(gè)設(shè)備。Sybase支持3