遼寧鐵道職業(yè)技術(shù)學(xué)院 121001
隨著信息平臺(tái)中SQL 數(shù)據(jù)庫(kù)的應(yīng)用,越來(lái)越多的人開(kāi)始關(guān)注SQL 數(shù)據(jù)庫(kù)的效率問(wèn)題。如今,計(jì)算機(jī)數(shù)據(jù)量的飛速增長(zhǎng),在對(duì)數(shù)十萬(wàn)級(jí)以上的數(shù)據(jù)查詢(xún)時(shí)需要耗費(fèi)相當(dāng)多的運(yùn)行成本。所以,為了盡可能地節(jié)約資源,并且還能兼顧到用戶(hù)工作效率的提升,優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)性能勢(shì)在必行。
SQL 數(shù)據(jù)庫(kù)程序也存在程序質(zhì)量良莠不齊的現(xiàn)象,如果系統(tǒng)程序擁有較高的質(zhì)量,必定會(huì)大幅度縮短工作時(shí)間,提升執(zhí)行效率。反之,如果軟件質(zhì)量較差,不但會(huì)影響到查詢(xún)時(shí)的結(jié)果準(zhǔn)確度,還可能造成負(fù)面的數(shù)據(jù)庫(kù)影響,降低其整體的信譽(yù)度。
隨著計(jì)算機(jī)普及程度的提升,數(shù)據(jù)庫(kù)程序的編寫(xiě)、網(wǎng)絡(luò)編程逐漸走進(jìn)了人們的視野,并且越來(lái)越多的人員愿意參加到這個(gè)行業(yè)。數(shù)據(jù)庫(kù)系統(tǒng)軟件的出現(xiàn),不僅提供了更多的方案方便用戶(hù)作出選擇,同時(shí),還可以通過(guò)優(yōu)勝劣汰的篩選程序,做到系統(tǒng)的更新,但是對(duì)于數(shù)據(jù)庫(kù)自身的發(fā)展卻會(huì)帶來(lái)一定程度的威脅。尤其是作為老牌的SQL 數(shù)據(jù)庫(kù),受到的威脅程度更大。如果不能及時(shí)地進(jìn)行優(yōu)化,很可能威脅SQL 數(shù)據(jù)庫(kù)在市場(chǎng)當(dāng)中的地位,甚至落到被淘汰的地步。
計(jì)算機(jī)電腦系統(tǒng)分為硬件與軟件兩個(gè)部分,硬件作為軟件的主要載體,是由主機(jī)等外部部件組成,主機(jī)內(nèi)部包含了CPU、顯卡、網(wǎng)卡等部分。作為電腦的心臟部分,CPU 對(duì)電腦運(yùn)行的效率與速度產(chǎn)生直接的影響。雖然電腦已經(jīng)普及到我國(guó)絕大部分地方,但是由于電腦硬件配置方面的問(wèn)題,導(dǎo)致配置不足的電腦無(wú)法正常的使用SQL數(shù)據(jù)庫(kù)。因此,做好SQL 數(shù)據(jù)庫(kù)“外部”硬件優(yōu)化也是非常必要的。
作為集數(shù)據(jù)操縱和數(shù)據(jù)定義于一體的數(shù)據(jù)庫(kù)語(yǔ)言,SQL 是任何一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)都需要為用戶(hù)提供的交互式語(yǔ)言,并且在交互方式上能夠作為獨(dú)立的語(yǔ)言在終端上使用,同時(shí),也能夠作為子語(yǔ)言嵌入到高級(jí)語(yǔ)言當(dāng)中加以使用,通過(guò)SQL 語(yǔ)言的使用,可以讓用戶(hù)從數(shù)據(jù)庫(kù)當(dāng)中搜索到自己所需的信息。優(yōu)化SQL 語(yǔ)句就是將原本的SQL 語(yǔ)句轉(zhuǎn)變成處理效率更高,并且語(yǔ)義相同的語(yǔ)句。其工作原理是盡可能降低查詢(xún)當(dāng)中各表的參與加工的數(shù)據(jù)量,以此來(lái)滿(mǎn)足空間與時(shí)間上的雙重優(yōu)化。優(yōu)化查詢(xún)主要是為了找到能夠與給定表達(dá)式等價(jià),并且擁有更高執(zhí)行效率的方式。一般來(lái)說(shuō),一個(gè)查詢(xún)可以通過(guò)多種方式加以實(shí)現(xiàn),其關(guān)鍵就在于如何才能找到耗時(shí)少,且等價(jià)的表達(dá)式。一般來(lái)說(shuō),處理數(shù)據(jù)查詢(xún)的代價(jià)都是由磁盤(pán)的訪(fǎng)問(wèn)來(lái)決定的,所以,相比內(nèi)存的訪(fǎng)問(wèn),磁盤(pán)反應(yīng)速度更慢。優(yōu)化查詢(xún)所關(guān)注的就是空間、時(shí)間的節(jié)約與效率的高低。
我們應(yīng)該認(rèn)識(shí)到,在當(dāng)前的SQL 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)當(dāng)中,索引是最常見(jiàn)的一種數(shù)據(jù)庫(kù)操作作業(yè)的方式。也可以說(shuō),整個(gè)SQL 數(shù)據(jù)庫(kù)應(yīng)用處理系統(tǒng)以及發(fā)揮其整體性能的關(guān)鍵都取決于索引的使用與設(shè)置。一般來(lái)說(shuō),在進(jìn)行部分沒(méi)有建立出索引數(shù)據(jù)表的查詢(xún)時(shí),工作人員所執(zhí)行的是全標(biāo)查詢(xún)作業(yè)。詳細(xì)而言,這一種作業(yè)方式就是將全部的數(shù)據(jù)頁(yè)從磁盤(pán)上進(jìn)行讀取,并且以此作為基礎(chǔ),進(jìn)行加工、分析與整理,從而獲取希望得到的數(shù)據(jù)信息。很明顯,如果需要在SQL 數(shù)據(jù)庫(kù)中處理這種具有大批量、大規(guī)模數(shù)據(jù)量的數(shù)據(jù)表,就需要消耗巨大的信息資源。所以,優(yōu)化SQL 數(shù)據(jù)庫(kù)索引的性能具有的意義就在于信息資源消耗量的減少。一般情況下,索引主要是通過(guò)簇索引、非簇索引、復(fù)合索引三種方式來(lái)實(shí)現(xiàn),其中最廣泛應(yīng)用的是簇索引。簇索引也就是組合整理磁盤(pán)上各種實(shí)際的數(shù)據(jù),并且通過(guò)列值的制定,對(duì)其加以排列。我們還發(fā)現(xiàn),如果根據(jù)物理表現(xiàn)方式的不同,將磁盤(pán)上的數(shù)據(jù)進(jìn)行新一輪的組合排列之后,再開(kāi)展作業(yè)時(shí),系統(tǒng)一旦搜索到了滿(mǎn)足第一記錄的條件后,就不需要詳細(xì)的查詢(xún)?cè)摿挟?dāng)中的其余數(shù)據(jù),這樣就可以最大限度地縮小查詢(xún)的范圍,讓SQL 數(shù)據(jù)庫(kù)查詢(xún)效率大幅度提升。
在SQL 數(shù)據(jù)庫(kù)中,視圖也是一大關(guān)鍵,從本質(zhì)上來(lái)看,主要是數(shù)據(jù)表虛擬表的表現(xiàn)形式。一般而言,SQL 數(shù)據(jù)庫(kù)的視圖分為了標(biāo)準(zhǔn)視圖、索引視圖和分區(qū)視圖三類(lèi)。其中,數(shù)據(jù)表查詢(xún)作業(yè)當(dāng)中分區(qū)視圖能夠提高的作業(yè)效率程度,值得在進(jìn)行SQL 數(shù)據(jù)庫(kù)性能優(yōu)化的整個(gè)過(guò)程中加以關(guān)注。在每一個(gè)區(qū)域服務(wù)器當(dāng)中,我們都可以對(duì)本區(qū)域內(nèi)代表著倉(cāng)庫(kù)信息的預(yù)先存儲(chǔ)的Warehouse 表進(jìn)行查詢(xún),并且在本區(qū)域內(nèi)查詢(xún)業(yè)務(wù)組織外部服務(wù)器信號(hào)干擾的同時(shí),進(jìn)一步提高倉(cāng)庫(kù)信息的查詢(xún)效率。值得我們關(guān)注的是,在不斷集成化、多元化發(fā)展的數(shù)據(jù)庫(kù)處理系統(tǒng)的大背景下,在查詢(xún)部分?jǐn)?shù)據(jù)庫(kù)信息時(shí),一般來(lái)說(shuō)都需要對(duì)訪(fǎng)問(wèn)區(qū)域之內(nèi)包含倉(cāng)庫(kù)信息的兩個(gè)主要信息,甚至是更多的倉(cāng)庫(kù)信息。因此,在區(qū)域性劃分倉(cāng)庫(kù)作業(yè)的同時(shí),還能夠?qū)}(cāng)庫(kù)區(qū)域中ID 信息存在差異性進(jìn)行相關(guān)定義,通過(guò)ID,用戶(hù)就能夠?qū)⒉樵?xún)的分區(qū)判定出來(lái),從而實(shí)現(xiàn)動(dòng)態(tài)的高效整合,并且實(shí)現(xiàn)其查詢(xún)。
在整個(gè)SQL 數(shù)據(jù)庫(kù)中,語(yǔ)句優(yōu)化是性能優(yōu)化作業(yè)當(dāng)中最關(guān)鍵、最核心的環(huán)節(jié)。一般而言,在進(jìn)行SQL 數(shù)據(jù)庫(kù)語(yǔ)句優(yōu)化,主要是分為了優(yōu)化模糊查詢(xún)技術(shù)和子查詢(xún)展開(kāi)技術(shù)兩類(lèi)。本小節(jié)將切入點(diǎn)放在子查詢(xún)展開(kāi)技術(shù)的優(yōu)化上,進(jìn)行了詳細(xì)的分析。對(duì)于優(yōu)化子查詢(xún)展開(kāi)技術(shù),實(shí)際上就是將子查詢(xún)信號(hào)轉(zhuǎn)化成為一個(gè)連接,從技術(shù)上實(shí)現(xiàn)查詢(xún)作業(yè)的優(yōu)化。
比如:我們將某一個(gè)地區(qū)期末考試成績(jī)超過(guò)600 分學(xué)生學(xué)校的名字作為查詢(xún)的作業(yè)。一般來(lái)說(shuō),如果是傳統(tǒng)模式下的SQL 數(shù)據(jù)庫(kù)子查詢(xún)展開(kāi)技術(shù),工作人員需要在查詢(xún)當(dāng)中采取Select 學(xué)校名From 學(xué)校Where 學(xué)校代號(hào)In (Select學(xué)校代號(hào)From 學(xué)生Where 總分>600)這樣的操作方式。很明顯,通過(guò)這樣的查詢(xún)方式,數(shù)據(jù)庫(kù)查詢(xún)將地毯式地對(duì)每一個(gè)學(xué)校的每一項(xiàng)數(shù)據(jù)當(dāng)中是否滿(mǎn)足了子查詢(xún)學(xué)生記錄的數(shù)據(jù)都是進(jìn)行了相應(yīng)的查詢(xún),雖然查詢(xún)的結(jié)果也是準(zhǔn)確的,但是其效率卻無(wú)法達(dá)到很高的水準(zhǔn)。所以,我們可以將學(xué)校表預(yù)先設(shè)置成為SQL 數(shù)據(jù)庫(kù)查詢(xún)作業(yè)當(dāng)中的銜接內(nèi)表,在查詢(xún)期間,首先可以通過(guò)分組語(yǔ)句,進(jìn)行學(xué)校代號(hào)的刪選與查詢(xún),從而在查詢(xún)滿(mǎn)足條件學(xué)生的學(xué)校之前,盡可能地消除更多的學(xué)校代號(hào)。
本文針對(duì)SQL 數(shù)據(jù)庫(kù)性能的優(yōu)化,主要是通過(guò)對(duì)SQL數(shù)據(jù)庫(kù)必要性的研究,基本原理與實(shí)際的優(yōu)化分析進(jìn)行了具體的分析探討。針對(duì)不同的應(yīng)用程序,我們都需要針對(duì)實(shí)際情況的差異,選擇滿(mǎn)足應(yīng)用優(yōu)化措施的主要方式,如此才能夠確保其工作效率。
[1]林元彥.SQL Server 數(shù)據(jù)庫(kù)性能分析與優(yōu)化[J].電子技術(shù)與軟件工程,2013(17):45-46
[2]高欣.關(guān)于如何優(yōu)化SQL 數(shù)據(jù)庫(kù)性能的幾點(diǎn)分析[J].科技創(chuàng)新與應(yīng)用,2013(27):77-78
[3]李宏著,譚娜.關(guān)系數(shù)據(jù)庫(kù)SQL 查詢(xún)語(yǔ)句優(yōu)化應(yīng)用[J].科技創(chuàng)新導(dǎo)報(bào),2011(36):94-95