目錄
診斷磁碟
io問題
...
1常見的磁碟問題
...
1容量替代了效能
...
1負載隔離配置有問題
...
2分割槽對齊配置有問題
... 2總結
... 2
關於io這一塊,前面的東西如磁碟大小,磁碟頻寬,隨機讀取寫入,順序讀取寫入,
raid
選擇,das
和san
比較都不講了。
直接就開始講關於
io問題的診斷和一般問題的處理。
io這一塊東西比較特殊,是資料庫的重點,因為資料庫一般都是
io密集型產品,為了讓
io速度更快,那麼資料庫會使用記憶體來代替磁碟。
io出現問題,可能會連帶其他資源的問題。
cpu,記憶體,網路。所以在分析問題的時候對資料庫結構的了解是必不可少的。
一般使用的工具就是
perfmon
特別是physical disk\disk reads/sec
和physical disk\ disk writes/sec。
對於這2個效能指標有乙個閥值的**:
• less than 10 ms = good performance
• between 10 ms and 20 ms = slow performance
• between 20 ms and 50 ms = poor performance
• greater than 50 ms = significant performance problem.
還有一些就是
pageiolatch_*,async_io_completion,io_completion,writelog
這些等待事件。關於這些
wait event
的查詢可以看
sql server
效能調優(方**)
在此之前,我們先要排除集中狀況就是,接下來討論的和
miss index
,較差效能的寫入,多餘的
io無關。單純從
io層面討論
io的配置問題。
io的配置問題最常見的有以下
4中情況:
• 容量替代了效能
• 負載隔離配置有問題
• 分割槽對齊配置有問題
• san
的頻寬配置有問題(這個
san
troubleshooting sql server: a guide for the accidental dba》)
乙個800g
的資料庫可以存放在1個
1t的磁碟中,也可以是通過
raid
拆分為多個磁碟,當然乙個磁碟的效能明顯比多個磁碟的要差。
可能讀到這裡不太清楚負載隔離是什麼,簡單的說就是
資料檔案要放在**,日誌檔案要放在**,
tempdb
資料庫要放在**。
負載隔離對
sqlserver
儲存計畫來說是很重要的,最簡單的,也是很容被忽略的,為啥,因為不知道日誌檔案
和資料檔案的區別,不知道生產庫和
tempdb
之間的關係和區別。日誌檔案是順序寫入的,資料檔案是隨即讀寫的,如果你把
2個放在同乙個磁碟或者
raid
裡面,要日誌檔案的順序讀寫算啥了。都體現不出優點來了。
所以日誌檔案和資料檔案要分開無疑。
有一片相關的文章:《
disk partition alignment best practices for sql server
》,很多人都不知道分割槽對齊是什麼概念,但是又
20%-30%
的效能都浪費在上面。
關鍵的問題就是有
63個保留扇區被用來
mbr。當
windows
建立分割槽的時候就會保留
31.5kb
的空間供
mbr使用。這樣就照成了不對齊,和
raid
的條帶單元代銷不對齊了。
raid
條帶的單元大小是從
4kb到
512kb的。
多數磁碟乙個扇區的大小是
512b
,但是ssd
是4kb
乙個扇區,
sqlserver
的推薦分配單元大小是
64kb
但是ntfs
的大小則是
4kb,
根據推薦值
64kb
的大小就是
128個扇區。但是保留扇區是
63個,當發生
io的時候,
sqlserver
讀取128
個扇區,那麼就會發生2次
io,從第乙個磁碟中讀取
65個扇區,從第二個磁碟中讀取
63個扇區。為了阻止,
windows
的保留空間變為了
1mb,那麼就能包容所有的
raid
單元條帶的大小。但是
windows2008
以下的版本預設是不對齊的。就需要命令列下呼叫
diskpar
或者diskpart
來顯示的對齊。
檢視是否對齊的唯一方法就是
wmic
命令:
wmic
partition get blocksize, startingoffset, name, index
如果用startingofferset
/raid
條帶大小,如果為整數那麼就是對齊的否則就是不對齊的。
分割槽保留扇區只能在磁碟的建立分割槽的時候設定。
create
partition primary align=64
分割槽對齊後,可以給分割槽分配碟符並且在格式化的時候指定分配單元大小,這樣就避免了沒對齊帶來的效能衝擊。
關於隔離的內容個人覺得講得不是很深入,大家可以去看
原書:《
disk partition alignment best practices for sql server
》第二章的
choosing the right raid level
下的workload considerations
小節,詳細描述了關於資料檔案,日誌檔案,
tempdb
的特點,並建議使用哪種
raid
比較合適。
這裡的io問題主要是講
io的配置問題。
io的配置如果撇開
san不講,還是挺簡單的。
SQL Server 效能調優(io)
目錄 診斷磁碟io問題 常見的磁碟問題 容量替代了效能 負載隔離配置有問題 分割槽對齊配置有問題 總結 關於io 這一塊,前面的東西如磁碟大小,磁碟頻寬,隨機讀取寫入,順序讀取寫入,raid 選擇,das 和san 比較都不講了。直接就開始講關於 io問題的診斷和一般問題的處理。io這一塊東西比較特...
sql server效能調優
我踩過的聽過的那些坑 第24 24周 資料庫維護 database maintenance 第23 24周 臨時資料庫 tempdb 第22 24周 等待和i o延遲統計 第21 24周 效能監控 pal工具 第20 24周 死鎖 deadlocking 第19 24周 鎖公升級 lock esca...
SQL Server效能調優系列
這是關於sql server調優系列文章,以下內容基本涵蓋我們日常中所寫的查詢運算的分解以及調優內容項,皆為原創.資料庫技術經驗篇 sql server調優系列基礎篇 sql server調優系列基礎篇 常用運算子總結 sql server調優系列基礎篇 聯合運算子總結 sql server調優系列...