代码之家  ›  专栏  ›  技术社区  ›  muaz

获取特定表的已发布SQL语句数

  •  1
  • muaz  · 技术社区  · 7 年前

    我正在使用firebird DB,出于测试原因,我想知道特定表被访问了多少次,而不需要在代码中使用一些计数器手动执行。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mark Rotteveel    7 年前

    Firebird不保留表访问的历史记录。您可能可以使用Firebird跟踪工具自己跟踪,但这需要跟踪始终处于活动状态(这可能会影响性能),或者您可以使用第三方(付费)工具,如FBScanner。

    您也可以尝试使用监视表,具体来说 MON$RECORD_STATS ,但这些统计信息只会在数据库打开时(即有活动连接)保持,一旦最后一个连接关闭(假设数据库延迟器关闭),数据库就会关闭,这些统计信息就会被删除。

    MON$RECORD\u统计 RDB$TABLE_STATS :

    select t.MON$TABLE_NAME, r.MON$STAT_ID, r.MON$STAT_GROUP, r.MON$RECORD_SEQ_READS,
        r.MON$RECORD_IDX_READS, r.MON$RECORD_INSERTS, r.MON$RECORD_UPDATES,
        r.MON$RECORD_DELETES, r.MON$RECORD_BACKOUTS, r.MON$RECORD_PURGES,
        r.MON$RECORD_EXPUNGES, r.MON$RECORD_LOCKS, r.MON$RECORD_WAITS,
        r.MON$RECORD_CONFLICTS, r.MON$BACKVERSION_READS, r.MON$FRAGMENT_READS,
        r.MON$RECORD_RPT_READS
    from MON$TABLE_STATS t
    inner join MON$RECORD_STATS r
        on t.MON$STAT_GROUP = r.MON$STAT_GROUP and t.MON$RECORD_STAT_ID = r.MON$STAT_ID
    

    有关详细信息,请参阅 doc/README.monitoring_tables.txt 在Firebird安装中,或 README.monitoring_tables.txt (Firebird 3)