分析您的數據庫

測量與數據庫配置工具的火力地堡實時數據庫的性能,內置的火力地堡CLI 。探查器工具記錄給定時間段內數據庫中的所有活動,然後生成詳細報告。使用詳細報告來解決數據庫性能問題、發現問題區域並減少未索引的查詢。

建立個人資料

  1. 你開始你的剖析火力地堡實時數據庫之前,請確保您使用最新版本的的火力地堡CLI以及您的數據庫初始化它和項目要分析。請注意,您必須是該項目的編輯者或所有者才能進行概要分析。

  2. 開始用下面的命令剖析數據庫:

    firebase database:profile
    事件探查器顯示狀態消息,因為它從你的數據庫中記錄的操作和建立配置文件。

  3. Enter鍵完成配置文件並顯示結果。

解釋你的結果

探查工具聚合它收集有關數據庫的操作和顯示數據結果主要有三種類型:速度帶寬,並沒有索引的查詢

速度

速度報告測量服務器對每種操作類型的響應時間(以毫秒為單位)。但是,速度報告中測量的速度可能實際上並未反映最終用戶體驗的速度。包括網絡條件在內的不同因素可能會增加客戶端的延遲。

速度報告包括以下屬性:

  • 路徑:在你的數據庫操作發生的位置的路徑。如果有超過25個的子節點,探查工具崩潰到這些父路徑,並增加了$wildcard標記。您可能會看到在報告中,正斜杠代表您的數據庫的根目錄/
  • 統計:發生在給定的路徑操作的數量。
  • 平均執行速度:它需要在服務器上執行以處理該路徑的特定操作類型所需的業務邏輯的平均時間。此處測量的時間間隔在下面描述的“平均待處理時間”測量的時間間隔之後開始。
  • 平均等待時間:平均時間請求得到執行,然後再到排隊。這種延遲對於所有客戶端發起的請求都是常見的。總的服務器端請求延遲大約是該請求的掛起時間和執行速度的總和。
  • 被拒絕的權限:在給定的路徑被阻斷由操作數火力地堡的數據庫規則數據庫上。
按操作類型劃分的速度報告
讀取執行速度客戶端請求從數據庫讀取數據的服務器響應時間。讀取執行時間通常與讀取的數據量成比例,但即使是一些小的讀取也可能因緩存預取而延遲。
寫入執行速度客戶端請求將數據寫入數據庫的服務器響應時間。寫入執行時間與寫入的數據量成比例。
連接執行速度建立到數據庫客戶端的請求的服務器響應時間。連接請求的延遲主要由與連接管理相關的內存服務器端簿記決定。
廣播執行速度

服務器將數據分發給偵聽給定路徑以進行實時更新的客戶端所花費的時間。

在播放速度報告Count屬性聚合發生這種情況,所收到的信息的客戶端的不是數字廣播的數量。例如,如果 10 個客戶端在給定路徑上偵聽,並且服務器向所有 10 個客戶端廣播更新,則廣播計數僅反映 1 個廣播,即使 10 個客戶端接收到數據。

被拒絕的權限屬性是不包含在播放速度報告。

帶寬

帶寬報告提供有關您的數據庫在傳入和傳出操作中消耗的數據量的洞察力。但是,您不應使用帶寬報告來估算計費,因為它不包括用於其他操作(例如分析數據庫)的帶寬。帶寬報告粗略估計了數據庫的讀取、寫入和廣播操作所消耗的數據的有效負載大小。它是一種衡量績效的工具,而不是預測計費的工具。

帶寬報告包括以下屬性:

  • 路徑:在你的數據庫操作發生的位置的路徑。如果子節點超過 25 個,探查器工具會將它們折疊到父路徑中。

  • 總計:在給定的路徑在所有的操作中所使用的總呼出或呼入字節。

  • 統計:發生在給定的路徑操作的數量。

  • 平均:在給定的路徑(字節/寫入或字節/讀取)跨操作下載或上傳字節的平均數量。

帶寬報告
下載字節通過客戶端 SDK 和 REST API 發送的讀取和廣播操作消耗的數據。
上傳的字節通過進入數據庫服務器的寫入請求消耗的數據。刪除顯示為傳入下的 0 字節寫入。

未編入索引的查詢

未編入索引的查詢可能會很昂貴,因為客戶端會在某個位置下載所有數據,然後對其執行查詢。這會佔用比必要更多的帶寬。解決盡可能多的未索引查詢以優化數據庫的性能。

未索引查詢報告顯示以下屬性:

  • 路徑:在你的數據庫所在的未編入索引的查詢時的路徑。
  • 指數:規則,你應該加入到解決沒有索引的查詢。了解更多關於在索引指數數據
  • 統計:發生在給定的路徑沒有索引的查詢數。

高級分析

要查看所有數據庫的處理操作,請使用--raw標誌,當您分析您的數據庫,如下所示:

firebase database:profile --raw

原始輸出也包括用於每個操作,如客戶端信息userAgent串和IP地址。了解更多關於你的火力地堡實時數據庫異形不同的操作火力地堡實時數據庫操作類型

分析器工具:不是計費工具

不要使用分析器工具來估計帶寬成本。分析器工具旨在讓您全面了解數據庫的性能,幫助您監控操作和解決問題,而不是估算計費。它不考慮網絡流量,它只記錄響應中發送的應用程序數據的估計值。

以下是一些由 Firebase 計費但未包含在您的數據庫配置文件中的常見網絡流量示例:

  • 協議開銷:在服務器和客戶端之間的一些額外的流量是必須建立和維持一個會話。根據底層協議,此流量可能包括:Firebase 實時數據庫的實時協議開銷、WebSocket 開銷和 HTTP 標頭開銷。每次建立連接時,此開銷與任何 SSL 加密開銷相結合,都會產生連接成本。雖然這通常不是很大的帶寬,但如果您的有效負載很小或者您進行頻繁的短連接,它可能會很大。
  • SSL加密開銷:有是有必要的開銷用於安全連接的SSL加密相關的成本。平均而言,初始握手的成本約為 3.5KB,每條傳出消息的 TLS 記錄標頭的成本約為 40B。對於大多數應用程序,這只是您賬單的一小部分。但是,如果您的特定情況需要大量 SSL 握手,則這可能會佔很大比例。例如,不支持 TLS 會話票證的設備可能需要大量 SSL 連接握手。

了解更多關於理解和評估您的帳單