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