卜慧平
摘要:隨著現(xiàn)代科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)以及網(wǎng)絡(luò)技術(shù)也越來(lái)越發(fā)達(dá)。但是隨著而來(lái)的是人們對(duì)計(jì)算機(jī)的數(shù)據(jù)處理能力以及運(yùn)算速度有了更高的要求,為此美國(guó)的微軟集團(tuán)便研發(fā)出了SQL Server數(shù)據(jù)庫(kù)程序。這個(gè)程序研發(fā)出來(lái)了之后能夠有效的管理用戶的所有有效數(shù)據(jù),同時(shí)對(duì)微軟系統(tǒng)的一些優(yōu)勢(shì)還有著優(yōu)化的作用。本文對(duì)于SQL Server數(shù)據(jù)庫(kù)應(yīng)用程序的性能的優(yōu)化方式進(jìn)行了一些探討,首先先探討了對(duì)這一系統(tǒng)的整個(gè)優(yōu)化的過(guò)程,然后針對(duì)于優(yōu)化服務(wù)器進(jìn)行選擇、優(yōu)化系統(tǒng)的設(shè)計(jì)、選擇效率較高的查詢語(yǔ)句以及優(yōu)化存儲(chǔ)過(guò)程等方法進(jìn)行闡述,闡述了如何提高數(shù)據(jù)庫(kù)的工作效率,這樣就能為后期的相關(guān)工作提供參考。
關(guān)鍵詞:SQL Server數(shù)據(jù)庫(kù);應(yīng)用程序性能;優(yōu)化方式
SQL Server數(shù)據(jù)庫(kù)是由美國(guó)微軟公司所研發(fā)出來(lái)的 一種關(guān)系型的數(shù)據(jù)庫(kù)系統(tǒng),這種系統(tǒng)本身具有可擴(kuò)展性、高效性等特點(diǎn),能夠?yàn)橛脩舴?wù)器所設(shè)計(jì)的相關(guān)數(shù)據(jù)庫(kù)提供高校的管理;并且能夠與WindowsNT系統(tǒng)相結(jié)合,為企業(yè)的信息安全提供有效的管理。
1.SQL系統(tǒng)查詢的處理過(guò)程
SQL在進(jìn)行查詢處理的過(guò)程中,總共會(huì)經(jīng)歷三個(gè)步驟,分別是查詢、索引的選擇以及鏈接的選擇。其中查詢不僅作為過(guò)程的第一個(gè)步驟,也是系統(tǒng)進(jìn)行索引的篩選以及連接的標(biāo)準(zhǔn),通過(guò)限制查找的方式來(lái)減少所需處理數(shù)據(jù)的量,減輕服務(wù)器的工作強(qiáng)度,同時(shí)也減少了索引和連接的用戶讀取數(shù)量,增加了查詢的工作效率。處理器在選擇索引時(shí),首先是會(huì)查詢用戶所查詢的數(shù)據(jù)是否存在索引,然后再對(duì)單個(gè)以及多個(gè)索引進(jìn)行分析,保證索引在往返時(shí)的有效性。處理過(guò)程的第三個(gè)步驟是連接,主要是當(dāng)一個(gè)多表查詢或者自動(dòng)連接時(shí),采用連接的策略對(duì)其進(jìn)行評(píng)價(jià),然后對(duì)于選擇將選擇最低效率的處理方式,當(dāng)連接選擇完了之后,用戶就可以利用索引對(duì)一些基礎(chǔ)的數(shù)據(jù)進(jìn)行查詢。
2.SQL Server數(shù)據(jù)庫(kù)應(yīng)用程序性能的優(yōu)化方式
2.1選擇優(yōu)化服務(wù)器
SQL Server數(shù)據(jù)庫(kù)應(yīng)用程序本身也是屬于計(jì)算機(jī)程序的一種,本身的一些性能也是與服務(wù)器的性能有著直接的關(guān)聯(lián),因此,在數(shù)據(jù)庫(kù)應(yīng)用程序進(jìn)行優(yōu)化的過(guò)程中,首先就是要選擇一個(gè)性能強(qiáng)大的服務(wù)器,服務(wù)器性能的好壞與否取決于它的物理配置,但是目前物理配置中最差的地方就是物理磁盤的性能。例如在對(duì)一個(gè)100MB的文件進(jìn)行掃描時(shí),性能較好的磁盤可能需要1分鐘左右的時(shí)間才能完成掃描,而如果是性能較差的磁盤則需要10分鐘左右的時(shí)間。除此之外,服務(wù)器能夠使用的內(nèi)存量越大,那么服務(wù)器對(duì)于數(shù)據(jù)的存儲(chǔ)以及讀取速度也會(huì)更快。目前的計(jì)算機(jī)系統(tǒng)都是能夠支持多個(gè)CPU同時(shí)進(jìn)行工作,這樣可以大幅度的減少磁盤讀取數(shù)據(jù)所花費(fèi)的時(shí)間,但是性能越強(qiáng)大的服務(wù)器相對(duì)應(yīng)的價(jià)格也會(huì)更貴,因此在實(shí)際中要根據(jù)實(shí)際情況來(lái)進(jìn)行選擇。
2.2數(shù)據(jù)庫(kù)設(shè)計(jì)優(yōu)化
在對(duì)SQL Server數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)優(yōu)化的過(guò)程中,一般會(huì)采用三種標(biāo)準(zhǔn)來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行標(biāo)準(zhǔn)的設(shè)計(jì),對(duì)數(shù)據(jù)庫(kù)采用標(biāo)準(zhǔn)化的目的在于減少數(shù)據(jù)庫(kù)中的一些冗余數(shù)據(jù)。當(dāng)減少了這些冗余數(shù)據(jù)之后,就能夠保證系統(tǒng)在處理這些數(shù)據(jù)的過(guò)程中不會(huì)花費(fèi)額外的時(shí)間來(lái)對(duì)掃描冗余數(shù)據(jù),大大的提高了數(shù)據(jù)庫(kù)的處理效率,在對(duì)SQL Server數(shù)據(jù)進(jìn)行優(yōu)化設(shè)計(jì)的過(guò)程中,它的數(shù)據(jù)都是按照頁(yè)碼來(lái)進(jìn)行存放的,每一個(gè)頁(yè)碼中都含有頁(yè)頭以及內(nèi)部的數(shù)據(jù),其中的數(shù)據(jù)行的大小主要是由本頁(yè)碼當(dāng)中的數(shù)據(jù)量來(lái)確定的,數(shù)據(jù)行的大小本身也對(duì)數(shù)據(jù)庫(kù)的性能產(chǎn)生了一定的影響。因此應(yīng)該增加其中一些小數(shù)據(jù)行的數(shù)量,這樣就不僅能夠保證在同一個(gè)頁(yè)碼下增加數(shù)據(jù)的量。而且還能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的高效率的讀取,提高整個(gè)數(shù)據(jù)庫(kù)的工作效率。
2.3采用查詢效率更好的查詢語(yǔ)句
SQL數(shù)據(jù)庫(kù)在使用的過(guò)程中,主要的操作就是進(jìn)行查詢,但是查詢語(yǔ)句的效率高低也會(huì)對(duì)數(shù)據(jù)庫(kù)的性能造成最直接的影響。目前該數(shù)據(jù)庫(kù)的查詢是基于Select語(yǔ)句的,這種語(yǔ)句在SQL數(shù)據(jù)庫(kù)的查詢語(yǔ)句中代價(jià)是很大的。所以,在對(duì)SQL數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行優(yōu)化的過(guò)程中,應(yīng)該使用查詢效率更好的查詢語(yǔ)句,滿足查詢的目的的高效性。
2.4優(yōu)化存儲(chǔ)過(guò)程
在對(duì)SQL數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化的過(guò)程中,也應(yīng)該對(duì)其中的存儲(chǔ)過(guò)程進(jìn)行相對(duì)應(yīng)的優(yōu)化。隨著現(xiàn)代科技的C/S應(yīng)用程序的使用范圍逐漸的擴(kuò)大,各大軟件程序的優(yōu)化的主要目標(biāo)就是考慮如何對(duì)現(xiàn)有的網(wǎng)絡(luò)資源進(jìn)行更加充分的利用,避免造成資源浪費(fèi),提高資源使用率。而SQL的儲(chǔ)存過(guò)程則主要指的是一個(gè)被命名的存儲(chǔ)在服務(wù)商的SQL語(yǔ)句的集合。當(dāng)SQL被第一次執(zhí)行之后,就會(huì)對(duì)這一語(yǔ)句的集合進(jìn)行編譯,并使其存儲(chǔ)在內(nèi)存里,這樣就能夠大大的縮短再次編譯以及讀取數(shù)據(jù)的時(shí)間,提高了整體的工作效率,因此可以看出優(yōu)化存儲(chǔ)過(guò)程多雨程序的優(yōu)化還是有很大的影響的。存儲(chǔ)過(guò)程優(yōu)化之后,用戶在對(duì)數(shù)據(jù)庫(kù)進(jìn)行分析的過(guò)程中就能夠有效的避免進(jìn)行數(shù)據(jù)的再次編譯甚至是多次編譯和分析,并且能夠保證數(shù)據(jù)會(huì)以二進(jìn)制的形式傳送到服務(wù)器,并且由服務(wù)器加以解析,從而縮短了數(shù)據(jù)在網(wǎng)絡(luò)使用過(guò)程中所需要分析的時(shí)間。
2.5避免出現(xiàn)阻塞
出現(xiàn)阻塞的原因是因?yàn)槌绦蛑械牡谝粋€(gè)連接鎖與第二個(gè)連接鎖之間發(fā)生了沖突 ,從而造成了阻塞,這樣會(huì)導(dǎo)致服務(wù)器對(duì)數(shù)據(jù)的解析工作無(wú)法繼續(xù)進(jìn)行并且完成,進(jìn)而引發(fā)一系列的連鎖反應(yīng)。出現(xiàn)這種現(xiàn)象的根本原因在于提交執(zhí)行的時(shí)間過(guò)長(zhǎng)或者沒有及時(shí)的提交取消查詢命令所造成的一系列現(xiàn)象。因此,為了避免出現(xiàn)這一情況,在對(duì)程序進(jìn)行設(shè)計(jì)的時(shí)候不能使用用戶所編寫的程序,因?yàn)檫@樣會(huì)大大的增加時(shí)間的花費(fèi)。同時(shí)不能設(shè)計(jì)用戶在數(shù)據(jù)內(nèi)容的程序,不能設(shè)計(jì)取消查詢到額程序以及不能設(shè)計(jì)立即完成操作的程序等。
3.事務(wù)和批量處理對(duì)應(yīng)用程序性能的影響
適當(dāng)?shù)氖褂肧QL的主要目的是為了減少服務(wù)器與客戶端之間的傳輸?shù)臄?shù)據(jù)的數(shù)量。這樣通常是可以減少完成任務(wù)和事務(wù)所需花費(fèi)的時(shí)間。長(zhǎng)時(shí)間的運(yùn)行事務(wù)對(duì)單個(gè)的用戶可能是好的,但如果一旦擴(kuò)展到了多個(gè)用戶則會(huì)變得很差。所以為了支持事務(wù)的一致性,數(shù)據(jù)庫(kù)必須從事務(wù)內(nèi)獲取對(duì)共享資源的鎖后,要一直將這個(gè)鎖控制到事務(wù)提交為止。如果有其他的用戶需要訪問相同的資源,就需要等待,等別人用好了再用。隨著個(gè)別的事務(wù)變長(zhǎng),等待的隊(duì)伍以及其他的用戶也會(huì)越來(lái)越長(zhǎng),系統(tǒng)的吐吞量也會(huì)隨著的減少。長(zhǎng)事務(wù)還可能會(huì)導(dǎo)致鎖變死的可能性,當(dāng)兩個(gè)或者兩個(gè)以上的用戶同時(shí)等待相互控制的鎖時(shí),可能就會(huì)導(dǎo)致鎖變死。因此,要縮短事務(wù)的時(shí)間長(zhǎng)短,可以有以下幾個(gè)方法:(1)盡量在應(yīng)用程序的要求內(nèi)完成更改。應(yīng)用程序會(huì)將大的事務(wù)分為一個(gè)一個(gè)的單個(gè)工作事務(wù)來(lái)執(zhí)行。(2)利用SQL Server語(yǔ)句來(lái)批量處理,減少服務(wù)器的往返次數(shù)。(3)對(duì)重復(fù)進(jìn)行的操作使用參數(shù)數(shù)組。
4.總結(jié)
如今隨著現(xiàn)代科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)以及網(wǎng)絡(luò)技術(shù)也越來(lái)越發(fā)達(dá)。SQL Server數(shù)據(jù)庫(kù)在人們的生活中也越來(lái)越普及,人們對(duì)于數(shù)據(jù)庫(kù)運(yùn)行的性能有了更大的需求,所以對(duì)SQL數(shù)據(jù)庫(kù)進(jìn)行一些有效的優(yōu)化以及設(shè)計(jì)是如今需要去做的事。這不僅僅需要相關(guān)的技術(shù)優(yōu)化人員具有過(guò)硬的技術(shù),也需要技術(shù)人員多優(yōu)化過(guò)程的認(rèn)真負(fù)責(zé),這樣,才能保證數(shù)據(jù)庫(kù)的使用更加的先進(jìn)。
參考文獻(xiàn):
[1]鐘克吟.SQL Server數(shù)據(jù)庫(kù)應(yīng)用程序性能優(yōu)化方案研究[J].計(jì)算機(jī)與數(shù)字工程,2008(06):161-163+174.
[2]張晶.嵌入式移動(dòng)數(shù)據(jù)庫(kù)SQL Server CE應(yīng)用程序的開發(fā)與設(shè)計(jì)[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流),2007(10):923-924.
[3]梁旗軍,羅海平,鄔志紅,段喜龍.一種在PB應(yīng)用程序中自動(dòng)附加并連接SQL Server數(shù)據(jù)庫(kù)的方法[J].計(jì)算機(jī)與現(xiàn)代化,2006(02):50-52.
[4]張婕.袁力田,淺談SQL Server數(shù)據(jù)庫(kù)應(yīng)用程序中數(shù)據(jù)庫(kù)的安全性[J].數(shù)字技術(shù)與應(yīng)用,2017(08):203+205.
[5]谷震離.杜根遠(yuǎn),SQL Server數(shù)據(jù)庫(kù)應(yīng)用程序中數(shù)據(jù)庫(kù)安全性研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(15):3717-3719.