剖析資料庫

運用資料庫分析器評估 Firebase 即時資料庫的成效 Firebase CLI 內建的工具應用程式。分析器工具 然後在資料庫內的活動量產生 詳細報表使用詳細報表來排解 資料庫效能、找出問題領域,並減少未建立索引的查詢。

建立個人資料

  1. 開始剖析 Firebase 即時資料庫之前,請確認您使用的是 最新版本的 Firebase CLI 您已初始化要剖析的資料庫和專案。注意事項 您必須是該專案的編輯者或擁有者,才能剖析專案

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

    firebase database:profile
    在分析器從您的資源記錄作業開始時,分析器會顯示狀態訊息 資料庫並建立設定檔

  3. 按下 Enter 鍵,完成個人資料並顯示結果。

解讀結果

分析器工具 並將結果分成三大類:speed、 「頻寬」和「未建立索引的查詢」

速度

速度報表會測量伺服器針對 作業類型。不過,速度報告中顯示的速度 實際反映使用者體驗的速度影響因素包括: 網路狀況可能會增加用戶端的延遲時間

速度報表包含下列屬性:

  • 路徑:資料庫中執行作業的路徑。如果 有超過 25 個子節點,分析器工具會將其收合為 並新增 $wildcard 標記。您可能會看見資料庫的 報表的根目錄,以正斜線 / 表示。
  • 計數:在指定路徑發生的作業數。
  • 平均執行速度:伺服器執行所需的平均時間 處理該路徑中特定作業類型所需的商業邏輯。 此處測量的時間間隔是從 Pending Time」。
  • 平均待處理時間:在此之前排入佇列的平均時間 和 Pod 的 IP 位址此延遲是用戶端發起的要求都很常見。 伺服器端要求的總延遲時間大致等於該要求 待處理時間和執行速度
  • 權限遭拒:指定的作業數量 已遭封鎖 Firebase 資料庫規則 資料庫內的項目
按照作業類型顯示速度報表
讀取執行速度 用戶端要求從 資料庫讀取執行時間通常會隨著資料量而增減 但部分小型讀取作業也可能會因為快取而延遲 預先擷取。
寫入執行速度 用戶端要求將資料寫入 資料庫寫入執行時間會隨著資料量增加而擴充 寫入。
連線執行速度 對資料庫用戶端建立要求的伺服器回應時間。 連線要求的延遲時間是以記憶體內伺服器端做為主要用途 與連線管理相關的簿記
廣播執行速度

伺服器將資料提供給用戶端所需的時間 監聽指定路徑以取得即時更新。

Count 屬性 廣播速度報表會彙整已播送的廣播數量 (而非 接收資訊的客戶數量舉例來說,假設有 10 個用戶端 的監聽器中,當伺服器對所有 10 字元播送更新時 用戶端,即使 10 個用戶端,廣播計數只反映 1 則廣播訊息 接收資料

「權限遭拒」屬性不包含在 播送速度報告。

頻寬

「頻寬報表」深入分析資料庫消耗多少資料 跨傳入和傳出作業請不要使用頻寬 提供預估帳單的報表,因為未涵蓋所用頻寬 執行其他作業,例如剖析資料庫。 「頻寬報表」會大致估算 讀取、寫入和播送作業消耗的資料量。 這項工具是用來評估成效,但不能預測帳單。

頻寬報表包含下列屬性:

  • 路徑:資料庫中執行作業的路徑。如果 有超過 25 個子節點,分析器工具會將這些子節點收合 父項路徑

  • 總計:所有作業使用傳出或傳入的位元組總數 和預測路徑

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

  • 平均:所有使用者下載或上傳的平均位元組數 都位於指定路徑 (位元組/寫入或位元組/讀取) 時。

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

未建立索引的查詢

未建立索引的查詢費用可能非常高昂,因為用戶端下載 然後在該位置執行查詢。這會佔用更多頻寬 無從得知盡可能解決最多的未建立索引查詢,以便最佳化 例如資料庫效能

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

  • 路徑:在資料庫中發生未建立索引的查詢時所在的路徑。
  • 索引:應新增的規則來解決未建立索引的查詢。學習新知 請參閱為資料建立索引一文,進一步瞭解如何建立索引。
  • 計數:在指定路徑中發生的未建立索引查詢數量。

進階剖析

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

firebase database:profile --raw

原始輸出也會包含每項作業的用戶端資訊,例如 userAgent 字串和 IP 位址。進一步瞭解各種作業 在 Firebase 即時資料庫的 Firebase 即時資料庫作業類型中剖析。

分析器工具:非帳單工具

請勿使用分析器工具估算頻寬費用。分析器工具 方便您全盤掌握資料庫的效能 監控作業及排解問題,而非預估費用。這項服務 而不是網路流量,只會記錄 回應中傳送的應用程式資料

以下是一些由 Firebase 計費的常見網路流量範例 針對下列項目:

  • 通訊協定負荷:伺服器和用戶端之間的一些額外流量 建立及維護工作階段時,視基礎系統的 這類流量可能包括 Firebase 即時資料庫的即時資料 通訊協定負擔、WebSocket 負擔和 HTTP 標頭負擔。每當 這樣連線,並結合了任何 SSL 加密機制,所產生的負擔 系統也會增加連線費用雖然這通常 需要大量頻寬,如果您的裝載是極小的,則可能很龐大 或是頻繁、短時間內連結
  • SSL 加密負擔:使用 SSL 須支付相關費用 安全連線所需的加密負擔平均來說 初始握手約為 3.5 KB,而 每封外寄郵件的 TLS 記錄標頭。對大多數應用程式來說 佔了帳單的百分比然而,如果 確實需要大量的 SSL 交握。例如裝置 不支援 TLS 工作階段票證的 KPI 可能需要大量的 SSL 連線握手

如要進一步瞭解如何解讀及預估帳單金額,請參閱本文