程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2008的I/O性能監控

SQL Server 2008的I/O性能監控

編輯:關於SqlServer

I/O性能診斷

SQL Server性能非常依賴於I/O子系統。除非你的數據庫適合物理內存,SQL  Server經常地會有數據庫頁面進出緩存池。這樣就發生了實質的I/O流量。同樣,在事務被明確的提交 前,日志記錄需要寫入磁盤。SQL  Server為各種目的可以使用tempdb,例如存儲中間結果,排序,保 持行的版本或其他。所以好的I/O子系統對於SQL  Server性能非常重要。

I/O的性能取決於以下 一些方面:

磁盤類型包括IDE、SATA、SCSI、SAS、Fibre Channel drive等類型,其中IDE、SATA一般 用在個人電腦上。

同時為了在數據安全、數據性能和數據容量之間做平衡,又發展出了RAID,RAID是 一種把多塊獨立的磁盤按不同的方式組合起來形成一個硬盤組,從而提供比單個硬盤更高的存儲性能和提高 數據備份技術。RAID主要包括RAID0~RAID7等幾個規范,常用的RAID類型為RAID0、RAID1、RAID5,RAID10。

此外根據連接方式不同還可以分為:Direct Attached Storage(DAS),Storage Area  Networks(SAN),Fibre Channel Storage Area Networks,iSCSI Storage Area  Networks。

吞吐量和IOPS指標

吞吐量主要取決於陣列的架構,光纖通道的大小以及硬盤的個 數。陣列的 架構與每個陣列不同,但也都存在內部帶寬,不過在一般情況下,內部帶寬都設計的很充足,不是瓶頸所在 。其次是光纖通道對數據流量的影響,為了達 到1GB/s的數據流量要求,我們必須使用1GB*8=8GB的光纖卡, 也可以用4塊2GB的光纖卡。其實是硬盤的個數,可以參考以下指標計算方式,假設 為了滿足1GB的數據流量 要求,所必須的磁盤個數。

IOPS(Input/Output Operations Per Second),即每秒進行讀寫(I/O)操作的次數,多用於數據庫等場合,衡量隨機訪問的性能。

決定IOPS的主要取決於陣列的算法、cache命中率以及磁盤個數。Cache命中率取決於數據的分布、 Cache Size的大小、數據的訪問規則,以及Cache的算法。

磁盤的限制,每個磁盤能處理的IOPS是有 限制的,通常情況下每個磁盤的最大IOPS是確定的,比如IDE和SATA硬盤的IOPS大致在100以內 (我們可以使 用HD  Tune工具進行IOPS測試),而且IOPS的測試結果與測試方式(例如隨機讀寫和順序讀寫、讀和寫的 比例、傳輸數據庫尺寸的大小、磁盤的數量)有很大 關系,盡管如此磁盤的IOPS指標還是對我們評估磁盤的 壓力和是否能夠滿足系統的性能需求有著一定的指導意義。

假設現在的業務需求是10000 IOPS,120 塊SCSI磁盤,那麼在不同的Cache命中率、不同的讀寫比例情況下,不同的RAID級別對每塊磁盤的IOPS需求是 多少呢?

Raid 0 –每個磁盤的I/O計算= (讀+寫) /磁盤個數

Raid 1 --每個磁盤的I/O計算= [ 讀+(2*寫)]/2

Raid 5 --每個磁盤的I/O計算= [讀+(4*寫)]/磁盤個數

Raid 10 --每個磁盤的 I/O計算= [讀+(2*寫)]/磁盤個數

此外當吞吐率超過85%時,會出現I/O瓶頸,因此單個磁盤IOPS計算 規則為

((10000*(1-Cache命中率)*讀比例)+10000*寫比例*RAID系數)/磁盤數/0.85

即每塊磁盤的IOPS大約在200左右即可滿足RAID0、RAID5、RAID10的要求。

此外,關於SQL Server的 部署一般規劃和建議如下:

操作系統和SQL Server單獨構建在RAID1的磁盤鏡像上;出於高速和安全的 原則,日志文件需要單獨安裝在RAID1/RAID10上;tempdb文件最好放在RAID0上,而數據文件出於安全、性能 、容量、成本的綜合考慮一般則使用RAID5。

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