日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

扩有mysql的磁盘_为提高MySQL性能而在磁盘IO方面的设置

發布時間:2025/3/20 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扩有mysql的磁盘_为提高MySQL性能而在磁盘IO方面的设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

提起MySQL數據庫在硬件方面的優化無非是CPU、內存和IO。下面我們著重梳理一下關于磁盤I/O方面的優化。

1.磁盤冗余陣列RAID

RAID(Redundant Array of Inexpensive Disk)的基本目的是把小型廉價的硬盤合并成一塊大容量的硬盤,用于解決數據冗余性并降低成本,且提高數據處理性能。

1.1 RAID的優點

RAID的優點可以從高傳輸速率和容錯兩方面來闡述:

(1)提高傳輸速率。RAID通過在多個磁盤上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量(Throughput)。在RAID中,可以讓很多磁盤驅動器同時傳輸數據,而這些磁盤驅動器在邏輯上又是一個磁盤驅動器,所以使用RAID可以達到單個磁盤驅動器幾倍、幾十倍甚至上百倍的速率。這也是RAID最初想要解決的問題。因為當時CPU的速度增長很快,而磁盤驅動器的數據傳輸速率無法大幅提高,所以需要有一種方案解決二者之間的矛盾。

(2)通過數據校驗提供容錯功能。普通磁盤驅動器無法提供容錯功能,如果不包括寫在磁盤上的CRC(循環冗余校驗)碼的話。RAID容錯是建立在每個磁盤驅動器的硬件容錯功能之上的,所以它提供更高的安全性。在很多RAID模式中都有較為完備的相互校驗/恢復的措施,甚至是直接相互的鏡像備份,從而大大提高了RAID系統的容錯度,提高了系統的穩定冗余性。

1.2RAID常見類別

RAID0數據在從內存緩沖區寫入磁盤時,根據磁盤數量將數據分成N份,這些數據同時并發寫入N塊磁盤,使得數據整體寫入速度是一塊磁盤的N倍。讀取時也是一樣的。因此RAID0具有極快的數據讀寫速度。但是RAID0不做數據冗余,N塊磁盤中只要一塊損壞,數據完整性就被破壞,所有的數據都會損壞,即任何一塊硬盤的損壞都將導致數據的丟失。

RAID1 數據在寫入磁盤時,將一份數據同時寫入兩塊磁盤,這樣任何一塊磁盤損壞都不會導致數據丟失,插入一塊新磁盤就可以通過復制數據的方式自動修復,具有極高的可靠性。但對應的存儲能力有所降低,如兩塊相同硬盤組成的RAID1,則容量為其中一塊硬盤的大小,即磁盤利用率為50%。

RAID5 RAID5也是一種普遍使用的RAID類型,是一種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。磁盤空間利用率要比RAID1高,存儲成本相對較低。RAID5 和RAID4、RAID3相比,校驗數據分布在陣列中的所有磁盤上,而沒有采用專門的校驗磁盤。對于數據和校驗數據,它們的寫操作可以同時發生在完全不同的磁盤上。因此, RAID5 不存在 RAID4 中的并發寫操作時的校驗盤性能瓶頸問題。另外, RAID5 還具備很好的擴展性。當陣列磁盤 數量增加時,并行操作量的能力也隨之增長,可比 RAID4 支持更多的磁盤,從而擁有更高的容量以及更高的性能。RAID5 的磁盤上同時存儲數據和校驗數據,數據塊和對應的校驗信息存保存在不同的磁盤上,當一個數據盤損壞時,系統可以根據同一條帶的其他數據塊和對應的校驗數據來重建損壞的數據。與其他 RAID 等級一樣,重建數據時, RAID5 的性能會受到較大的影響。

說明:圖中零散分布 APBPCPDP為校驗數據

RAID10? 結合RAID0和RAID1兩種方案。Raid 10其實結構非常簡單,首先創建2個獨立的Raid1,然后將這兩個獨立的Raid1組成一個Raid0,當往這個邏輯Raid中寫數據時,數據被有序的寫入兩個Raid1中。磁盤1和磁盤2組成一個Raid1,磁盤3和磁盤4又組成另外一個Raid1;這兩個Raid1組成了一個新的Raid0。如寫在硬盤1上的數據0、2、4、6 寫在硬盤2中則為數據0、2、4、6,硬盤3中的數據為1、3、5、7,硬盤4中的數據則為1、3、5、7,因此數據在這四個硬盤上組合成Raid10,且具有raid0和raid1兩者的特性。雖然Raid10方案造成了50%的磁盤浪費,但是它提供了200%的速度和單磁盤損壞的數據安全性,并且當同時損壞的磁盤不在同一Raid1中,就能保證數據安全性。假如磁盤中的某一塊盤壞了,整個邏輯磁盤仍能正常工作的。當我們需要恢復RAID 10中損壞的磁盤時,只需要更換新的硬盤,按照RAID10的工作原理來進行數據恢復,恢復數據過程中系統仍能正常工作。原先的數據會同步恢復到更換的硬盤中。

1.3 總結

為數據庫服務器配置RAID的時候,建議采用RAID10配置,盡管RAID10會更浪費空間,但它提供了更好的性能。直觀地將,采用RAID5時,由于需要更新校驗數據信息,所以每寫一次數據,都需要讀取數據奇偶信息,經過計算后,再更新校驗數據,讓后再寫入實際數據,而RAID10則是直接寫入數據。

2. 盡可能地使用SSD硬盤

