引言
資料庫是應用程式效能的關鍵組成部分。效能良好和效能不佳的資料庫之間的差異,可能是影響整體應用程式效能的最重要因素。查詢處理速度、擴充套件成本和資料訪問的便捷性等資料庫挑戰使得尋找最佳化的平衡變得困難。在諸多考慮因素中,要同時兼顧這三者是很困難的。
在本文中,我們討論資料庫快取,這是一種為資料庫實施的技術,旨在緩解上述部分挑戰。我們將介紹什麼是資料庫快取,實施資料庫快取對資料儲存的好處,以及不同的資料庫快取策略。
訪問 Prisma 資料平臺,在一個地方管理所有應用程式資料。
什麼是資料庫快取?
資料庫快取是一種緩衝技術,它將頻繁查詢的資料儲存在臨時記憶體中。快取是一種高速資料儲存層,用於儲存經常讀取請求的資料子集。這種瞬態儲存層使得未來對這些資料的請求能夠比訪問主資料庫更快地得到服務。
資料庫快取策略透過減輕主資料庫可能承擔的負擔來協助它。這最常見於將頻繁讀取資料的查詢重定向到快取本身,而不是主資料庫。快取本身可以位於資料庫、應用程式中,甚至作為獨立的訪問層。
例如,您的應用程式首次從資料庫請求使用者資訊時,此請求從應用程式伺服器傳送到資料庫伺服器並返回所請求的資訊。透過快取,此使用者配置檔案在首次讀取後儲存在更靠近請求者的地方,並且對於該資料的所有後續讀取請求,查詢處理時間和資料庫工作負載都將顯著減少。
資料庫快取有哪些好處?
資料檢索速度極大地影響應用程式的使用者體驗。在資料庫上實施快取策略可以改善資料庫效能、可用性和可伸縮性,並且根據策略不同,成本可能最低,所有這些因素都有助於提供整體積極的應用程式體驗。
效能
如前所述,資料庫快取透過使資料更容易訪問來提高資料庫的效能。快取就像應用程式訪問頻繁呼叫的資料的“鍵盤快捷方式”或“熱鍵”。
這種更快的請求可以最大限度地減少資料庫的工作負載,使其避免花費低效的時間進行重複任務。相反,它使這些任務更高效並簡化資料訪問。
可用性
雖然不是 100% 的故障轉移策略,但快取也為主資料庫的整體可用性帶來了好處。根據快取的儲存位置,在主資料庫伺服器因任何原因不可用的情況下,快取仍能為應用程式提供資料呼叫點。
儘管資料庫效能通常是採用快取策略的主要原因,但您還額外獲得了在任何後端故障情況下的一些額外彈性。
可伸縮性
與增加高可用性類似,資料庫快取對可伸縮性具有積極影響。儘管它不應成為資料庫擴充套件策略的主要考慮因素,但實施快取以提高資料庫效能可以減少資料庫工作負載,從而將後端查詢分發到各個實體。
這種分發減輕了主資料庫的負載,可以降低成本,併為資料處理提供更大的靈活性。這種結果減輕了擴充套件的需求,並利用了您已有的資源,可能將擴充套件的需求推遲到未來。
不同的資料庫快取策略有哪些?
在將資料庫快取引入資料訪問流程之前,考慮哪種快取策略最適合這項工作至關重要。對於任何場景,資料庫與快取之間的關係都可能對效能和系統結構產生不同的影響。提前規劃並考慮所有選項將減少未來的麻煩。
要考慮的五種最流行策略是旁路快取(cache-aside)、讀取直達(read-through)、寫入直達(write-through)、回寫(write-back)和寫入環繞(write-around)。我們將介紹每種策略的資料來源到快取關係以及處理過程。
旁路快取 (Cache-aside)
在旁路快取設定中,資料庫快取位於資料庫旁邊。當應用程式請求資料時,它會首先檢查快取。如果快取中有資料(快取命中),則返回該資料。如果快取中沒有資料(快取未命中),則應用程式將查詢資料庫。然後應用程式將該資料儲存在快取中,以供後續查詢使用。
旁路快取設計是一種通用的快取策略。此策略對於讀密集型工作負載的應用程式特別有用。這使得頻繁讀取的資料觸手可及,以應對大量傳入的讀取請求。另有兩個額外的好處源於快取與資料庫的分離。在快取故障的情況下,依賴快取資料的系統仍然可以直接訪問資料庫。這提供了一些彈性。其次,由於快取是分離的,它可以使用與資料庫不同的資料模型。
另一方面,旁路快取策略的主要缺點是存在資料庫資料不一致的風險。通常,任何寫入的資料將直接進入資料庫。因此,快取可能在一段時間內與主資料庫存在不一致。根據您的需求,有不同的快取策略可以解決這個問題。
讀取直達 (Read-through)
在讀取直達快取配置中,快取位於應用程式和資料庫之間。可以將其想象成一條從應用程式到資料庫的直線,快取位於中間。在這種策略中,應用程式總是與快取通訊進行讀取,當發生快取命中時,資料會立即返回。如果發生快取未命中,快取將從資料庫填充缺失的資料,然後將其返回給應用程式。對於任何資料寫入,應用程式仍將直接訪問資料庫。
讀取直達快取也適用於讀密集型工作負載。讀取直達和旁路快取之間的主要區別在於,在旁路快取策略中,應用程式負責獲取資料並填充快取,而在讀取直達設定中,邏輯由庫或某個獨立的快取提供商完成。讀取直達設定在快取和資料庫之間潛在的資料不一致方面與旁路快取相似。
讀取直達快取策略還有一個缺點,即每當有新的讀取請求進來時,都需要訪問資料庫來獲取資料。由於這些資料從未被快取過,因此需要載入資料。開發者通常透過手動發出可能發生的查詢來“預熱”快取,以緩解這種延遲。
寫入直達 (Write-through)
寫入直達快取策略與前兩種不同,因為它不是直接將資料寫入資料庫,而是先寫入快取,然後快取立即寫入資料庫。這種安排仍然可以像讀取直達策略一樣被視覺化,即應用程式位於中間的一條直線上。
寫入直達策略的優點是快取能確保擁有任何寫入的資料,並且新的讀取不會因為快取從主資料庫請求資料而產生延遲。如果僅採用這種安排,則存在額外的寫入延遲的巨大缺點,因為操作必須先到快取,然後再到資料庫。這應該會立即發生,但仍然會連續發生兩次寫入。
真正的好處來自於將寫入直達與讀取直達快取結合使用。這種策略將採用上述讀取直達快取策略的所有好處,並額外消除了資料不一致的潛在問題。
回寫 (Write-back)
回寫的工作方式幾乎與寫入直達策略完全相同,除了一個關鍵細節。在回寫策略中,應用程式再次直接寫入快取。然而,快取不會立即寫入資料庫,而是延遲一段時間後再寫入。
透過延遲而非立即寫入資料庫,在寫密集型工作負載下可以減少快取的壓力。這使得回寫與讀取直達的組合非常適合混合工作負載。這種配對確保了最近寫入和訪問的資料始終存在並透過快取可訪問。
快取到資料庫寫入的延遲可以提高整體寫入效能,如果支援批處理,還可以減少總寫入次數。這為節省成本和減少整體工作負載帶來了潛力。然而,在快取故障的情況下,這種延遲為可能的資料丟失打開了大門,如果批處理或延遲寫入資料庫尚未發生。
寫入環繞 (Write-around)
寫入環繞快取策略將與旁路快取或讀取直達快取結合使用。在這種安排中,資料總是寫入資料庫,而讀取的資料則進入快取。如果快取未命中,則應用程式將讀取資料庫,然後更新快取以備下次使用。
這種特定策略在資料只寫入一次且不更新的情況下表現最佳。資料讀取頻率非常低或根本不讀取。
結論
在本指南中,我們介紹了資料庫快取的概念。我們涵蓋了配置快取策略對資料庫和應用程式效能的主要好處。我們還討論了各種快取策略的基礎知識以及如何視覺化和最佳化這些安排以協同工作。
配置能夠最佳化快取和資料庫工作負載的快取策略,可以對應用程式的效能、可用性和可伸縮性產生重大的積極影響。瞭解從何開始以及有哪些選項至關重要。
訪問 Prisma 資料平臺,在一個地方管理所有應用程式資料。





