互聯網創業的準備數據庫:硬盤iops、mysql

《互聯網創業的準備》系列文章 硬盤常識: 機械硬盤HDD固態硬盤SSD 最小單位1個扇區為512B,或4K(2012年民用普及)1個分頁為4K、8K或更高() 性能因素轉速(rpm):5400、7200、1w、1.5w層數:SLC(單層快)、MLC(雙層慢)、TLC(三層更慢,SSD暫未采用,

《互聯網創業的準備》系列文章——

硬盤常識:

? 機械硬盤HDD 固態硬盤SSD

最小單位 1個扇區為512B,或4K(2012年民用普及) 1個分頁為4K、8K或更高()

性能因素 轉速(rpm):5400、7200、1w、1.5w 層數:SLC(單層快)、MLC(雙層慢)、TLC(三層更慢,SSD暫未采用,U盤大量采用)

接口 SATA 3G、SATA 6G(2012年民用普及)、SAS 6G SATA 3G、SATA 6G、SAS 6G、PCI-E

尺寸 2.5英寸、3.5英寸 2.5英寸、PCI-E版型

常見品牌 西部數據、希捷 Intel、鎂光(Crucial)、浦科特(PLEXTOR)

硬盤性能指標:

連續讀寫(常用單位為MB/s):文件在硬盤上存儲位置是連續的,適用場景:大文件拷貝(比如視頻音樂)。速度即使很高,對數據庫性能也沒有參考價值。

4K隨機讀寫(常用單位為iops):在硬盤上隨機位置讀寫數據,每次4KB,適用場景:操作系統運行、軟件運行、數據庫。(圖片靜態服務器、視頻靜態服務器是大文件,測試64K隨機或更大)

?

常用硬盤性能測試軟件:

Windows:AS SSD Benchmark、CrystalDiskMark、HD Tune Pro、iometer

Linux:iometer

互聯網創業的準備數據庫:硬盤iops、mysql

互聯網創業的準備數據庫:硬盤iops、mysql

互聯網創業的準備數據庫:硬盤iops、mysql

Align I/Os:硬盤IO大小。測試設備時根據硬盤最小單位進行選擇,機械硬盤上選512B或4K,SSD上選4K、8K等。測試分區時受分區sector size影響。由于Linux ext3的sector size為4096,所以在扇區為512B的機械硬盤上也無法選擇Align I/Os on 512B進行測試,測試效果不佳。vps無法進行設備測試,如果是自購服務器,應使用設備測試。

Seq 即 Sequential 即連續讀寫。AS SSD會先以16MB的尺寸為單位,持續向受測分區寫入生成1個達到1GB大小的文件,然后再以同樣的單位尺寸讀取這個,最后計算平均成績而給出結果。

4K 即 Random 4k, Queue Depth=1 即 隨機4K并發1個隊列。AS SSD會以512KB的單位尺寸生成1GB大小的測試文件,然后在其地址范圍(LBA)內進行隨機4KB單位尺寸進行寫入及讀取測試,直到跑遍這個范圍為止,最后同樣計算平均成績給出結果。

4K QD32 即?Random 4k, Queue Depth=32 即 隨機4K并發32個隊列。

4K-64Thrd 即 4K, 64 Thread 即 隨機4K并發64個線程,和 4K QD64是一個意思。AS SSD會生成64個16MB大小的測試文件(共計1GB),然后同時以4KB的單位尺寸,同時在這64個文件中進行寫入和讀取測試,最后依然以平均成績為結果。

通過AS SSD可以看出,iops與MB/s可以直接換算,比如4K讀取是6227iops,即每秒鐘可以讀取6227個4K的文件,即 6227 * 4K / 1024 = 24.3 MB/s。

Intel的SSD性能數據采用iometer 4K QD32的測試結果:

價格與速度:

? 型號 容量 2012價格 4K QD32隨機讀/寫(iops) 4K QD64 連續讀寫(MB/s)

民用 機械7200rpm 3.5英寸 SATA 6G 希捷Barracuda 7200.14 3TB ¥1.1k 409/365 386/291 200/180

企業級 機械10000rpm 2.5英寸 SAS 6G? 希捷Savvio 10K.5 300GB ¥1k 750/700 ? 170/170

企業級?機械15000rpm 2.5英寸 SAS 6G 希捷Savvio 15K.3 300GB ¥2.2k ? ? ?

企業級?固態SLC 2.5英寸 SATA 3G Intel X25-E 32G ¥2.5k 3.5w/3.3k ? 250/170

企業級?固態MLC PCI-E Intel 910 400G ¥14w 9w/3.8w ? 1000/750

企業級?固態MLC PCI-E Intel 710 100G ¥2.5k 3.8w/2.3k ? 270/170

民用 固態MLC 2.5英寸?SATA 6G Intel 520 120G ¥840 2.5w/8w ? 550/500

民用 固態MLC 2.5英寸?SATA 6G 鎂光 M4 128G ¥800 7.8w/4.2w 7w/4w 500/175

?

為什么民用SSD的iops很高價格卻很低,而企業級SSD的iops有的很低而價格卻很高?因為企業級SSD的耐用性高,比如Intel 710 100G壽命為4K寫入500TB,即5000次全盤寫入。

Intel SSD壽命指標:smart中的“E8:Avai lable Reserved Space”:可用的預留閃存數量、“E9:Media Wearout Indicator”:閃存磨耗指數。其他廠商的SSD類似,比如鎂光的wear leaving count。

SSD新盤的剩余磨損為100,當低于10時,應更換,報廢。

?

todo:數據庫的選擇

關系型數據庫用mysql還是PostgreSQL,或者全用NoSQL?mongo還是hbase?

Mysql 和 PostgreSQL都可以。mysql用的人多,但是oracle收購sun以后,把mysql限制的更加封閉,正在衰落,和可能和OpenOffice一樣被oracle整死,免備案空間,衍生出LibreOffice。但不用很擔心,即使mysql被oracle整死,也會衍生出開源版本,使用方式一樣。

關系型數據庫和NoSQL搭配使用較好,關系型適合底層業務,NoSQL適合上層業務。關注淘寶hbase的使用。

Mysql性能與硬盤iops的關系:

mysql可以把讀取結果放在內存中,即query cache,所以db server安裝大內存即可實現只讀內存、不讀硬盤。

當預計數據量會增長到超過內存大小時,進行分表(把一個表中的數據拆分),放到多個大內存服務器上,保證每個服務器上的數據都小于內存大小,香港服務器,即可實現全部緩存。

2012年內存價格:UDIMM no ECC DDR3 1600民用內存?¥270/8GB,RDIMM ECC DDR3 1600服務器內存?¥440/8G。但一臺服務器能安裝的內存有限,2012年典型的Dell服務器有24個插槽,主板芯片支持768G內存,2012年DDR3內存生產工藝最高是單條8G(DDR4已實現單條16G,但主板尚未支持DDR4),所以一臺服務器最大內存192G(¥440 * 24條 = 1w)。

數據庫寫入時必須寫硬盤(否則就不叫持久化存儲了……),¥2.5k的Intel 710企業級SSD的寫入iops為2.3k,而萬轉硬盤的iops為700,如果要達到SSD的性能,需要多塊萬轉硬盤組RAID。如果使用iops為3w的SSD,性能比機械硬盤提升了30倍。

如果數據量不大,遠低于192G,就不需要做分表了嗎?

仍然要分表,原因有2個:

1、大內存會提升mysql讀取性能,但并發讀取能力也是有上限的,香港虛擬主機,這時受CPU性能限制,2012年典型的服務器是雙路,即2個8核CPU(mysql內存并發待測試)。

2、內存很大,對并發寫入能力沒有作用,寫入能力完全依賴于硬盤的iops。一臺服務器的寫入性能很有限,請看下面的測試。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享