SQL Server DBA硬體 101

by adonis 23. 六月 2016 15:59

作    者:楊先民
審    稿:張智凱


前言

一直很想寫的一個主題,資料庫 DBA對於硬體方面的需求,以及一些硬體方面的相關知識,剛好 SQL Server Best practice這個網站有提供相關的文章,我就把文章稍微翻譯一下讓各位了解一下吧。


SQL Server DBA對硬體方面的問題

SQL Server DBA,傳統上應該是不管硬體的,不要說不管硬體,他可能連作業系統都無法管,這是因為安全性的關係,你不可能身兼作業系統管理者與資料庫管理者,除非公司只有你一個人。

除了安全性的關係之外, SQL Server DBA對於硬體方面知識的不足也是個問題,除了不懂前端程式外,對於硬體方面的知識無法透過專門的文章取得這些都是問題,所以常常會有上課的學員會問:如果我有xx個人,同時存取oo G的資料,需要多少資源之類的問題。事實上這類型的問題要是有這麼好解決的話,微軟應該已經提供了一個精靈幫助我們解決問題了,但事實上情況不是如此的單純,我們就從各方面的架構來說明該如何選擇適合你 SQL Server的硬體規格。

平台的選擇

32位元或是64位元


你應該選擇 32位元或是 64位元的伺服器?這點應該無疑問,你應該選擇 64位元的伺服器,除了記憶體最多支援到 2的 64次方之外(32位元最多支援到2的32次方,也就是 4G), SQL Server 2008 R2之後開始就不再支援 32位元的平台。

刀鋒伺服器


刀鋒伺服器主要是為了空間關係所設計的伺服器,能夠容納的 cpu以及記憶體都有限,如果有規劃多台 SQL Server,用刀鋒伺服器是可以,但若是以能力的角度來看,傳統的伺服器未必就不好,這點在規劃時要考量。當然,當你使用刀鋒伺服器時,磁碟通常就是選擇 SAN storage了,不然以刀鋒伺服器的體積是容納不下那麼多顆的硬碟。

中央處理器(CPU)

中央處理器對於需要做大量運算是很有幫助的,但是對 SQL Server單純的查詢並無太大幫助,因為你的句子寫的很爛CL server只會使用一個核心(core)處理,並不會因為你有多顆 CPU或是多個核心而導致爛的句子執行起來快,除非 CPU 速度快。

有幾個關於 CPU的主題可以參考一下:

Hyper Threaded CPUs:


兩個同步的執行緒存在於 CPU中,在 Windows環境會邏輯的辨識成2個 CPU,使用 hyper threaded cpus的好處是可以減少 CPU的回應時間以及減少 idle時間。

Socket:


在主機版上的實體 CPU裝置,一個 CPU就是一個 socket,通常 Socket很重要是在於授權部分的問題,以前版本的 SQL Server是以 Socket為授權單位,但很可惜從 SQL Server 2014之後開始,授權已經改成使用 Core(核心數)了,所以是否是一個 Socket或是兩個 Socket或許已經不是這麼重要了,但是 Socket數量多代表他們有獨立的 L2快取可供使用,若是一個 Socket有兩個 core則是使用共用的 L2快取,速度上還是有影響。(不過現在技術愈來愈進步,隨時製程進步,即便是一個 Socket有兩個 core,也是獨立的 L2快取,但是還是共用 L3快取)

Dual Core CPUs:

就是一個 CPU中有多個獨立核心,在 Windows中也會顯示有兩顆 CPU。

Multi Core CPUs :


隨時時代進步,製程愈來愈進步,一個 Socket裡面有四個以上的獨立核心,這些核心已經被視為是獨立的處理器了,對於 SQL Server整體效能有一定程度的幫助,不過也牽涉到 SQL Server的授權。
微軟之前的教材這麼形容多顆 CPU與多核 CPU的差別,就是兩顆獨立的雞蛋雙黃蛋的差別(簡單易懂)

磁碟裝置(DISK)


磁碟裝置一般來說最易造成效能瓶頸,但是微軟在規劃硬體時其實並沒有強調「硬碟要多快」,而是把重點放在容量以及容錯能力,原因有二:

1.    硬碟真的太慢了,要把硬碟的 IOPS提高需要的是公司的財力,而再怎麼提升效能也不會比記憶體快。

2.    SQL Server會將資料從磁碟載入到記憶體中,所以記憶體的多與少才是決定整體效能的好壞。

一般來說,磁碟裝置又分為:

Direct Attached Storage(DAS):

一般翻譯成「直連式儲存」,一般公司的 PC幾乎都是屬於這樣的儲存方式,透過一條 SATA線或是 SCSI線直接和主機板連接,它的優點是速度快,但是缺點是 PC端都需要自備儲存裝置,對於空間配置就沒有如此有效的應用,再者 DAS這類型的儲存裝置能夠支援的磁碟數量並不多。

Storage Area Network(SAN):


磁碟裝置獨立成一個磁碟櫃集中管理,中間透過光纖線路或是 RJ-45網路線與伺服器連接稱之,不過微軟是把利用 RJ-45網路線連接的方式稱為 iSCSI。
利用 SAN的儲存方式有個優點,就是能夠支援磁碟數量可以非常多,而且算是一種型式的儲存設備的共享,並且有效的利用管理軟體,可以更有效的管理儲存的資料與訂立備援計劃。

