Firebird

火鳥監控表

  • January 31, 2016

我正在使用 Firebird 2.1.1 數據庫,並開始閱讀有關監控表的資訊。

我試圖以某種方式實時查看每個客戶端在數據庫中執行的查詢。

我看了一下MON$STATEMENTS表格,但它沒有提供太多資訊。我本來希望表格中有更多內容。

顯示表格時 Flamerobin 的螢幕截圖

我是在找錯地方還是我不了解 Firebird 監控表的用途/用途?

使用監控表時,您需要了解許多事項:

  1. 監控表(如MON$STATEMENTS)為您提供執行查詢時活動或準備好的語句的列表。
  2. 查詢結果保持穩定,直到事務送出!這意味著重複執行查詢而不送出不會產生新資訊。
  3. 只有SYSDBA,數據庫所有者或具有角色的使用者RDB$ADMIN可以看到所有資訊,其他使用者只能看到有關自己連接的資訊。
  4. 您的 Firebird 安裝包含有關表格的基本文件 doc/README.monitoring_tables.txt

現在至於您的螢幕截圖:所有語句都來自同一個連接(您自己的)MON$ATTACHMENT_ID = 1521:。目前只有一條語句處於活動狀態(MON$STATE = 1)並參與事務MON$TRANSACTION_ID = 90964,並於 2012 年 12 月 6 日 10:08 開始(MON$TIMESTAMP),其餘的處於非活動狀態(MON$STATE = 0),因此沒有事務 ID 和時間戳。第一條語句也是目前唯一具有實際查詢 ( MON$SQL_TEXT) 的語句,即在螢幕截圖中實際產生結果的查詢。在 Firebird 中,語句與使用該語句執行的實際查詢分開分配。

這並不多,但是如果您加入了MON$RECORD_STATSMON$IO_STATS或者MON$MEMORY_USAGE基於MON$STAT_ID您將收到有關查詢的統計資訊(即讀取次數、記錄更新、讀取或寫入的頁面數、記憶體使用)。監控表顯示特定時間的資訊,如果查詢在您執行時已經完成,您將不會獲得任何資訊(我不是 100% 確定,但它可能會一直可用,直到下一次執行聲明,或直到聲明未準備好或關閉)。

相反,如果您需要資訊和統計資訊流,那麼您可能會從 Firebird Trace API 中獲得更多資訊。我自己還沒有大量使用它,但是 Thomas Steinmauer 的文章Firebird 2.5 中的 Audit and Trace Services提供了很好的介紹。

在您的問題中,您說您期望“更多內容”,但實際上並未指定您需要或期望的內容;我希望這能提供足夠的資訊。

引用自:https://dba.stackexchange.com/questions/29919