作者 | David
編譯 | 星璇
出品 | 51CTO技術(shù)棧(微信號:blog51cto)
“云應(yīng)用程序速度太慢!”這類的抱怨越來越多了。然而,十有八九,原因并不是應(yīng)用程序本身或數(shù)據(jù)庫性能不夠?qū)е碌膯栴}。
已經(jīng)快到 2024 年了。為什么基于云的數(shù)據(jù)庫性能仍然存在這些問題?最常見的原因是什么?我們該如何修復(fù)它們?我有幾個想法。
1、你選擇了正確的服務(wù)嗎?
云提供商提供許多數(shù)據(jù)庫服務(wù),例如 Amazon RDS、Azure SQL 數(shù)據(jù)庫和 Google Cloud SQL。有時,您根據(jù)應(yīng)用程序的要求、可擴展性和性能期望選擇的數(shù)據(jù)庫必須進行調(diào)整,以確保更合適。
在許多情況下,選擇數(shù)據(jù)庫的原因是錯誤的。例如,未來需要二進制文件的存儲和管理,這就導(dǎo)致了對象數(shù)據(jù)庫的選擇。然而,對于這個特定的用例來說,關(guān)系數(shù)據(jù)庫是正確的選擇??紤]所有因素,包括托管服務(wù)、地理位置和兼容性。
此外,在選擇數(shù)據(jù)庫類型和品牌時還要考慮性能。假設(shè)它在云上,并且云是“無限可擴展的”,因此任何數(shù)據(jù)庫都會表現(xiàn)良好。您選擇的數(shù)據(jù)庫類型應(yīng)取決于您要存儲的數(shù)據(jù)類型以及您將如何使用數(shù)據(jù),例如列式分層數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫、對象數(shù)據(jù)庫等。最流行的數(shù)據(jù)庫以及適合您的特定數(shù)據(jù)庫的數(shù)據(jù)庫用例很少相同。
2、你的數(shù)據(jù)庫設(shè)計和索引如何?
這是巨大的。高效的數(shù)據(jù)庫設(shè)計和正確的索引會顯著影響性能。大多數(shù)性能不佳的數(shù)據(jù)庫問題都可以追溯到數(shù)據(jù)庫設(shè)計問題,特別是過于復(fù)雜的數(shù)據(jù)庫結(jié)構(gòu)和誤用的索引。
確保建立適當(dāng)?shù)乃饕约涌鞌?shù)據(jù)檢索速度。定期檢查和優(yōu)化查詢以消除瓶頸。確保您的數(shù)據(jù)庫架構(gòu)已優(yōu)化。另外,在必要時對數(shù)據(jù)庫進行規(guī)范化,但要知道過度規(guī)范化也可能同樣糟糕。對于那些在 20 世紀 90 年代沒有學(xué)習(xí)過 Database 101 的人來說,這意味著將數(shù)據(jù)組織到單獨的、相互關(guān)聯(lián)的表或數(shù)據(jù)庫中的其他本機數(shù)據(jù)庫容器中。
規(guī)范化旨在通過消除重復(fù)數(shù)據(jù)并將較大的表分解為更小、更易于管理的表來最大限度地減少冗余和依賴性。我發(fā)現(xiàn)為了最大限度地提高性能而進行的數(shù)據(jù)庫規(guī)范化過程經(jīng)常被忽視,并導(dǎo)致許多性能問題。
3、你是否適當(dāng)?shù)卣{(diào)整了資源規(guī)模?
盡管公共云提供商提供高度可擴展的資源來適應(yīng)不同的工作負載,但它們通常需要更加高效。您需要研究自動縮放功能的實現(xiàn),以根據(jù)需求動態(tài)調(diào)整資源??梢圆呗孕缘厥褂盟綌U展(添加更多實例)和垂直擴展(增加實例大?。﹣頋M足高性能要求。
但是,請小心允許云提供商代表您自動分配資源。在許多情況下,他們分配了太多,你會在月底收到一大筆賬單。您應(yīng)該確定一個平衡,而不是僅僅選擇自動縮放按鈕。
4、你的存儲配置是災(zāi)難嗎?
最好根據(jù)工作負載特征來優(yōu)化存儲配置,而不是根據(jù)您在云認證課程中看到的最佳實踐。例如,將 SSD 用于 I/O 密集型工作負載,但要知道它們通常更昂貴。此外,選擇正確的存儲層并實施緩存機制,以減少頻繁的磁盤 I/O 操作的需要。事實上,緩存也進入了自動化狀態(tài),您可能需要更精細的控制才能以最小的成本找到最佳性能。
云架構(gòu)師和數(shù)據(jù)庫工程師需要在數(shù)據(jù)庫性能方面做得更好。在某些情況下,這意味著回到良好的數(shù)據(jù)庫設(shè)計、配置和部署的基礎(chǔ)知識。這正在成為一門失傳的藝術(shù),因為那些負責(zé)云系統(tǒng)的人似乎更喜歡在這個問題上砸錢。這不是解決問題的方式。
參考鏈接:https://www.infoworld.com/article/3711276/why-your-cloud-database-performance-sucks.html