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