甄明
摘要:本文對SqlServer數(shù)據(jù)庫性能調(diào)整及優(yōu)化進行研究,介紹了數(shù)據(jù)庫優(yōu)化的重要性,指出了首先通過系統(tǒng)優(yōu)化來提高SqlServer的整體性能,主要手段有優(yōu)化索引、優(yōu)化查詢語句、增加冗余數(shù)據(jù)、分割表、分割數(shù)據(jù)庫物理數(shù)據(jù)以及日志文件等手段。接下來又對硬件瓶頸進行分析,如何有針對性地升級硬件來有效提升SqlServer的整體性能,包括磁盤IOPS性能、磁盤吞吐量、CPU并發(fā)性能、系統(tǒng)內(nèi)存、網(wǎng)絡(luò)帶寬五個方面。
關(guān)鍵詞:SqlServer數(shù)據(jù)庫;系統(tǒng)優(yōu)化;性能調(diào)整
中圖分類號:TP311.13 文獻標(biāo)識碼:A 文章編號:1007-9416(2018)04-0040-02
隨著信息系統(tǒng)的普及,越來越多的公司使用ERP、WMS、OA等現(xiàn)代化信息系統(tǒng)管理業(yè)務(wù)流程,這些系統(tǒng)無一例外地依賴數(shù)據(jù)庫做支持。數(shù)據(jù)庫系統(tǒng)的性能直接影響著整體信息系統(tǒng)的性能。隨著系統(tǒng)長時間的運轉(zhuǎn),很多企業(yè)出現(xiàn)了數(shù)據(jù)庫性能下降,系統(tǒng)運行以及查詢出現(xiàn)緩慢的情況,如果盲目升級硬件,往往支出與收效不成正比,只有針對性地進行優(yōu)化與升級才能起到事半功倍的效果。本文對SqlServer數(shù)據(jù)庫系統(tǒng)的優(yōu)化措施進行探索和研究,從軟件和硬件兩個方面進行分析,在提高SqlServer數(shù)據(jù)庫系統(tǒng)性能的同時,以最小的風(fēng)險和成本,達到系統(tǒng)優(yōu)化的目的。
1 SqlServer數(shù)據(jù)庫的系統(tǒng)優(yōu)化
在Sqlserver數(shù)據(jù)庫使用中,如果出現(xiàn)查詢、更改數(shù)據(jù)性能低下等情況,應(yīng)首先分析是否能夠通過系統(tǒng)的優(yōu)化來解決。
1.1 優(yōu)化索引
優(yōu)化索引是加快數(shù)據(jù)庫查詢速度的方法,隨著業(yè)務(wù)查詢的增加,索引也應(yīng)該進行相應(yīng)地進行調(diào)整,盡量避免全表掃描。但索引也不是加的越多越好,增加索引雖然提升了查詢速度,但也會降低數(shù)據(jù)插入的速度。因此需要對正在使用的查詢進行分析,使索引與程序整體結(jié)合起來,才能產(chǎn)生最佳的優(yōu)化方案提升查詢速度。
同時還需要關(guān)注索引的碎片問題,隨著數(shù)據(jù)庫使用伴隨的增刪操作,會產(chǎn)生索引碎片,降低查詢的性能。當(dāng)碎片程度小于20%時通常無需處理,當(dāng)碎片程度在20%-40%之間時建議重組索引,當(dāng)碎片程度大于40%時建議重建索引,來提升查詢性能。
1.2 優(yōu)化查詢語句
通過查看SqlServer活動監(jiān)視器,能夠分析近期占用資源比較大的查詢,然后優(yōu)化查詢語句的執(zhí)行效率,盡量避免在where條件中使用null判斷,like模糊、不必要的表連接、不必要的條件判斷等耗時的操作。
1.3 增加數(shù)據(jù)冗余
對于經(jīng)常進行增改的表,增加一個只讀的冗余備份,能夠有效避免Lock鎖引發(fā)的性能問題,提升并發(fā)性能;對于經(jīng)常使用的統(tǒng)計值,單獨建立數(shù)據(jù)庫表,進行數(shù)據(jù)落地,能夠大幅縮減每次計算的時間。
1.4 分割表
對于數(shù)據(jù)量很大的表,可以根據(jù)使用需求的不同,考慮按年、按類型等等手段進行分割,避免單個表過大影響讀寫性能,大幅提升查詢篩選的效率。
1.5 分割數(shù)據(jù)庫物理數(shù)據(jù)以及日志文件
對于使用頻率很高的數(shù)據(jù),可以根據(jù)數(shù)據(jù)類型進行分割,將不同的數(shù)據(jù)庫數(shù)據(jù)文件、數(shù)據(jù)庫Log日志文件、數(shù)據(jù)庫臨時文件分離到不同的磁盤上,能夠進一步減少磁盤IO的延遲,提升數(shù)據(jù)庫的物理讀寫性能。
2 SqlServer數(shù)據(jù)庫的硬件優(yōu)化
當(dāng)系統(tǒng)優(yōu)化已難以提升SqlServer數(shù)據(jù)庫的性能時,很可能是硬件瓶頸影響了整體效能。
2.1 磁盤IOPS性能
當(dāng)下數(shù)據(jù)中心普遍采用的依然是機械磁盤陣列,機械磁盤的缺點是隨機讀寫的性能較低,通過監(jiān)測磁盤讀寫延遲,能夠有效發(fā)現(xiàn)是否發(fā)生磁盤讀寫性能瓶頸,當(dāng)發(fā)生磁盤瓶頸以往普遍采用堆疊磁盤的方式提升性能,往往需要幾十塊甚至數(shù)百塊機械磁盤的堆疊,不但占用大量機柜空間,同時發(fā)熱量耗電量都不低,性能提升的效果往往也不顯著。
隨著固態(tài)磁盤陣列技術(shù)日趨成熟,通過使用固態(tài)磁盤陣列往往能達到立桿見影的效果。單塊固態(tài)硬盤的8K隨機讀寫IOPS普遍是SAS硬盤的50倍甚至更高,而SqlServer的存儲頁面即8K字節(jié),8K隨機讀寫直接決定了SqlServer數(shù)據(jù)庫存取硬盤時的性能。
2.2 磁盤吞吐量
通過監(jiān)測SqlServer數(shù)據(jù)庫的數(shù)據(jù)流量能夠斷定是否發(fā)生磁盤吞吐量瓶頸,通過增加HBA卡通路,提高數(shù)據(jù)吞吐量,能夠大幅減小光纖通道的隊列深度,提高Sql任務(wù)的執(zhí)行速度。
2.3 CPU并發(fā)性能
當(dāng)監(jiān)測SqlServer數(shù)據(jù)庫運行的CPU占用率,長時間處于滿載運行的狀態(tài)時,通常就是同時并發(fā)執(zhí)行的任務(wù)過多導(dǎo)致CPU產(chǎn)生瓶頸,此時通過增加CPU邏輯核心能夠大幅增加SqlServer同時執(zhí)行任務(wù)的能力。
2.4 系統(tǒng)內(nèi)存
當(dāng)系統(tǒng)內(nèi)存發(fā)生瓶頸時,SqlServer數(shù)據(jù)庫系統(tǒng)會頻繁讀寫磁盤進行數(shù)據(jù)交換,大幅加重磁盤負(fù)擔(dān),影響系統(tǒng)的整體性能。此時擴充系統(tǒng)內(nèi)存能有效提升系統(tǒng)運行的效能。
2.5 網(wǎng)絡(luò)帶寬
大數(shù)據(jù)分析往往對帶寬有很高的要求,如果網(wǎng)絡(luò)延遲時間過大那么就是網(wǎng)絡(luò)帶寬出現(xiàn)瓶頸。當(dāng)網(wǎng)絡(luò)帶寬發(fā)生瓶頸,同時也難以有效進行數(shù)據(jù)壓縮和數(shù)據(jù)分布時,提升網(wǎng)絡(luò)帶寬就成了最好的解決方法,通過提升網(wǎng)絡(luò)帶寬,能夠有效解決網(wǎng)絡(luò)數(shù)據(jù)擁堵,降低網(wǎng)絡(luò)延遲時間,提升數(shù)據(jù)存取的效率。
3 結(jié)語
本文通過對基于SqlServer數(shù)據(jù)庫性能調(diào)整及優(yōu)化的研究,指出了為了提升了Sqlserver數(shù)據(jù)庫的整體性能,提高工作效率,應(yīng)當(dāng)進行數(shù)據(jù)庫優(yōu)化。本文對從系統(tǒng)優(yōu)化與硬件優(yōu)化兩個方面,對提升SqlServer性能進行較為詳盡的闡述,指明了SqlServer數(shù)據(jù)庫的優(yōu)化方向。
參考文獻
[1]趙穎,沈金龍.基于SQL Server的應(yīng)用程序的優(yōu)化[J].電子工程師,2000,(05):7-9.
[2]楚書來,肖堯.對SQLServer中查詢優(yōu)化的幾點思考[J].計算機光盤軟件與應(yīng)用,2013,(02):186+188.
[3]郭曉丹.基于Oracle數(shù)據(jù)庫系統(tǒng)性能調(diào)整與優(yōu)化研究.數(shù)字技術(shù)與應(yīng)用,2015,(05):107.