程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server性能調教系列(1)-概述

SQL Server性能調教系列(1)-概述

編輯:關於SqlServer


  一. 前言

  近期計劃寫一點有關SQL Server性能調校方面的想法, 就是太繁雜沒有整理出來頭緒.在我們寫SQL,設計Table或者做DBA, 或者做項目時,會有好多性能方面的考量,好多論壇裡面也會常常提問到: 為何我這個SQL運行的這麼慢或者效率很低,如果做性能方面的調優?

  如果管理的數據庫比較大(maybe >50GB),性能方面的考量就顯得非常重要了. 在業務邏輯層面上當然希望後台的數據能夠快速的處理,提交一個請求能夠得到快速的回應. 如果後台數據處理太慢的話,前台的頁面就會出現假死的現象,容易給User造成錯覺,還以為是程序死掉了.

  SQL Server是當前使用最廣泛的大型數據庫系統之一,大型數據庫系統運行一段時間後就會出現運行緩慢、性能下降、故障增多等問題,為了使系統維持正常運行,必須對系統不斷進行"調校"。這樣才能夠使我們的前台頁面或後台數據處理能夠高效的執行. 性能調校不是一件簡單的事,一般來說需要有廣泛的經驗與知識,不單單是數據庫的經驗,還要對商業邏輯、系統架構設計、編寫應用程序、操作系統、架設網絡環境、使用各種偵測與監控工具程序、安全與防毒等,都有基本的了解,才能在復雜的系統中,找到症結所在。

  我不是性能調校方面的專家,只能提出自己的一點淺見與想法,分享出來. 請各位博友專家學者指教,也歡迎一起交流!

  二. 性能調校理論

  運用80/20原則,找到最影響效率的20%進行優化,就能夠取得80%甚至更多的效果.

  1. 調校的五個基本原理

  (1). 全局考慮,局部休整.

  正確的找到問題,對數據庫的干涉減到最小,才能有效的調優.在做一些局部的調整時,一定要考慮全局性的因素.

  (2). 劃分打破瓶頸.

  大多數情況系統運行緩慢,是由於系統中的某個模塊占用的大量的資源,阻礙的其他進程的訪問,進一步限制系統的性能,造成瓶頸.

  (3). 啟動成本高,運行成本低.

  啟動的開銷,比運行的開銷低. 應該用盡可能少的啟動次數來獲取最好的性能.

  (4). 服務器和客戶端之間合 理的任務分配,loading均衡.

  把loading均衡,如果有多個server, 可以平分loading,以提高整體的性能.

  (5). 性能價格比.

  SQL Server的高速度需要搞配置的硬件做支撐 , 所以在性能與價格之間需要一個權衡點.

  2. 調校就是要找出系統的瓶頸, 做優化以消除瓶頸,提高系統運行效率.剛開始做時,可以從以下幾個方面考慮.

  (1). Server硬件(CPU,IO,ROM, 如果存在瓶頸可以考慮硬件升級)

  (2). RAID

  (3). SQL Server配置

  (4). Table結構設計(包括Index的有效使用)

  (5). 定期的維護計劃(包括Backup History Data,Rebuild Index,Reorganize Index,Shrink Database等)

  (6). T-SQL編程(找出運行效率比較低的SQL語句,做優化)

  三. 性能調校方法及優化技巧

  1.用Server性能監視器做監測(介紹Performance Monitor, PowerShell Get-Counter兩個工具)

  2. Profile,做trace追蹤SQL的執行,找出耗費資源比較大的SQL語句或SP

  3. SQL Server Configuration

  4. Index and T-SQL Program

  .

  .

  .

  ......

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved