剖析資料庫

使用 Firebase CLI 內建的資料庫剖析器工具,評估 Firebase Realtime Database 的效能。分析器工具會記錄資料庫在特定時間範圍內的所有活動,然後產生詳細報表。使用詳細報表排解資料庫效能問題、找出問題區域,並減少未建立索引的查詢。

建立個人資料

  1. 開始分析 Firebase Realtime Database 前,請務必使用最新版 Firebase CLI,並針對要分析的資料庫和專案初始化 CLI。請注意,您必須是該專案的編輯者或擁有者,才能進行設定。

  2. 使用下列指令開始剖析資料庫:

    firebase database:profile
    分析器會記錄資料庫中的作業並建立設定檔,同時顯示狀態訊息。

  3. 按下 Enter 鍵即可完成設定檔並顯示結果。

解讀結果

剖析器工具會匯總收集到的資料庫作業資料,並以三個主要類別顯示結果:速度頻寬未建立索引的查詢

速度

速度報表會針對每種作業類型,測量伺服器的回應時間 (以毫秒為單位)。不過,速度報告中測得的速度可能無法實際反映使用者體驗到的速度。網路狀況等因素可能會導致用戶端延遲。

速度報表包含下列屬性:

  • 路徑:資料庫中發生作業的路徑。如果子節點超過 25 個,剖析器工具會將這些節點摺疊為父路徑,並新增 $wildcard 標記。您可能會在報表中看到資料庫的根目錄,以正斜線 / 表示。
  • 計數:指定路徑發生的作業數。
  • 平均執行速度:伺服器執行處理該路徑特定作業類型所需業務邏輯的平均時間。這裡測量的時間間隔,是在下方所述「平均待處理時間」測量完畢後開始。
  • 平均等待時間:要求排入佇列後,到執行前的平均等待時間。所有用戶端發起的要求都會有這種延遲情形。伺服器端要求總延遲時間,大致上是該要求等待時間和執行速度的總和。
  • 權限遭拒:在指定路徑中,因Firebase 資料庫規則而遭封鎖的資料庫作業數量。
依作業類型劃分的速度報表
讀取執行速度 用戶端要求從資料庫讀取資料時,伺服器的回應時間。讀取執行時間通常會隨著讀取的資料量而增加,但即使是少量讀取,也可能因快取預先擷取而延遲。
寫入執行速度 用戶端要求將資料寫入資料庫時,伺服器的回應時間。寫入執行時間會隨著寫入的資料量而增加。
連結執行速度 建立資料庫用戶端的要求伺服器回應時間。 連線要求的延遲時間主要取決於與連線管理相關的伺服器端記憶體內記帳。
播送執行速度

伺服器將資料發布至用戶端所需的時間量,這些用戶端會監聽指定路徑的即時更新。

「Count」(計數) 屬性會匯總廣播次數,而非收到資訊的用戶端數量。舉例來說,假設有 10 個用戶端正在監聽特定路徑,而伺服器將更新內容廣播給這 10 個用戶端,則廣播計數只會反映 1 次廣播,即使 10 個用戶端都收到資料也一樣。

「Permission Denied」(權限遭拒) 屬性不會納入「播送速度」報表。

頻寬

頻寬報表會提供深入分析,說明資料庫在傳入和傳出作業中消耗的資料量。不過,您不應使用頻寬報表估算帳單,因為這類報表不含用於其他作業的頻寬,例如剖析資料庫。頻寬報表會大致估算資料庫讀取、寫入和廣播作業所耗用的資料酬載大小。這項工具是用來評估成效,而非預測帳單費用。

頻寬報表包含下列屬性:

  • 路徑:資料庫中發生作業的路徑。如果子節點超過 25 個,剖析器工具會將這些節點摺疊成父路徑。

  • 總計:指定路徑中所有作業使用的傳出或傳入位元組總數。

  • 計數:指定路徑發生的作業數。

  • 平均值:指定路徑中各項作業的平均下載或上傳位元組數 (位元組/寫入或位元組/讀取)。

頻寬報表
已下載的位元組數 透過用戶端 SDK 和 REST API 傳送的讀取和廣播作業所耗用的資料。
上傳的位元組數 透過寫入要求傳送至資料庫伺服器的資料。 刪除作業會顯示為寫入作業,且傳入資料量為 0 個位元組。

未建立索引的查詢

未建立索引的查詢可能很耗費資源,因為用戶端會下載某個位置的所有資料,然後對這些資料執行查詢。這會耗用比必要更多的頻寬。盡可能解決未建立索引的查詢,以提升資料庫效能。

「未編入索引的查詢」報表會顯示下列屬性:

  • 路徑:資料庫中發生未建立索引查詢的路徑。
  • 索引:您應新增的規則,可解決未編入索引的查詢。如要進一步瞭解索引,請參閱「為資料建立索引」。
  • 計數:在指定路徑中發生的未編入索引查詢次數。

進階剖析

如要查看資料庫處理的所有作業,請在剖析資料庫時使用 --raw 標記,如下所示:

firebase database:profile --raw

原始輸出內容也包含每個作業的用戶端資訊,例如 userAgent 字串和 IP 位址。進一步瞭解Firebase Realtime DatabaseFirebase Realtime Database作業類型」中列出的不同作業。

剖析工具:並非帳單工具

請勿使用剖析器工具估算頻寬費用。剖析器工具的用途是提供資料庫的整體效能概況,協助您監控作業及排解問題,而非估算帳單費用。這項指標不會計入網路流量,只會記錄回應中傳送的應用程式資料預估值。

以下列舉一些常見的 Firebase 網路流量計費範例,這些流量不會納入資料庫設定檔:

  • 通訊協定額外負荷:伺服器與用戶端之間必須有額外流量,才能建立及維護工作階段。視基礎通訊協定而定,這類流量可能包括:Firebase 即時資料庫的即時通訊協定額外負荷、WebSocket 額外負荷和 HTTP 標頭額外負荷。每次建立連線時,這項額外負荷都會與任何 SSL 加密額外負荷加總,計入連線費用。雖然這通常不會佔用大量頻寬,但如果酬載很小,或是您經常建立短暫連線,就可能佔用大量頻寬。
  • SSL 加密負擔:安全連線需要 SSL 加密負擔,這會產生相關費用。平均而言,初始信號交換的費用約為 3.5 KB,每則外寄訊息的 TLS 記錄標頭費用約為 40 B。對大多數應用程式而言,這筆費用只占帳單的一小部分。不過,如果您的特定案例需要大量 SSL 交握,這可能會佔據很大比例。舉例來說,不支援 TLS 工作階段票證的裝置可能需要大量 SSL 連線交握。

進一步瞭解如何解讀及預估帳單