朱志躍++鄧大川
【摘 要】 數(shù)據(jù)庫的優(yōu)化是指通過對數(shù)據(jù)庫數(shù)據(jù)、網(wǎng)絡(luò)、硬件、操作體系和應(yīng)用程序的優(yōu)化來跨過其I/O存儲的瓶頸、提升中央處理器的利用率和減少資源競爭。數(shù)據(jù)庫的優(yōu)化是一個十分繁雜的問題。因為,對數(shù)據(jù)庫進行優(yōu)化需要專業(yè)的數(shù)據(jù)庫理論知識,更需要實際經(jīng)驗。本文將對數(shù)據(jù)庫的優(yōu)化工作進行分析和研究。
【關(guān)鍵詞】 數(shù)據(jù)庫 優(yōu)化技術(shù) 分析
伴隨現(xiàn)代企業(yè)的飛速發(fā)展,各企業(yè)為了提升行業(yè)知名度和企業(yè)的創(chuàng)新技能,都自然而然地運用了信息化管理模式。然而,要想利用信息化管理模式為企業(yè)服務(wù),就必須熟悉數(shù)據(jù)庫技術(shù)。并且,要使企業(yè)的信息體系平穩(wěn)、安全運行,就一定要讓數(shù)據(jù)庫的應(yīng)用系統(tǒng)平穩(wěn)、高效運轉(zhuǎn)。所以,分析和研究數(shù)據(jù)庫優(yōu)化技術(shù)具有巨大的現(xiàn)實意義。
1 優(yōu)良的數(shù)據(jù)庫性能的判定標(biāo)準(zhǔn)
對于同一個系統(tǒng)來說,可以設(shè)計出多種數(shù)據(jù)庫模型。然而,這些數(shù)據(jù)庫模型由于其質(zhì)量的差異性會呈現(xiàn)出不同的功效。并且,對需求相同但設(shè)計不同的數(shù)據(jù)庫,工作人員也會設(shè)計出不同的數(shù)據(jù)庫模型。而這些數(shù)據(jù)庫性能是否得到了充分的發(fā)揮,可以由兩個指標(biāo)來測量:即響應(yīng)時間和吞吐量,并且響應(yīng)越迅速,吞吐量就越大,數(shù)據(jù)庫性能就越好。以下是常規(guī)的大型數(shù)據(jù)庫的性能標(biāo)準(zhǔn):
(1)單項記錄的更新時間應(yīng)在1秒內(nèi);而多項記錄的更新時間應(yīng)在10秒以內(nèi)。(2)對于4個表以下的數(shù)據(jù)的查詢時間應(yīng)在5秒以下。(3)對于特定限度的查詢應(yīng)在10秒以內(nèi)。但是,整個表的查詢時間應(yīng)在30秒以下。
2 數(shù)據(jù)庫優(yōu)化應(yīng)遵守的方式
數(shù)據(jù)庫優(yōu)化是指有目標(biāo)性地調(diào)節(jié)部件及改良性能,使數(shù)據(jù)庫的吞吐量增大,縮短響應(yīng)時間。下面筆者將歸納出數(shù)據(jù)庫性能優(yōu)化應(yīng)遵守的一些辦法。
2.1 設(shè)定科學(xué)的性能目標(biāo)
在優(yōu)化開始前,需要設(shè)定科學(xué)的性能目標(biāo)。并且,設(shè)定目標(biāo)應(yīng)遵循可量化、可達成的準(zhǔn)則。其中,可量化是指應(yīng)明確在量化的過程中必需的性能指標(biāo);而可達成是指必須定義目前的性能指標(biāo)。
2.2 明確影響數(shù)據(jù)庫性能的因素
當(dāng)數(shù)據(jù)庫運行了一段時間后,性能會有所下降,此時不能靠猜測并隨意進行更改,因為這會造成資源的浪費。
2.3 明確改良數(shù)據(jù)庫性能的元素
因為改良數(shù)據(jù)庫性能的辦法都能形成嚴(yán)重的負(fù)面效果,所以在達成既定目標(biāo)時,應(yīng)終止全部工作。
3 數(shù)據(jù)庫優(yōu)化的方法
數(shù)據(jù)庫優(yōu)化的方法有許多,并且不同的數(shù)據(jù)庫有不同的方法。下面筆者將羅列出幾種具體的方法。
3.1 數(shù)據(jù)庫服務(wù)器內(nèi)部存儲空間的分配
充實的內(nèi)存可以加快數(shù)據(jù)庫的運轉(zhuǎn)速度和提升中央處理器的使用效率,而內(nèi)部存儲空間不足時會極大地降低中央處理器的使用效率。
3.2 科學(xué)的物理儲存途徑
數(shù)據(jù)庫在處置海量數(shù)據(jù)時,應(yīng)優(yōu)先考慮物理儲存途徑。其中,物理儲存途徑主要包含:數(shù)據(jù)在磁盤中的散布狀態(tài)、索引文件的組織、日志文件的散布等等。而數(shù)據(jù)在磁盤中的散布方式主要是分離靜態(tài)數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)。其中,數(shù)據(jù)庫中的靜態(tài)數(shù)據(jù)主要是數(shù)據(jù)詞典,該類數(shù)據(jù)的改動頻率較低;然而,查詢時會多次用到。而使用索引有利于迅速訪問表中的數(shù)據(jù),它能極大地減少找尋到特殊數(shù)據(jù)行所需的I/O操作。使用索引時應(yīng)遵守以下法則。
(1)在設(shè)立索引時,若是為一個經(jīng)常被更新的列設(shè)立索引,則會使數(shù)據(jù)庫性能變得低下,而一張表的索引太多會影響到該表的更新性能。這是由于更新一旦出現(xiàn),該表全部索引都要及時作出改變,這樣會耽誤運行時間。(2)對于小型表來講,不用設(shè)立索引。這是由于小表可以直接掃描,這樣速度更快并且維護成本較低。(3)對重復(fù)值極大的列,應(yīng)設(shè)立位圖索引而非常規(guī)索引。因為,如果針對這樣的列進行常規(guī)索引的設(shè)立,其查詢率會受到影響,從而增大索引建設(shè)的工作量。
3.3 利用SQL語句的優(yōu)化技術(shù)來提升數(shù)據(jù)庫的效率
SQL語句的利用可以極大地提升數(shù)據(jù)庫的性能。一個優(yōu)良的運用程序容許數(shù)據(jù)庫對一萬個以上的并發(fā)用戶進行查詢。因為網(wǎng)絡(luò)上的信息傳送是“對話式”的傳送,要在數(shù)據(jù)庫和客戶端間傳輸每個批量處理和結(jié)果集;為了完成客戶端和數(shù)據(jù)庫之間的過量網(wǎng)絡(luò)傳送,就需要采用大型數(shù)據(jù)庫所供給的儲存過程和觸發(fā)器來使信息最小化,以降低網(wǎng)絡(luò)I/O的載荷。
3.4 規(guī)避放棄使用索引的語句操作
(1)因為IN操作符性能較差,所以應(yīng)盡量規(guī)避其在SQL中的應(yīng)用。此外,NOT IN操作符應(yīng)停止應(yīng)用。其對應(yīng)的語句操作符應(yīng)由EXISTS或NOTEXISTS來替代。(2)因為IS NULL或IS NOT NULL操作會放棄利用索引,而引發(fā)全盤掃描,所以在對NULL沒有強制要求的狀況下,利用它時應(yīng)變更為與某個默認(rèn)值進行比對。例如:將a is not null改成a>0或a>?(空值)。(3)因為連接后的UNION操作符會對其生成的結(jié)果集進行順序的排列和計算,在其返回結(jié)果前會將重復(fù)的記錄予以剔除。因此,在未進行重復(fù)記錄的狀況下可以用UNION ALL來替代。(4)查詢字段應(yīng)明確,SELECT﹡語句要避免用到,贏不到的字段不用返還。(5)因為函數(shù)會對索引產(chǎn)生影響,所以應(yīng)規(guī)避函數(shù)在索引列上的運用。(6)假如列上的數(shù)據(jù)種類與有關(guān)常量值不相符合,則會形成隱式轉(zhuǎn)換。例如year=“2014”條件將致使year列隱式轉(zhuǎn)換為字符數(shù)據(jù)種類,進而使year列無法使用索引。
3.5 WHERE后的條件順序影響
WHERE后的條件順序會影響到大數(shù)據(jù)表的查詢:
例如:語句一:SELECT Sname
FROM shop,SC
WHERE Item=‘彩電AND shop.S﹟=SC.S﹟
語句二:SELECT Sname
FORM shop,SC
WHERE shop.S﹟=SC.S﹟AND Item=‘彩電endprint
語句一是先連接再進行選擇,其運行時間是152秒;語句二是先進行選擇后做連接,其運行時間是7.5秒。因此在條件容許的狀況下,應(yīng)先進行挑選后作連接。
3.6 FORM后的查詢表順序的影響
FORM后列表的順序會影響SQL語句的執(zhí)行效果。因為FORM后的列表會被優(yōu)先處理,因此在多個查詢表存在的狀況下,應(yīng)將記錄條數(shù)最少的作為其基礎(chǔ)表。為規(guī)避因為表的順序不合適從而耗損服務(wù)器資源的狀況發(fā)生,在鏈接查詢表數(shù)多于三個時,挑選交叉表作為其基礎(chǔ)表。
3.7 關(guān)于氣象系統(tǒng)數(shù)據(jù)庫的優(yōu)化
在由采集器采集到的氣象信息中,有溫度、壓力、濕度、風(fēng)向、風(fēng)速、能見度、陽光輻射、大氣電場、降水等9類信息,而在對九種信息數(shù)據(jù)庫優(yōu)化方法中,通常通過改良數(shù)據(jù)庫文件和數(shù)據(jù)表的設(shè)置來實現(xiàn)。當(dāng)系統(tǒng)的業(yè)務(wù)運用相對集中在單一的數(shù)據(jù)表上時,這些表的行數(shù)往往達到千萬甚至數(shù)億行。而盡可能規(guī)避全表掃描或降低查詢造成的系統(tǒng)開銷是數(shù)據(jù)庫優(yōu)化的至關(guān)重要的舉措。所以,應(yīng)提升I/O表的讀寫效率,提升系統(tǒng)數(shù)據(jù)庫的工作性能。
4 結(jié)語
伴隨科技和經(jīng)濟的進步,數(shù)據(jù)庫的優(yōu)化成為了一個系統(tǒng)工程。并且,在數(shù)據(jù)庫運行的過程中,影響其性能的元素可謂繁多。而不同的應(yīng)用程序需求又不盡相同,這就使數(shù)據(jù)庫技術(shù)人員要找到實用性佳的優(yōu)化技術(shù)來對數(shù)據(jù)庫進行優(yōu)化。然而,值得一提的是:要想一步到位地找到優(yōu)化技術(shù)是不科學(xué)的。所以,在數(shù)據(jù)庫研發(fā)和保護的過程中,數(shù)據(jù)庫技術(shù)人員應(yīng)結(jié)合實際狀況對其進行解析和調(diào)節(jié)。
參考文獻:
[1]張立新.數(shù)據(jù)挖掘與數(shù)據(jù)庫優(yōu)化技術(shù)在煤礦安全監(jiān)管系統(tǒng)中的應(yīng)用[J].煤炭技術(shù),2013,(11):106-107.
[2]張麗君.基于規(guī)范化理論的數(shù)據(jù)庫優(yōu)化技術(shù)[J].計算機光盤軟件與應(yīng)用,2012,(12):141.
[3]烏嵐.基于多樣約束模型的遠(yuǎn)程教育數(shù)據(jù)庫優(yōu)化查詢算法[J].科技通報,2013,29(1):154-156,180.
[4]張寶政.基于查詢語句之外的數(shù)據(jù)庫優(yōu)化技術(shù)研究[J].硅谷,2012,(13):85-85,131.
[5]甘志城.基于WEB的ACCESS數(shù)據(jù)庫優(yōu)化策略[J].計算機光盤軟件與應(yīng)用,2013,(3):109-110.endprint