SSD(Solid State Disk 或 Solid State Drive 固態硬盤)是一種基于永久性存儲器的計算機外部存儲設備。

與傳統磁盤相比,其性能非常驚艷。

特點

數據對比

高IOPS

IOPS 即1秒內能夠完成的讀寫次數,是存儲性能的最直接的表現。傳統磁盤每秒差不多可以完成200次IO請求,而SSD每秒鐘可以高達60萬次。

低延遲

低延遲 即主機下達存儲指令后,存儲介質完成存儲并返回正確應答的時間。傳統磁盤由于驅動馬達轉動盤片和搖動磁頭手臂,完成單個IO需要2000微妙左右,而SSD只需要不到100微妙。

低功耗

如果使用傳統的磁盤來創建接近SSD性能的磁盤陣列總功耗高達幾百到上千瓦;而一塊PCIe SSD的功耗不會超過25瓦。

大容量

傳統磁盤容量在4TB以下,并且增長困難,而PCIe SSD已有單盤 12.8TB的容量,并且增長趨勢可期。

故障率低且可預測

傳統磁盤由于是機械部件,故障不可預測,年故障率在百分之三左右,而SSD的故障可以預測,年故障率在千分之五以內。

抗震能力強,且無噪音

傳統磁盤是機械旋轉設備,對震動敏感,甚至引發磁盤停轉,同時馬達也會發出噪音;而SSD完全是電子元件,抗震能力強,且不噪聲。

3 IO調度策略--SSD推薦設置為noop,SATA為deadline

3.1??IO調度器

每個塊設備或者塊設備的分區,都對應有自身的請求隊列(request_queue),而每個請求隊列都可以選擇一個I/O調度器來協調所遞交的request。I/O調度器的基本目的是將請求按照它們對應在塊設備上的扇區號進行排列,以減少磁頭的移動,提高效率。每個設備的請求隊列里的請求將按順序被響應。實際上,除了這個隊列,每個調度器自身都維護有不同數量的隊列,用來對遞交上來的request進行處理,而排在隊列最前面的request將適時被移動到請求隊列中等待響應。

IO調度器在內核棧中所處位置如下:

3.2?調度算法

內核中實現的IO調度器主要有四種--Noop,Deadline,CFG, Anticipatory。

如果簡單概括總結的的話:1.NOOP 先進先出? 2.Deadline 截止時間調度程序 3.CFQ 完全公平排隊I/O調度程序?4.AS(預料I/O調度程序) .

Noop調度算法是內核中最簡單的IO調度算法。Noop調度算法也叫作電梯調度算法,它將IO請求放入到一個FIFO隊列中,然后逐個執行這些IO請求,當然對于一些在磁盤上連續的IO請求,Noop算法會適當做一些合并。這個調度算法特別適合那些不希望調度器重新組織IO請求順序的應用。

Deadline算法的核心在于保證每個IO請求在一定的時間內一定要被服務到,以此來避免某個請求饑餓。

CFQ(Completely Fair Queuing)算法,顧名思義,絕對公平算法。它試圖為競爭塊設備使用權的所有進程分配一個請求隊列和一個時間片,在調度器分配給進程的時間片內,進程可以將其讀寫請求發送給底層塊設備,當進程的時間片消耗完,進程的請求隊列將被掛起,等待調度。?每個進程的時間片和每個進程的隊列長度取決于進程的IO優先級,每個進程都會有一個IO優先級,CFQ調度器將會將其作為考慮的因素之一,來確定該進程的請求隊列何時可以獲取塊設備的使用權。

Anticipatory算法的核心是局部性原理,它期望一個進程做完一次IO請求后還會繼續在此處做IO請求。在IO操作中,有一種現象叫“假空閑”(Deceptive idleness),它的意思是一個進程在剛剛做完一波讀操作后,看似是空閑了,不讀了,但是實際上它是在處理這些數據,處理完這些數據之后,它還會接著讀,這個時候如果IO調度器去處理另外一個進程的請求,那么當原來的假空閑進程的下一個請求來的時候,磁頭又得seek到剛才的位置,這樣大大增加了尋道時間和磁頭旋轉時間。所以,Anticipatory算法會在一個讀請求做完后,再等待一定時間t(通常是6ms),如果6ms內,這個進程上還有讀請求過來,那么我繼續服務,否則,處理下一個進程的讀寫請求。

對于一些非旋轉磁頭氏的存儲設備,使用Noop的效果更好。因為對于旋轉磁頭式的磁盤來說,IO調度器的請求重組要花費一定的CPU時間,但是對于SSD磁盤來說,這些重組IO請求的CPU時間可以節省下來,因為SSD提供了更智能的請求調度算法,不需要內核去畫蛇添足。

3.3 性能對比

以下性能Report是在SSD存儲介質下,各調度策略的性能表現。

通過數據對比,我們也可以發現:SSD推薦設置為noop。

(網上還有一個別人相關的測試報告,大家可以參閱? https://www.percona.com/blog/2009/01/30/linux-schedulers-in-tpcc-like-benchmark/)

4.其它的注意事項

例如:進程打開文件數:65535 ;文件系統:選XFS(centos7已經默認是XFS了)等等。

參考文獻:

1. https://www.cnblogs.com/cobbliu/p/5389556.html

2.《MySQL 運維內參》

3. 網絡分享

本文版權歸作者所有,未經作者同意不得轉載,謝謝配合!!!

總結

以上是生活随笔為你收集整理的扩有mysql的磁盘_为提高MySQL性能而在磁盘IO方面的设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。