本頁面由 Cloud Translation API 翻譯而成。
Switch to English

分析您的數據庫

使用Firebase CLI中內置的數據庫探查器工具來衡量Firebase Realtime Database的性能。探查器工具記錄給定時間段內數據庫中的所有活動,然後生成詳細的報告。使用詳細的報告可以解決數據庫性能問題,發現問題區域並減少未索引的查詢。

建立個人資料

  1. 在開始對Firebase實時數據庫進行性能分析之前,請確保使用的是最新版本的Firebase CLI ,並且已針對要分析的數據庫和項目對其進行了初始化。請注意,您必須是該項目的編輯者或所有者才能進行概要分析。

  2. 使用以下命令開始分析數據庫:

    firebase database:profile
    探查器在記錄來自數據庫的操作並構建配置文件時會顯示狀態消息。

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

解釋結果

探查器工具將收集有關數據庫操作的數據進行匯總,並將結果顯示在三個主要類別中: 速度帶寬未索引的查詢

速度

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

速度報告包含以下屬性:

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

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

廣播速度報告中的“ 計數”屬性匯總發生的廣播數量,而不是接收信息的客戶端數量。例如,如果10個客戶端正在給定路徑上偵聽,並且服務器向所有10個客戶端廣播更新,則即使10個客戶端接收到數據,廣播計數也僅反映1個廣播。

“廣播速度”報告中不包括“ 權限被拒絕”屬性。

帶寬

帶寬報告提供有關數據庫在傳入和傳出操作中消耗多少數據的見解。但是,您不應使用“帶寬報告”來估算帳單,因為它不包括用於其他操作(如分析數據庫)的帶寬。帶寬報告粗略估計了與數據庫之間的讀,寫和廣播操作所消耗的數據的有效負載大小。這是一種衡量效果的工具,而不是預測帳單的工具。

帶寬報告包含以下屬性:

  • 路徑:數據庫中發生操作的路徑。如果子節點超過25個,則探查器工具會將這些子節點折疊到父路徑中。

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

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

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

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

未索引查詢

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

“未編制索引的查詢”報告顯示以下屬性:

  • 路徑:數據庫中發生未索引查詢的路徑。
  • 索引:您應添加的規則來解決未索引的查詢。在索引數據中了解有關索引的更多信息
  • 計數:在給定路徑上發生的未編制索引的查詢數。

高級分析

要查看數據庫正在處理的所有操作,請在配置數據庫時使用--raw標誌,如下所示:

firebase database:profile --raw

原始輸出還包括每個操作的客戶端信息,例如userAgent字符串和IP地址。在Firebase實時數據庫操作類型中了解有關Firebase實時數據庫中配置的不同操作的更多信息。

探查器工具:不是計費工具

不要使用探查器工具來估算帶寬成本。探查器工具旨在為您提供數據庫性能的總體情況,以幫助您監視操作並解決問題,而不用估計賬單。它不考慮網絡流量,僅記錄對響應中發送的應用程序數據的估計。

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

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

閱讀有關了解和估算賬單的更多信息。