快取
快取記憶體 - 維基百科,自由的百科全書
https://www.youtube.com/watch?v=6h5rT5ai1GA
2025-03-09
ゆるコンピュータ科学ラジオ
活用參考區域性實現記憶體階層的手段
記憶體階層 - 維基百科,自由的百科全書
硬體和軟體層面
Caching — PlanetScale
PlanetScale
用資料庫取代快取
2025-08-31 Replacing a cache service with a database - blag
為什麼我們要使用快取?
能夠在極低延遲下提供預先計算好的資料,遠快於資料庫
常見的cache aside模式
應用程式同時與快取和資料庫互動,並盡可能讓快取與資料庫保持同步
快取本身與資料庫互動
應用程式同時訪問快取和資料庫的模式更常見
與其使用像Valkey(或Redis)這類快取,你可以直接設置一個唯讀副本,並將它當作快取
快取不需要與資料庫強一致,唯讀副本也一樣
好處是你可以繼續用SQL查詢,而不是快取專屬的介面
使用內嵌式資料庫(像SQLite、PGLite),再搭配複寫工具(像Litestream或libSQL),甚至能達到零網路延遲
最接近的例子,大概是Noria+MySQL(現在的ReadySet)
為什麼快取依然更受青睞?
1. 建立與銷毀快取的成本很低
2. 大多數工作負載只需要快取部分資料,而開發者能決定那個子集是什麼
3. 快取能保存預先計算好的資料
4. 快取能設定驅逐策略(eviction policies)與TTL
資料庫則會不知道哪個允許我指定特定資料列永遠保留在buffer pool中
5. 資料庫通常比快取大好幾個數量級
6. 快取服務能處理數十萬個並發連線
從快取到資料庫
1. 部分唯讀副本
2. 支援大量唯讀副本
3. IVM(Incremental View Maintenance,增量檢視維護)
4. 更細粒度的資料存取