Accelerate 常見問題
何時應該為 Prisma Accelerate 啟用靜態 IP?
當您的安全設定需要 IP 白名單或您正在實施只允許來自受信任 IP 訪問的防火牆時,請為 Accelerate 啟用靜態 IP,以確保受控且安全的資料庫連線。

在平臺控制檯中如何為 Accelerate 啟用靜態 IP 瞭解更多資訊。
什麼是靜態 IP?
靜態 IP 地址是固定的 IPv4 或 IPv6 地址。與可能發生不可預測變化的動態 IP 地址不同,來自靜態 IP 地址的流量可以輕鬆識別。

ℹ️ 要在您現有或新的專案環境中啟用 Accelerate 的靜態 IP 支援,您的工作區需要使用我們的 專業版 或 商業版 計劃。請檢視 定價頁面 獲取更多資訊。
為什麼有時會看到意外的快取行為?
當 Accelerate 的快取觀察到專案有更高負載時,其效能最佳。許多快取操作(例如將資料提交到快取和重新整理過期資料)都是非同步發生的。在對 Accelerate 進行基準測試時,我們建議使用迴圈或負載測試方法。這將更好地模擬高負載場景,並減少低頻操作帶來的異常值。
Prisma 操作透過 HTTP 傳送到 Accelerate。因此,第一個對 Accelerate 的請求必須建立 HTTP 握手,並可能因此產生額外的延遲。我們正在探索未來減少這種初始請求延遲的方法。
Accelerate 的定價是怎樣的?
您可以在我們的 Accelerate 定價頁面 找到更多詳細資訊。
VS Code 不識別 $extends 方法
如果您將 Prisma Client 的 Accelerate 擴充套件新增到當前在 VS Code 中開啟的現有專案中,編輯器可能不會立即識別 $extends 方法。
這可能是 TypeScript 伺服器尚未識別重新生成的 Prisma Client 的問題。要解決此問題,您需要重啟 TypeScript。
- 在 VS Code 中,開啟命令面板。您可以透過按 F1 或選擇 檢視 > 命令面板 來完成此操作。
- 輸入
typescript並選擇執行 TypeScript: 重啟 TS 伺服器 命令。
VS Code 現在應該能夠識別 $extends 方法。
Accelerate 的快取節點在哪些區域可用?
Accelerate 執行在 Cloudflare 網路上,快取命中從 Cloudflare 的 300 多個位置提供。您可以在此處找到 Accelerate 快取節點的可用區域:https://www.cloudflare.com/network/。
Accelerate 的連線池在哪些區域可用?
當未指定快取策略或發生快取未命中時,Prisma Client 查詢將透過 Accelerate 的連線池路由。目前,查詢可以透過 16 個可用位置中的任何一個選定區域進行路由。
目前,可用區域列表如下:
- 亞太地區,孟買 (
ap-south-1) - 亞太地區,首爾 (
ap-northeast-2) - 亞太地區,新加坡 (
ap-southeast-1) - 亞太地區,悉尼 (
ap-southeast-2) - 亞太地區,東京 (
ap-northeast-1) - 加拿大,中部 (
ca-central-1) - 歐洲,法蘭克福 (
eu-central-1) - 歐洲,愛爾蘭 (
eu-west-1) - 歐洲,倫敦 (
eu-west-2) - 歐洲,巴黎 (
eu-west-3) - 歐洲,斯德哥爾摩 (
eu-north-1) - 南美洲,聖保羅 (
sa-east-1) - 美國東部,北弗吉尼亞 (
us-east-1) - 美國東部,俄亥俄 (
us-east-2) - 美國西部,北加利福尼亞 (
us-west-1) - 美國西部,俄勒岡 (
us-west-2)
您可以在設定 Accelerate 時或訪問 Prisma Cloud 平臺儀表板中 Accelerate 的設定選項卡下的區域部分來檢視可用區域。
Accelerate 如何知道從哪個區域獲取快取?
在底層,Accelerate 使用 Cloudflare,後者利用 Anycast 進行網路定址和路由。傳入請求將被路由到其網路中具有高效處理請求能力的最接近的資料中心或“節點”。要了解更多關於其工作原理的資訊,我們建議查閱 Anycast。
如何在 Accelerate 上使快取失效?
如果您使用的是 付費計劃,您可以透過 $accelerate.invalidate API 按需使快取失效,或者您可以在專案級別上每天最多使整個快取失效五次。此限制是根據您的 計劃 設定的。您可以透過 Accelerate 配置頁面管理此功能。
Accelerate 的一致性模型是什麼?
Accelerate 沒有一致性模型。它不是一個需要節點達成共識的分散式系統(因為資料只儲存在離使用者最近的快取節點中)。然而,Accelerate 快取節點中快取的資料不會傳播到其他節點,因此 Accelerate 在設計上不需要一致性模型。
Accelerate 實現了 直讀快取策略,特別適用於讀密集型工作負載。
快取提供的資料的新鮮度取決於您的查詢中定義的快取策略。有關如何為查詢選擇正確快取策略的更多資訊,請參閱此部分。
Accelerate 與其他快取工具(如 Redis)有何不同?
- Accelerate 是一種專用快取,允許您透過快取策略在程式碼的查詢級別最佳化資料訪問。另一方面,Redis 和 Memcached 等工具是通用快取,旨在具有適應性和靈活性。
- Accelerate 是一種託管服務,可減少構建和維護快取服務所需的時間、風險和工程工作量。
- 預設情況下,Accelerate 是全球分散式服務,可減少查詢延遲。其他快取工具需要額外的配置才能使其在全球範圍內可用。
何時不應使用 Accelerate 的快取功能?
Accelerate 是一個全域性資料快取和連線池,允許您在程式碼的查詢級別最佳化資料訪問。雖然使用 Accelerate 進行快取可以大大提升您的應用程式效能,但它可能並非總是您用例的最佳選擇。
如果出現以下情況,Accelerate 的全域性快取功能可能不適合您的應用程式:
-
您的應用程式僅在特定區域內使用,並且您的應用伺服器和資料庫都位於同一區域的同一網路中。例如,如果您的應用伺服器和資料庫位於同一區域和網路中,資料庫查詢可能會快得多。但是,如果您的應用伺服器與資料庫位於不同的區域或網路中,Accelerate 將會加速您的查詢,因為資料將被快取在離您的應用最近的資料中心。
-
您僅需要一個通用快取。Accelerate 是一個連線池器和專用快取,它只快取程式碼中的資料庫查詢響應。像 Redis 這樣的通用快取將允許您快取來自多個來源(例如外部 API)的資料,而 Accelerate 目前不支援此功能。如果您對通用快取感興趣,請透過我們的 Discord 與我們分享您的反饋。
-
您的應用程式資料在檢索時始終需要是最新的,這使得難以建立合理的快取策略。
即使不使用 Accelerate 的全域性快取,您仍然可以透過使用其連線池從 Accelerate 中受益匪淺,尤其是在無伺服器或邊緣函式中,這些場景下管理和擴充套件資料庫連線很困難。您可以在此處瞭解更多關於無伺服器挑戰的資訊。
我可以將 Accelerate 與其他 ORM/查詢構建器/驅動程式一起使用嗎?
不。我們目前沒有支援其他 ORM/查詢構建器或驅動程式的計劃。但是,如果您對支援其他庫感興趣,請隨時透過我們的 Discord 社群的 #help-and-questions 頻道聯絡我們。
配置 cacheStrategy 時,ttl 引數允許的最大值是多少?
生存時間 (ttl) 引數最長可設定為一年。但是,需要注意的是,如果快取中的專案不經常被訪問,它們可能會被逐出。
根據我們的實驗,快取項大約能持續 18 小時。雖然如果專案被頻繁訪問,它們可能會在快取中保留更長時間,但不能保證。
注意:即使是經常訪問的專案也可能偶爾從快取中被逐出。無論其活動級別如何,專案不太可能存活一個月或更長時間。
為什麼 Accelerate 在服務中斷期間不回退到直接連線字串?
在極少數的服務中斷情況下,回退到直接連線會繞過連線池。這可能會耗盡資料庫的可用連線,並在資料庫級別上導致其他問題。
如果服務中斷,建議在狀態頁面上驗證。您可以聯絡 Prisma 的支援渠道尋求幫助。
注意:此外,值得注意的是,某些邊緣函式執行時環境可能不支援與 Prisma ORM 的直接連線。有關更多詳細資訊,請參閱我們的邊緣函式文件。
互動式事務中的每個查詢是否單獨計費?
是的,互動式事務根據事務中的單個操作進行計費。事務本身的開始、提交或回滾不收取費用。例如,在以下查詢中,有兩條可計費查詢
await prisma.$transaction(async (tx) => {
await tx.user.deleteMany({ where: { name: "John Doe" } });
await tx.user.createMany({ data });
});
但是,當使用 用於順序客戶端操作的 $transaction API 時,無論陣列中包含多少查詢,都只算作一個可計費查詢。例如
await prisma.$transaction([
prisma.user.deleteMany({ where: { name: "John Doe" } }),
prisma.user.createMany({ data }),
]);
如果您不需要互動式事務,可以透過使用順序操作事務來節省成本並提高效能。順序操作事務在 Accelerate 上表現更好,因為它們在一次資料庫往返中執行,而互動式事務需要單獨的往返來啟動、提交以及執行事務上的每個單獨操作。
我可以增加 Accelerate 查詢持續時間和響應大小限制嗎?
是的,您可以根據您的訂閱計劃增加 Accelerate 限制。以下是可配置的限制:
| 限制 | Starter | 專業版計劃 | 商業版計劃 |
|---|---|---|---|
| 查詢超時 | 最長 10 秒 | 最長 20 秒 | 最長 60 秒 |
| 互動式事務超時 | 最長 15 秒 | 最長 30 秒 | 最長 90 秒 |
| 響應大小 | 最長 5 MB | 最長 10 MB | 最長 20 MB |
請檢視定價頁面,瞭解更多關於可用計劃及其相應限制的詳細資訊。
雖然您可以根據訂閱計劃增加這些限制,但仍然建議最佳化資料庫操作。在我們的故障排除指南中瞭解更多資訊。
使快取查詢結果失效需要多長時間?
由於快取需要全域性清除,因此很難提供具體的時間範圍。但是,快取資料最終會保持一致,並且通常會在幾秒鐘內傳播到所有 PoP。在極少數情況下,可能需要更長時間。
這是一個演示應用程式,用於測試使快取查詢結果失效所需的時間。
失效和重新驗證之間有什麼區別?
失效:快取條目被刪除,下次請求時將獲取新資料,導致快取未命中。這會刪除過期資料,但可能導致響應變慢,直到快取重新填充。
重新驗證:快取條目主動更新,確保下一次請求使用快取中的最新資料。這會使快取保持有效,並透過避免快取未命中來維持更快的響應時間。
什麼是按需快取失效?
按需快取失效允許應用程式在特定快取資料更改時立即更新,而不是等待常規快取重新整理週期。這使得資訊對使用者保持準確和最新。
何時應該使用快取失效 API?
當資料一致性無法等待快取的標準過期或重新驗證時,快取失效 API 至關重要。主要用例包括:
- 內容更新:當發生需要立即可見的關鍵更改時,例如已釋出文章的編輯、產品更新或個人資料修改。
- 庫存管理:在即時應用程式中,如庫存或預訂系統,其中庫存水平、可用性或預訂狀態必須反映最新資訊。
- 高優先順序資料:對於時間敏感的資料,如突發新聞或緊急通知,使用者需要立即看到最新資訊至關重要。
在這些場景中使用按需快取失效有助於只重新整理必要的資料,從而在保證系統性能的同時,確保為使用者提供準確、最新的資訊。
Accelerate 如何計算查詢以進行計費?
Accelerate 在 Prisma Client 呼叫級別計算查詢。單個 Prisma 查詢在底層可能轉換為多個 SQL 語句,但出於計費目的,它只算作一個查詢。這確保了直接、可預測的計費,反映了 Prisma Client 的使用情況,而不是底層 SQL 操作的複雜性。
無論查詢是從快取還是資料庫中提供,都會被計數。即使查詢是從快取中檢索的,它仍然計入您的查詢限制。
如何從 GitHub 登入切換到電子郵件和密碼登入?
如果您之前使用 GitHub 註冊,並希望切換到電子郵件和密碼登入,請遵循以下步驟:
1. 驗證您的 GitHub 電子郵件地址
- 檢查與您的 GitHub 帳戶關聯的主要電子郵件地址(例如,從您的 GitHub 個人資料或通知設定中檢視)。
2. 建立新的電子郵件/密碼賬戶
- 前往電子郵件/密碼註冊頁面。
- 使用與您的 GitHub 帳戶關聯的相同電子郵件地址建立新帳戶。
- 我們的系統將自動把您的新電子郵件/密碼帳戶連線到您現有資料。
3. 測試您的登入
- 退出並嘗試使用您的電子郵件和剛剛建立的密碼登入。
注意:如果您遇到任何問題,請聯絡我們的支援團隊以獲取帳戶關聯方面的幫助。