- 幫助優化MySQL數據庫性能的7個技巧
近年來,我們看到了向固態磁盤(SSD)的過渡。盡管SSD比旋轉硬盤快得多,但它們仍然無法與RAM中的數據相比。這種差異不僅來自存儲性能本身,還來自數據庫在從磁盤或SSD存儲中檢索數據時必須做的額外工作。
隨著最新硬件的改進,無論是在云端運行還是管理自己的硬件,都越來越有可能將數據庫存儲在內存中。
更好的消息是,您不需要將所有數據庫都放入內存中,就可以獲得內存中的大部分性能優勢。您只需將工作數據(最頻繁訪問的數據)集存入內存中。
你可能已經看到一些文章提供了一些具體的數字,說明應該將數據庫的哪個部分保存在內存中,從10%到33%不等。事實上,沒有“一刀切”的數字。適合內存的最佳性能優勢的數據量與工作負載相關。與其尋找一個特定的“萬能”數字,不如檢查一下數據庫在其穩定狀態下運行的I/O(通常在啟動后幾個小時)??纯碦EAD,因為如果數據庫在內存中,則可以完全消除READ。寫總是需要發生的,不管你有多少內存可用。
下面,您可以在Percona監控和管理的InnoDBMetrics儀表板中的 InnoDB I/O圖中看到 I/O。
?
?
在上面的圖表中,您可以看到高達每秒2,000個I/O操作的峰值,這表明(至少對于工作負載的某些部分)數據庫工作集不適合內存。
優化技巧 #5:使用SSD存儲
如果您的數據庫不適合內存(即使不適合),您仍然需要快速存儲來處理寫操作,并在數據庫升溫時(重新啟動后)避免性能問題。如今,SSD即是快速存儲的代名詞。
出于成本或可靠性的原因,一些“專家”仍然主張使用旋轉磁盤(機械磁盤)。坦率地說,當涉及到操作數據庫時,這些論點往往已經過時或完全錯誤。今天,SSD以較高的價格提供著可觀的性能和可靠性。
然而,并非所有SSD都是適用的。對于數據庫服務器,您應該使用為服務器工作負載設計的SSD,這種SSD會對數據起到保護作用(例如,在斷電期間)。避免使用為臺式計算機和筆記本電腦設計的商用SSD。
通過NVMe或Intel OpTan技術連接的SSD可提供最佳性能。即使作為SAN、NAS或cloud block設備遠程連接,與旋轉磁盤相比,SSD仍然具有更優越的性能。
優化技巧 #6:橫向擴展
即使是高性能的服務器也有其局限性。有兩種擴展方式:up和out。縱向擴展意味著購買更多的硬件。這可能很昂貴,而且硬件很快就會過時。
橫向擴展以處理更多的負載有幾個好處:
1.可以利用較小且成本較低的系統。 ? ??
? 2.通過橫向擴展,進行線性擴展更快更容易。 ? ??
3.因為數據庫分布在多臺物理機器上,所以數據庫不會受到單個硬件故障點的影響。
雖然橫向擴展是有好處的,但也有一定的局限性。擴展需要復制,例如基本的MySQL復制或Percona XtraDB Cluster,以實現數據同步。但是作為回報,可以獲得額外的性能和高可用性。如果您需要更大的擴展,請使用MySQL分片。
您還需要確保連接到集群體系結構的應用程序能夠找到所需的數據–通常通過一些代理服務器和負載平衡器(如ProxySQL或HAProxy)。
在計劃橫向擴展時,避免過早地擴展。使用分布式數據庫往往更復雜?,F代硬件和MySQL服務器只使用一臺服務器就可以得到良好的體驗。最近發布的MySQL 8候選版本表明,它能夠在單個系統上處理200多萬個簡單查詢。
優化技巧 #7:可觀測性
設計最好的系統時要考慮到可觀察性-MySQL也不例外.。
一旦您啟動、運行并正確調整了MySQL環境,就不能僅僅設置而不進行管理。數據庫環境會受到系統或工作負載更改的影響。準備好應對諸如流量高峰、應用程序錯誤和MySQL故障等意外。這些事情能夠而且將會發生。
當發生問題時,你需要迅速而有效地解決它們。這樣做的唯一方法是設置某種監視解決方案并對其進行適當的初始化。這使您能夠在數據庫環境在生產中運行時看到它正在發生的情況,并在出現問題時分析服務器數據。理想情況下,系統允許您在問題發生之前或在問題發展到用戶可以看到其影響之前進行預防。
監控工具有諸如MySQL Enterprise Monitor、Monyog和 Percona Monitoring and Management (PMM),后者具有免費和開源的額外優勢。這些工具為監視和故障排除提供了很好的可操作性。
隨著越來越多的公司轉向開源數據庫(特別是MySQL),以便在大規模生產環境中管理和服務其業務數據,他們將需要集中精力保持這些數據庫的優化和最佳運行效率。與所有對您的業務目標至關重要的事情一樣,您的數據庫性能可能會導致或破壞你的業務目標或成果。MySQL是一個可以為應用程序和網站提供優質的數據庫解決方案,但需要進行調整以滿足您的需要,并進行監視以發現和防止瓶頸和性能問題。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
相關閱讀:
- [編程語言及工具] 常用于緩存處理的機制總結 如何避免緩存雪崩問題? 2023-10-24
- [電子說] 觸發器的基本原理、應用場景及優缺點 2023-10-23
- [電子說] SpringBoot物理線程、虛擬線程、Webflux性能比較 2023-10-23
- [存儲技術] AI大模型對數據存儲技術的發展趨勢 2023-10-23
- [電子說] 訪問控制中PIP的典型流程和關鍵點思考 2023-10-23
- [電子說] 物證管理系統|智物證DW-S404是一套成熟系統 2023-10-23
- [電子說] Python 梯度計算模塊如何實現一個邏輯回歸模型 2023-10-21
- [電子說] TinyDB :一個純Python編寫的輕量級數據庫 2023-10-21
( 發表人:郭婷 )