火鸟监控台

Val*_*spa 8 firebird

我正在使用 Firebird 2.1.1 数据库,并开始阅读有关监控表的信息。

我试图以某种方式实时查看每个客户端在数据库中执行的查询。

我看了看MON$STATEMENTS表格,但没有提供太多信息。我本来希望表格中有更多内容。

显示表格时 Flamerobin 的屏幕截图

我是不是找错地方了,还是我不明白 Firebird 监控表的目的/用途?

Mar*_*eel 8

在使用监控表时,您需要了解许多事项:

  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-06 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 中审计和跟踪服务提供了很好的介绍。

在您的问题中,您说您期望“更多内容”,但实际上并未具体说明您需要或期望的内容;我希望这提供了足够的信息。