使用 Firebase CLI 內建的資料庫分析工具,評估 Firebase Realtime Database 的效能。分析器工具會記錄資料庫在特定時間內的所有活動,然後產生詳細報表。使用詳細報表排解資料庫效能問題、找出問題區域,並減少未建立索引的查詢。
建立個人資料
開始剖析 Firebase Realtime Database 之前,請確認您使用的是最新版本的 Firebase CLI,並已針對要剖析的資料庫和專案初始化。請注意,您必須是該專案的編輯者或擁有者,才能進行剖析。
使用下列指令,開始剖析資料庫:
分析器會記錄資料庫作業並建立設定檔,同時顯示狀態訊息。firebase database:profile
按下 Enter 鍵即可完成剖析並顯示結果。
解讀結果
分析器工具會匯總收集到的資料庫作業資料,並將結果分為三大類:速度、頻寬和未建立索引的查詢。
速度
速度報表會評估伺服器對每種作業類型的回應時間 (以毫秒為單位)。不過,速度報表測得的速度可能無法實際反映使用者體驗到的速度。網路狀況等各種因素都可能增加用戶端延遲時間。
速度報表包含下列屬性:
- 路徑:作業發生的資料庫路徑。如果子節點超過 25 個,分析器工具會將這些節點收合為父項路徑,並新增
$wildcard標記。報表中可能會顯示資料庫的根目錄,以正斜線/表示。 - Count:在指定路徑發生的作業數量。
- 平均執行速度:伺服器執行商業邏輯所需的平均時間,用於處理該路徑上的特定作業類型。這裡測量的時間間隔,是從下方「平均待處理時間」測量的時間間隔結束後開始計算。
- 平均待處理時間:要求在執行前排入佇列的平均時間。所有由用戶端發出的要求都會有這種延遲。伺服器端要求總延遲時間大致等於該要求的待處理時間和執行速度總和。
- 權限遭拒:資料庫中,指定路徑上遭 Firebase 資料庫規則封鎖的作業數量。
| 速度報表 (依作業類型) | |
|---|---|
| 讀取執行速度 | 用戶端要求從資料庫讀取資料時,伺服器的回應時間。讀取執行時間通常會隨著讀取的資料量而增加,但即使是少量讀取,也可能因快取預先擷取而延遲。 |
| 寫入執行速度 | 用戶端要求將資料寫入資料庫時,伺服器的回應時間。寫入執行時間會隨著寫入的資料量而調整。 |
| 連結執行速度 | 建立資料庫用戶端要求時,伺服器的回應時間。連線要求的延遲時間主要取決於與連線管理相關的記憶體內伺服器端記錄。 |
| 廣播執行速度 | 伺服器將資料發布至用戶端所需的時間,用戶端會監聽指定路徑,以便即時更新。 廣播速度報表中的「Count」屬性會匯總廣播次數,而非接收資訊的用戶端數量。舉例來說,如果有 10 個用戶端在特定路徑上監聽,而伺服器向所有 10 個用戶端廣播更新,則廣播計數只會反映 1 次廣播,即使 10 個用戶端都收到資料。 「Permission Denied」屬性不會包含在廣播速度報表中。 |
頻寬
頻寬報表可讓您瞭解資料庫在傳入和傳出作業中消耗的資料量。不過,頻寬報表不含用於其他作業 (例如剖析資料庫) 的頻寬,因此不應用於預估帳單費用。頻寬報表會大致估算資料庫讀取、寫入和廣播作業所耗用的資料酬載大小。這項工具是用來評估成效,而非預測帳單費用。
頻寬報表包含下列屬性:
路徑:作業發生的資料庫路徑。如果子節點超過 25 個,分析器工具會將這些節點收合至父項路徑。
總計:指定路徑上所有作業使用的傳出或傳入位元組總數。
Count:在指定路徑發生的作業數量。
平均:指定路徑上各項作業下載或上傳的平均位元組數 (位元組/寫入或位元組/讀取)。
| 頻寬報表 | |
|---|---|
| 下載的位元組數 | 透過用戶端 SDK 和 REST API 傳送的讀取和廣播作業所耗用的資料。 |
| 上傳的位元組 | 寫入要求傳入資料庫伺服器時,所耗用的資料量。刪除作業會顯示為寫入作業,且傳入資料為 0 位元組。 |
未建立索引的查詢
未建立索引的查詢可能會耗費大量資源,因為用戶端會下載某個位置的所有資料,然後對這些資料執行查詢。這會耗用不必要的頻寬。盡可能解決未建立索引的查詢,讓資料庫發揮最佳效能。
「未建立索引的查詢」報表會顯示下列屬性:
- 路徑:資料庫中發生未建立索引查詢的路徑。
- 索引:應新增的規則,用於解決未建立索引的查詢。如要進一步瞭解索引,請參閱「為資料建立索引」。
- 計數:指定路徑中未建立索引的查詢數量。
進階剖析
如要查看資料庫處理的所有作業,請在剖析資料庫時使用 --raw 旗標,如下所示:
firebase database:profile --raw
原始輸出內容也包含每項作業的用戶端資訊,例如 userAgent 字串和 IP 位址。如要進一步瞭解 Firebase Realtime Database 中剖析的不同作業,請參閱「Firebase Realtime Database 作業類型」。
分析器工具:非帳單工具
請勿使用分析器工具估算頻寬費用。分析器工具旨在提供資料庫效能的整體概況,協助您監控作業及排解問題,而非預估帳單費用。這項指標不會計入網路流量,只會記錄回應中傳送的應用程式資料預估值。
以下列舉一些 Firebase 計費的常見網路流量,這些流量不會顯示在資料庫設定檔中:
- 通訊協定負擔:伺服器和用戶端之間需要一些額外流量,才能建立及維護工作階段。視基礎通訊協定而定,這類流量可能包括:Firebase 即時資料庫的即時通訊協定負擔、WebSocket 負擔和 HTTP 標頭負擔。每次建立連線時,這項負擔加上任何 SSL 加密負擔,都會增加連線成本。雖然這通常不是大量的頻寬,但如果酬載很小,或頻繁進行短暫連線,則可能相當可觀。
- SSL 加密負擔:安全連線所需的 SSL 加密負擔會產生費用。平均而言,初始交握的費用約為 3.5 KB,每封送出的訊息的 TLS 記錄標頭費用約為 40 B。對大多數應用程式來說,這筆費用只占帳單金額的一小部分。不過,如果您的特定案例需要大量 SSL 握手,這個比例可能會很高。舉例來說,不支援 TLS 工作階段票證的裝置可能需要大量 SSL 連線交握。
進一步瞭解如何解讀及預估帳單費用。