影響SQL Server數據庫訪問速度的因素總結及優化方案
SQL Server數據庫訪問速度慢可能的原因有很多,本文我們對這些因素進行了總結,并給出了優化方案,接下來就讓我們一起來了解一下這部分內容吧。
性能影響因素
常見的影響數據訪問速度的因素,有以下幾種:
1. 沒有索引或者沒有用到索引 數據庫索引就像書籍中目錄一樣,使用戶在訪問數據庫數據時,不必遍歷所有數據就可以找到需要的數據。創建索引后,可以保證每行數據的唯一性,極大地提高數據檢索效率,這是一中犧牲空間換取性能的方法。沒有索引或者沒有用到索引是數據訪問速度慢最常見的因素,也是程序設計的一個缺陷所在。
2. I/O吞吐量小,形成了瓶頸效應 I/O吞吐量是影響數據訪問速度的客觀因素(硬件因素)。在一定的硬件環境下,利用優化的部署方案可適當提高I/O吞吐量。
3. 沒有創建計算列導致查詢不優化 計算列是一個比較特殊的列,不填寫任何設計類型,用戶不可以改變該列的值。計算列的值是通過一定的函數公式等以另一個或多個列的值為輸入值計算出的結果。如果沒相應的計算列,在一些數據查詢的時候需要對已有數據進行計算,從而浪費一部分性能。
4. 內存不足 對數據庫數據的查詢訪問毫無疑問會占用大量的內存空間,當內存不足的情況下,數據的訪問速度會受到明顯的影響甚至訪問出現超時情況,是影響數據訪問速度的客觀因素。
5. 網絡速度慢 網絡速度慢是影響數據訪問速度的客觀因素。可通過提高網絡訪問的位寬來解決。
6. 查詢出的數據量過大 當查詢出的數據量過大時,內存的占用、系統時間的占用等都影響數據訪問的速度。可以采用多次查詢、定位查詢、和查詢數據量控制來解決。
7. 鎖或者死鎖 鎖或者死鎖在數據庫數據訪問時會造成訪問者等待時間過程或者永久無法獲取到資源。這是查詢慢最常見的因素之一,是程序設計的缺陷,要盡量避免。
8. 返回不必要的行和列 在一般的數據查詢中,都盡可能多的獲取數據信息,這樣造成了不必要的數據遍歷,大大的增加了數據訪問的響應的時間。所以在一般的查詢中,盡量查詢少的行和列,將數據遍歷時間降到最低以滿足數據輸出需求。
9. 查詢語句不夠優化 在數據查詢訪問過程中,使用最頻繁的是使用自定義的查詢語句進行數據輸出的。所以編寫優化的查詢語句能夠很大程度上提高數據查詢訪問的速度。
性能優化 數據庫性能優化主要是提高數據訪問的速度,即提高數據庫響應速度的性能指標。性能優化主要分為主觀因素和客觀因素兩部分的優化。這里主要針對影響性能的客觀因素進行優化。
主觀因素優化
主觀因素主要是指服務器的硬件環境。主要優化有以下幾個方面:
1、 把數據、日志、索引放到不同的I/O設備上,增加讀取速度,數據量越大,提高I/O吞吐量越重要;
2、 縱向、橫向分割表,減少表的尺寸(sp_spaceuse);
3、 升級硬件;
4、 提高網絡訪問速度;
5、 擴大服務器的內存;配置虛擬內存:虛擬內存大小應基于計算機上并發運行的服務進行配置,一般設置為物理內存的1.5倍;如果安裝了全文檢索功能,并打算運行Microsoft搜索服務以便執行全文索引和查詢,可考慮將虛擬內存大小設置為至少計算機中物理內存的3倍;
6、 增加服務器CPU個數;其中并行處理比串行處理更需要資源。SQL SERVER根據系統負載情況決定最優的并行等級,復雜的需要消耗大量的CPU的查詢適合并行處理。不過更新操作UPDATE、INSERT、DELETE不能進行并行處理。
關于影響SQL Server數據庫訪問速度的因素總結以及優化方案的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】
- SQL Server 2008數據庫學習筆記
- SQL Server 2005數據庫nolock使用詳解
- SQL Server如何啟用Ad Hoc Distributed Queries?
- SQL Server 2008用存儲過程實現插入更新數據的實例
- 含有GROUP BY子句的查詢中如何顯示COUNT()為0的結果