磁碟的壓力分析,主要使用下面幾個效能計數器 (針對單獨的物理盤,每個物理磁碟都會有一組):
- Avg. Disk Read Queue Length 讀佇列(越小越好,理想值 2 以下,佇列越高說明一個操作的響應時間越長)
- Avg. Disk Write Queue Length 寫佇列(越小越好,理想值 2 以下,佇列越高說明一個操作的響應時間越長)
- Avg. Disk sec/Read
- Avg. Disk sec/Write
- Disk Read Bytes/sec
- Disk Write Bytes/sec
步驟1.排除其他因素影響
步驟2. 磁碟問題定位
磁碟響應時間很長(磁碟佇列很高,請求需要排隊完成,所以表現為響應時間長)
磁碟佇列波動讀寫
步驟3.磁碟 問題分析與解決(通用步驟)
首先 有哪些情況會對磁碟造成壓力?
-
- 記憶體不足導致需要頻繁和磁碟互動 (一般為主因)
- 經常有大量冷資料需要從磁碟讀取,或經常有大批次髒頁一次寫入(checkpoint觸發)
- 磁碟讀寫速度,不能滿足業務需要
看一下這個系統的磁碟及資料庫檔案分佈
可以看到這個伺服器只配置了一塊物理磁碟
資料庫1
資料庫2
tempDB
2個業務頻繁的大資料庫,資料檔案、日誌檔案和系統tempDB都在同一個磁碟上!這樣磁碟的讀寫速度勢必不能滿足業務要求。
規劃磁碟分配的好處:假設你有兩個資料庫,業務操作都很繁忙,且讀/寫量都很大對磁碟的壓力都很大,那麼你自然會想到把他們分散到不同的磁碟上,這樣每個庫針對自己的磁碟讀/寫,不會互相影響且壓力相當於原來的1/2,從而可以提升磁碟操作的響應時間。
資料庫磁碟該怎麼劃分? 不同系統不同環境可能都不相同,下面給出一些簡單建議:
-
- 按照檔案型別劃分:資料檔案、日誌檔案、tempDB檔案、備份檔案,分別放在一個物理磁碟
- 按照資料庫劃分:不同的業務資料庫(壓力大的)分別放在一個物理磁碟,tempDB和備份檔案各一個物理磁碟。
上面的兩種分法是基本的劃分方式,但是根據系統壓力系統配置,均有不同情況。
當你的資料庫壓力較小,或磁碟資源緊張可以做適當的合併。當你的資料庫特別大,並且有多個檔案組,也可以選擇把檔案組更進一步細分。
類似於做了分割槽表,不同分割槽放在不同磁碟上,當需要多個分割槽資料時,可以利用IO並行提升效率。