另外,磁碟陣列也是硬碟規劃時的需求,目的主因不是為了效能,而是為了容錯,避免單顆硬碟壞掉而導致資料全部遺失,各種類型的磁碟陣列皆有可用在 SQL Server的用途,例如:

RAID 0 :多顆磁碟組合而成的無容錯陣列,主要優點為效能,但是只要其中一顆磁碟壞掉則資料就壞掉,適合於不需要容錯的裝置,例如 SQL Server的tempdb資料庫。

RAID 1:兩顆磁碟的鏡像備援,一個壞掉還可以透過另一顆磁碟取出資料,不能同時壞掉兩顆磁碟,優點是有容錯等級的磁碟陣列中,效能算比較好的,因為它只需要一次寫入兩顆磁碟,但是缺點則是兩顆磁碟的容量只能使用一顆,相對之下比較浪費空間。

RAID 5:三顆以上組成的磁碟陣列,資料在寫入時會平均寫入到三顆磁碟,有一顆磁碟損壞時還不會影響,但是有兩顆磁碟同時損壞則資料就會發生問題。

RAID 10:通常稱為 RAID 1+0,是既做 RAID 1,並且又有 RAID 0,如果 RAID 1需要兩顆磁碟,則 RAID 1+0需要 4顆硬碟,它的缺點是兼固效能與容錯,但是缺點是 C/P值是最低的,因為最浪費磁碟,所以雖然微軟在某些情境是建議使用 RAID 1+0,但事實上規劃人員都不太會做這種規劃。

既然要用磁碟陣列,則磁碟陣列卡就不要亂選,當然要選效能高的,因為磁碟陣列的缺點都是在寫入,磁碟陣列卡的效能好壞決定了你的 CPU使用率,因為如果沒有磁碟陣列卡,以前用軟體模擬磁碟陣列的話,則 CPU的處理時間會大幅的提高(但這並不是一個好的現象)。

固態硬碟


先說個結論:固態硬碟並不適合當做資料庫存放資料的地方,它應該有其他更好的用途。

為何?了解固態硬碟原理的人應該都知道,傳統磁碟有讀寫頭、讀寫臂,碟盤以高速
旋轉,而讀寫臂將讀寫頭停駐在搜尋到的位置將資料取出,如果你的資料沒有放在附近,會造成讀寫頭不必要的移動造成效能不高,畢竟讀寫頭再怎麼快它終究是個物理性的東西,移動找資料都要花時間,所以我們需要定期的磁碟重組讓資料聚集在一起以保持其效能。

但是固態硬碟則不同,它是個電子式的產品,沒有機械式的讀寫頭與讀寫臂這些東西,所以也不需要更不可以磁碟重組,因為固態硬碟每一個磁區都有寫入的次數限制,一但超過資料就只能唯讀了,所以各家廠商都有韌體來控制其寫入的次數。

當然這並不是不用固態硬碟來儲存資料庫資料的主因,而是固態硬碟可以說是先天上就是處於資料分散的狀態,换言之,看起來一個連續檔案,放在固態硬碟中也會是分散的,因為每個磁區都有寫入次數限制的關係,但是這對固態硬碟的效能來說並不會有影響,因為固態硬碟的速度都是一樣的,它不會因為傳統磁碟資料在內圈或是在外圈而會有不同的讀寫速度。

所以固態硬碟一但資料壞掉,非常難救,若壞掉的是控制寫入的控制器,幾乎宣告無救,固態硬碟可以使用在下面兩個用途:

1.    作業系統碟
2.    SQL Server 2014有一個功能叫做 Buffer pool extension,可以把這個功能的資料用固態硬碟來做。

除此之外,不要使用固態硬碟儲存資料庫的資料,不但沒有比較快,價格又貴,資料壞掉又救不回來,幾乎沒有優點可言。

選購固態硬碟與傳統磁碟也要注意,固態硬碟要買容量大的,愈大愈好,因為固態硬碟是不可以將資料塞滿的,還是那句話:資料寫入限制的關係。
然而,傳統磁碟則不然,單碟不要用太大的,單碟要選小的,不要選一個單碟 8T這種,壞掉的風險相當高。

記憶體

記憶體是 SQL Server中最重要的硬碟,連 CPU的重要性都排在它之後,雖說記憶體的速度不比 CPU上的 L1、 L2快取來的快,但是記憶體大能夠容量大多數資料庫的資料時,其效能再差就和硬體的關係不大了。

通常記憶體的規劃方式有幾種方法論:

1.    看總資料量的 20%,為你的 SQL Server記憶體數量:這個是傳說中的 80-20原理,有80%的資料是歷史資料,大多數要看的資料是集中在 20%左右,所以資料量的 20%為你的記憶體的大小。
2.    看核心數,一個核心數配 4G的記憶體:這個是微軟的建議,如果你的 8個核心,建議的記憶體就是 32G。
3.    看 Socket數,一個 Socket配置 32-64G的記憶體:這個同樣是微軟的建議,如果你有雙 CPU,兩個 Socket,大約是64G的憶體體建議。

結語


本期稍微把 SQL Server硬體方面常會遇到的問題稍微分享,主要是微軟對於 SQL Server 方面的硬體建議,希望大家有所收獲,不過就一個管理者的角度而言,硬體其實常常有新的東西需要時時刻刻更新資訊,也許這篇文章在10年後再來看就覺得過時了也說不一定。

LAST

Tags:

新增評論




  Country flag
biuquote
  • 評論
  • 線上預覽
Loading






NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List