2024 年 5 月 24 日

速度與節省:使用 Prisma Accelerate 快取資料庫查詢

深入了解每次查詢快取的優點,展示它如何使查詢更快、處理流量激增、最大限度地降低基礎架構成本,並讓您的使用者滿意。 了解如何輕鬆實作 Prisma Accelerate 並實現更佳的應用程式效能和成本節省。

The word "caching" with a starburst behind it, showing that it is important.

想像一下:您和您的團隊剛剛發布了最新的應用程式 SuperWidget。 每個人都很興奮,而且您非常確定它會大受歡迎……而且確實如此! SuperWidget 突然被世界上每家主要公司使用。 然而,您很快意識到流量水平遠遠超出您的計劃,並且您的應用程式開始出現效能下降。

為了解決這個問題,您的團隊迅速採取行動。 您深入研究您的應用程式監控,並意識到您應用程式中的幾個查詢比預期的影響更大。 經過漫長的一夜,您的團隊實施了許多基礎架構改進,最顯著的是一個強大的快取層,它減輕了其餘基礎架構的負載。 SuperWidget 的效能不再受到負面影響,您的新客戶對他們的使用體驗感到滿意。

那麼,您和您的團隊可以做得更好嗎?

雖然您的團隊很有能力,但您最不想要的就是緊急應變和整夜工作。 該解決方案仍然需要協調的努力和大量浪費的工程時數。 相反,您可以使用 Prisma Accelerate 並輕鬆快取您的查詢,從而節省時間和挫折感。

為什麼您應該快取資料庫查詢

正如您在上面的範例中所看到的,當您需要減少資料庫或應用程式負載時,快取非常有用。 透過快取,您可以從載入應用程式所需的時間中刪除昂貴的操作,這也稱為「關鍵路徑」。 後續請求可以使用此快取資料,以避免花費應用程式或資料庫時間來計算結果。 如果由於減少應用程式負載而提高穩定性還不夠,那麼花費在計算上的時間更少也意味著您的基礎架構可以支援更高的工作負載,或者您的應用程式可以在減少的硬體上運行,從而為您省錢!

An image showing a large number of connections going from clients, to a server, to a database. The database is overloaded and stuck at 100% CPU. There is an X's for eyes emoji next to the database.

An image showing a large number of connections going from clients, to a server, through a cache, to a database. Thanks to the cache, the database is not overloaded. There is an emoji with sunglasses next to the database.

快取的另一個原因是可以降低輸出成本。 許多雲端供應商對離開其服務的資料收取輸出成本。 這可能是從您的資料庫提供的列、靜態圖像,甚至是往返其他服務的回應。

雖然更快的載入時間和降低的成本是快取的直接好處,但它們會帶來另一個好處:改善您應用程式的感知度! 更快的載入時間會帶來更愉快的體驗和更快樂的客戶。 即使訪客沒有付費給您,載入感覺遲緩的應用程式也可能導致使用者最多只是不斷重新整理,最壞的情況是永遠離開。

在考慮是否快取查詢時,您絕對應該牢記這三個原因,以及其他原因。 幸運的是,Prisma Accelerate 可以提供協助:Accelerate 具有每次查詢快取功能,且輸出成本極低。 使用 Prisma Accelerate 時,您可以輕鬆快速地快取有問題的查詢

在第一種情況下,昂貴或經常存取的查詢可能會使您的資料庫不堪重負,每次查詢快取將防止該負載,只要資料被快取即可。 如果成本是考量因素,您的資料將從您的資料庫存取一次,然後快取在 Accelerate 的全球分散式節點集合中,從而避免因進一步的資料庫讀取而產生的額外成本,同時也使您的應用程式更快!

何時快取

現在您知道為什麼以及如何快取,您可能會想開始快取每個查詢。 在您這樣做之前,請注意我們的範例中發生的情況:您和您的團隊在實作快取之前監控了您的應用程式。

快取很棒,但任何新增功能都可能產生費用或導致意想不到的副作用。 在 Prisma,我們是可觀察性驅動開發的忠實擁護者:檢測您的應用程式並做出明智的決策。 快取應該是眾多選項中經過仔細考慮的選項。 例如,如果您需要特定查詢始終包含完全最新的資料,那麼快取可能不適合。 另一方面,資料不常變更或不需要最新的情況非常適合。

這並不是說您需要在實作任何形式的快取之前監控生產流量。 快取也可能是開發過程中的有用工具! 如果您的開發環境中有自動化測試,並且您看到查詢速度緩慢,請使用 Accelerate 快速快取該查詢並測量結果。 如果您看到明顯的改進,那麼快取可能很適合。 無論環境如何,建議仍然相同:測量和基準測試,進行變更,然後再次測量。

如果您對查詢洞察感興趣並深入研究效能最佳化,請查看 Prisma Optimize

Prisma Accelerate 如何提供協助

正如您在上面看到的,使用 Prisma Accelerate 新增快取就像將 cacheStrategy 選項新增到查詢一樣容易。 由於使用 Prisma Accelerate 快取查詢是依每次查詢為基礎,因此您只需為您快取的查詢付費。 您的應用程式的其餘部分會繼續按原樣運行。 只要您確定特定查詢需要快取,您只需新增幾行程式碼即可新增它!

除了能夠快速輕鬆地實作快取之外,使用 Prisma Accelerate 也意味著無需設定額外的快取基礎架構。 雖然雲端供應商有託管的鍵值儲存,但在最好的情況下,您仍然需要手動插入資料、管理索引和複寫,並確保在事物變更時使其失效。 透過 Prisma Accelerate,這一切都為您處理! 為您想要快取的查詢新增快取策略,然後繼續構建更多偉大的事物。

An image with two emoji. On the left is an emoji that looks dizzy and overwhelmed. Surrounding it are a lot of things that you have to think of when managing caching infrastructure: Redis, memcached, indexes, invalidation, in-memory, sharding, AWS, GCP. The emoji on the right is winking, clearly happy. It has two steps above it: 1. find a query to cache. 2. Use the Prisma Accelerate extension's cacheStrategy feature.

Prisma Accelerate 適合我嗎?

在調查任何軟體時,總是有很多選擇。 我們發現 Accelerate 非常適合以下幾種應用程式

  • 靜態內容,例如部落格文章
  • 複雜查詢,例如與帳單相關任務的使用量計算
  • 讀取繁重的應用程式,例如社群媒體平台、新聞聚合器和電子商務網站

Accelerate 也非常適合想要快速讓工程師加入團隊的團隊。 由於 Accelerate 提供託管基礎架構並內建於 Prisma Client 中,即使是不熟悉您的程式碼庫的新團隊成員也可以輕鬆快取查詢。


Prisma Accelerate 不僅僅是一個快取! Accelerate 是邊緣分佈式,並且還處理連線池。 請務必查看完整文件

總結

快取仍然是軟體工程中「困難」的問題之一,這是理所當然的! 僅僅快取更多內容並不能解決問題,團隊需要花時間了解可以快取什麼以及它將如何影響他們的產品。

雖然有很多不同的快取方法,但 Prisma Accelerate 使在每次查詢的基礎上實作快取變得容易,並讓您有更多時間專注於構建偉大的產品。 如果您想採取下一步,請進一步了解 Accelerate立即開始快取您的 Prisma ORM 查詢。



開始使用 Accelerate 快取

不要錯過下一篇文章!

訂閱 Prisma 電子報