跳到主要內容

常見問題

我應該在何時為 Prisma Accelerate 啟用靜態 IP?

當您的安全設定需要 IP 允許清單,或者您正在實施僅允許來自受信任 IP 存取的防火牆時,請為 Accelerate 啟用靜態 IP,以確保受控且安全的資料庫連線。

Result of enabling static IP Accelerate with a database using IP allowlisting

請在如何在 Platform Console 中為 Accelerate 啟用靜態 IP上了解更多資訊。

資訊

什麼是靜態 IP?

靜態 IP 位址是固定的 IPv4 或 IPv6 位址。與可能不可預測地變更的動態 IP 位址不同,來自靜態 IP 位址的流量可以輕鬆識別。

What is a static IP

ℹ️ 若要在您現有或新的專案環境中為 Accelerate 啟用靜態 IP 支援,您的工作區需要位於我們的 ProBusiness 方案。請查看定價頁面以取得更多資訊。

為什麼我偶爾會看到非預期的快取行為?

當 Accelerate 的快取觀察到來自專案的較高負載時,效能最佳。許多快取操作,例如將資料提交到快取和重新整理過時的資料,都是非同步發生的。在基準測試 Accelerate 時,我們建議使用迴圈或負載測試方法進行。這將更好地模擬較高負載的情況,並減少來自低頻率操作的異常值。

Prisma 操作透過 HTTP 傳送到 Accelerate。因此,對 Accelerate 的第一個請求必須建立 HTTP 交握,並可能因此產生額外的延遲。我們正在探索未來減少此初始請求延遲的方法。

Accelerate 的定價是多少?

您可以在我們的Accelerate 定價頁面上找到更多詳細資訊

VS Code 無法辨識 $extends 方法

如果您將 Accelerate 的 Prisma Client 擴充功能新增到目前在 VS Code 中開啟的現有專案,編輯器可能不會立即辨識 $extends 方法。

這可能是 TypeScript 伺服器尚未辨識重新產生的 Prisma Client 的問題。若要解決此問題,您需要重新啟動 TypeScript。

  1. 在 VS Code 中,開啟命令面板。您可以按下 F1 或選取檢視 > 命令面板來執行此操作。
  2. 輸入 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 Platform 中 Accelerate 的設定標籤下的區域區段來檢視可用區域 儀表板

Accelerate 如何知道要從哪個區域提取快取?

在底層,Accelerate 使用 Cloudflare,其使用 任播 來進行網路定址和路由。傳入的請求將路由到其網路中最近的資料中心或「節點」,該節點具有有效處理請求的能力。若要深入了解其運作方式,我們建議您研究 任播

我如何在 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 中受益匪淺,尤其是在無伺服器或邊緣函式中,在這些環境中,管理和擴展資料庫連線很困難。您可以從這裡了解更多關於無伺服器挑戰的資訊。

我可以在其他 ORM/查詢建構器/驅動程式中使用 Accelerate 嗎?

否。我們目前沒有支援其他 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 和 Pulse 的靜態 IP 範圍是否不同?

否,如果您使用相同的資料庫 URL 為 Accelerate 和 Pulse 啟用靜態 IP,則產生的靜態 IP 範圍對於這兩種產品將是相同的。

我可以增加 Accelerate 查詢持續時間和回應大小限制嗎?

是的,您可以根據您的訂閱方案增加 Accelerate 限制。以下是可設定的限制

限制入門Pro 方案Business 方案
查詢逾時最多 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. 測試您的登入

  • 登出並嘗試使用您的電子郵件和您剛建立的密碼登入。

注意:如果您遇到任何問題,請聯絡我們的支援團隊以尋求連結您帳戶的協助。