常玉明
摘 要:在數(shù)據(jù)庫應(yīng)用系統(tǒng)中的數(shù)據(jù)量不斷增大的背景下,效率成為數(shù)據(jù)庫在應(yīng)用與開發(fā)管理中需要解決的首要關(guān)鍵,對于數(shù)據(jù)庫的優(yōu)化,不但要對邏輯性數(shù)據(jù)庫與物理性數(shù)據(jù)硬件、服務(wù)器的硬件平臺進(jìn)行優(yōu)化,還要對SQL語句的本身查詢進(jìn)行優(yōu)化。該文主要對SQL數(shù)據(jù)庫中對效率產(chǎn)生影響的問題進(jìn)行分析,探討相關(guān)的性能優(yōu)化對策,從而提高SQL數(shù)據(jù)庫的性能與運(yùn)行效率。
關(guān)鍵詞:SQL 數(shù)據(jù)庫 性能優(yōu)化
中圖分類號:TP392 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2015)03(a)-0017-01
SQL(結(jié)構(gòu)化查詢語言)數(shù)據(jù)庫早已被大眾所熟知和廣泛接受,一句簡單的SQL命令語句就可以執(zhí)行復(fù)雜的數(shù)據(jù)操作,有著功能強(qiáng)大、兼容性強(qiáng)、應(yīng)用范圍廣、易學(xué)易會上手快等諸多優(yōu)勢,從開發(fā)出來就受到熱烈的追捧。但是,隨著信息技術(shù)不斷發(fā)展,信息量爆發(fā)式的增長,因數(shù)據(jù)庫系統(tǒng)設(shè)計的不規(guī)范性等導(dǎo)致的效率不高、性能低下問題日益突出,所以,對SQL數(shù)據(jù)庫進(jìn)行性能優(yōu)化研究,以使其功能優(yōu)勢得到最大限度的發(fā)揮,從而提高系統(tǒng)效率有著重要意義。
1 影響SQL數(shù)據(jù)庫性能的一些主要問題
1.1 數(shù)據(jù)庫的設(shè)計問題
首先,表的設(shè)計。對表的設(shè)計需要依據(jù)具體的情況進(jìn)行,處理好表中的每一個細(xì)節(jié)和樣式,減少給數(shù)據(jù)庫數(shù)據(jù)分析的清晰度以及數(shù)據(jù)信息的準(zhǔn)確性造成的影響。其次,索引的設(shè)計。使用索引可快速訪問數(shù)據(jù)庫表中的特定信息,與書本中的目錄相似,能夠提高檢索效率。索引的設(shè)計是否符合要求、是否得當(dāng)對SQL數(shù)據(jù)庫的具體執(zhí)行速度有直接的、決定性的關(guān)系,理解索引是進(jìn)行數(shù)據(jù)庫性能調(diào)優(yōu)的起點(diǎn)。再次,視圖的設(shè)計。其是查看數(shù)據(jù)庫中的數(shù)據(jù)信息的主要方法之一,它的好壞對數(shù)據(jù)的查看以及處理有著直接的影響。最后,數(shù)據(jù)的設(shè)計。在進(jìn)行數(shù)據(jù)設(shè)計時應(yīng)將繁雜的內(nèi)容簡單化,以達(dá)到一看就懂的效果,否則用戶難以接受。應(yīng)減少多余的數(shù)據(jù)信息,多余的信息會給用戶操作帶來一定的困難,在數(shù)據(jù)庫進(jìn)行回復(fù)數(shù)據(jù)與多方連接時也會引發(fā)一些負(fù)面的影響。
1.2 事物的管理問題
事物是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位,其具有原子性、一致性、隔離性和持續(xù)性的特征。編寫合理有效的事務(wù),并進(jìn)行科學(xué)的管理,對保持?jǐn)?shù)據(jù)庫的完整性,提高數(shù)據(jù)庫系統(tǒng)效率有巨大的積極意義。
1.3 應(yīng)用程序的質(zhì)量問題
應(yīng)用程序的質(zhì)量對數(shù)據(jù)庫性能的影響主要體現(xiàn)在:若程序的質(zhì)量比較高,就會大幅度的減少工作的時間,提高執(zhí)行的效率。相反,若程序的質(zhì)量比較差,不僅影響查詢結(jié)果的準(zhǔn)確性,還會對數(shù)據(jù)庫造成負(fù)面影響,降低信譽(yù)度。根據(jù)統(tǒng)計,對網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)進(jìn)行優(yōu)化所獲得的性能提升全部加起來只占數(shù)據(jù)庫應(yīng)用系統(tǒng)性能提升的40%左右,其余60%的系統(tǒng)性能提升全部來自對應(yīng)用程序的優(yōu)化。
1.4 硬件的配置問題
在計算機(jī)中,其系統(tǒng)主要分成軟件系統(tǒng)與硬件系統(tǒng)兩個部分,其中,硬件系統(tǒng)是軟件系統(tǒng)的載體,硬件配置的高低對計算機(jī)運(yùn)行速度與效率有直接影響。雖然我國大部分區(qū)域都已經(jīng)普及計算機(jī),但是因計算機(jī)的硬件配置上還存在一些不足,使得SQL 數(shù)據(jù)庫的性能在配置不足的計算機(jī)上難以正常發(fā)揮。
2 優(yōu)化SQL數(shù)據(jù)庫性能的一些主要措施
2.1 對索引的優(yōu)化措施
索引是從數(shù)據(jù)庫中獲取數(shù)據(jù)的最高效方式之一,合理有效的使用索引可以大幅度提高數(shù)據(jù)庫性能,但過多或不當(dāng)?shù)乃饕矔?dǎo)致系統(tǒng)低效,甚至?xí)?dǎo)致索引碎片。對索引的優(yōu)化關(guān)鍵是遵循索引建立的原則,消除認(rèn)識上的誤區(qū)。下面這些認(rèn)識是極端錯誤的:(1)主鍵就是聚集索引;(2)只要建立索引就能顯著提高查詢速度;(3)把所有需要提高查詢速度的字段都加進(jìn)聚集索引,以提高查詢速度。一些好的索引使用經(jīng)驗(yàn):(1)用聚集索引比用不是聚集索引的主鍵速度快;(2)用聚集索引比用一般的主鍵作order by時速度快,特別是在小數(shù)據(jù)量情況下;(3)不要索引常用的小型表;(4)不要索引 memo/notes 字段和不要索引大型文本字段(許多字符),等等。
2.2 對語句的優(yōu)化措施
SQL的語句優(yōu)化指的是將原本散亂繁雜的語句經(jīng)相關(guān)處理手段與技術(shù)改進(jìn)之后,變成具有一致性與統(tǒng)一性的新語句,SQL語句消耗了70%~90%的數(shù)據(jù)庫資源,所以對語句的優(yōu)化是數(shù)據(jù)庫性能優(yōu)化的重點(diǎn)。傳統(tǒng)的優(yōu)化方法是采用手工重寫的方式,通過校驗(yàn)比對來獲取性能較佳的語句,這完全依賴于人的經(jīng)驗(yàn),經(jīng)驗(yàn)的多寡決定了優(yōu)化后SQL語句的性能。另外一種方法是使用優(yōu)化工具,對語句優(yōu)化的工具主要包括:(1)執(zhí)行計劃與分析工具:這類工具對輸入的SQL語句從數(shù)據(jù)庫提取執(zhí)行計劃,并對執(zhí)行計劃中關(guān)鍵字的含義進(jìn)行解釋;(2)添加索引建議的SQL語句優(yōu)化工具:其主要是通過對輸入的SQL語句的執(zhí)行計劃的分析來產(chǎn)生是否要增加索引的建議;(3)人工智能SQL語句優(yōu)化工具:如LECCOSQL Expert,其本質(zhì)上是借助于人工智能技術(shù),對SQL語句自動重寫,并獲取性能最好的SQL語句。
2.3 服務(wù)器配置的優(yōu)化措施
CPU是保障計算機(jī)正常運(yùn)行的基礎(chǔ),其在維護(hù)時也作為重點(diǎn)對象進(jìn)行保護(hù),CPU一旦在較高速率下進(jìn)行長時間的工作,就要注意及時對其進(jìn)行升級。內(nèi)存作為計算機(jī)存儲器,其主要作用就是存儲程序與數(shù)據(jù),所以內(nèi)存的狀態(tài)良好是SQL數(shù)據(jù)庫功能優(yōu)化的關(guān)鍵。而在內(nèi)存中,若是系統(tǒng)占用過大會影響程序的正常運(yùn)行,因此,必須在設(shè)計SQL數(shù)據(jù)庫時盡量不占用過多內(nèi)存。此外,磁盤也會影響到數(shù)據(jù)庫運(yùn)行的效率,處理的關(guān)鍵就是增加磁盤容量和提高磁盤I/O性能。
2.4 物理的優(yōu)化措施
在物理優(yōu)化中,首先要對文件組進(jìn)行優(yōu)化,將多個磁盤驅(qū)動器內(nèi)的特定對象移到單個磁盤當(dāng)中,并將數(shù)據(jù)庫的文件分成多個文件組,在用戶使用時可利用已分好的文件組實(shí)施查詢與修改等工作,從而提高數(shù)據(jù)庫性能;其次對磁盤進(jìn)行優(yōu)化,使用RAID(獨(dú)立冗余磁盤陣列)可以增強(qiáng)數(shù)據(jù)整合度,增強(qiáng)容錯功能,增加吞吐量或容量,在一個磁盤出現(xiàn)故障時其他磁盤可以替代,提高數(shù)據(jù)庫可靠性。
3 結(jié)語
SQL數(shù)據(jù)庫性能與運(yùn)行環(huán)境、軟件架構(gòu)、設(shè)計、開發(fā)、日常維護(hù)等過程息息相關(guān),優(yōu)化工作涉及到數(shù)據(jù)庫工作中多個針對性的對象,在優(yōu)化過程中要充分考慮各個優(yōu)化對象的相關(guān)性,各個環(huán)節(jié)做到緊密結(jié)合是優(yōu)化成功的關(guān)鍵。該文主要對SQL數(shù)據(jù)庫性能優(yōu)化進(jìn)行研究分析,望給予今后工作提供有用借鑒。
參考文獻(xiàn)
[1] 高欣.關(guān)于如何優(yōu)化SQL數(shù)據(jù)庫性能的幾點(diǎn)分析[J].科技創(chuàng)新與應(yīng)用,2013,12(27):312-313.
[2] 李宏著,譚娜.關(guān)系數(shù)據(jù)庫SQL查詢語句優(yōu)化應(yīng)用[J].科技創(chuàng)新導(dǎo)報,2011,5(36):21-28.
[3] 丁燕云,魏娟.淺析SQL數(shù)據(jù)庫的性能優(yōu)化問題[J].科技信息:學(xué)術(shù)研究,2014,2(34):20-23.
[4] 楊柳.SQL數(shù)據(jù)庫的性能分析與優(yōu)化策略研究[J].科技創(chuàng)新導(dǎo)報.2011,28(1):314-316.