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















 
 
 





 
 
 
 