获取特定 table 的已发布 SQL 语句数
Getting the number of the issued SQL statements for a specific table
我正在使用 firebird DB,出于测试原因,我想知道特定 table 被访问了多少次,而不是使用代码中的某些计数器手动执行。
Firebird 不保留 table 访问的历史记录。您或许可以使用 Firebird 跟踪工具自行跟踪,但这需要跟踪始终处于活动状态(这可能会影响性能),或者您可以使用 FBScanner 等第三方(付费)工具。
您也可以尝试使用监控 tables,特别是 MON$RECORD_STATS
,但这些统计信息仅在数据库打开(即具有活动连接)时保留,一旦最后一个连接已关闭(假设数据库逗留已关闭)数据库将关闭,这些统计信息将被删除。
MON$RECORD_STATS
不包含 table 访问本身,但包含读取、插入、删除的记录数等内容。关联的 table 可以通过 [=13= 找到]:
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
有关详细信息,请参阅您的 Firebird 安装中的 doc/README.monitoring_tables.txt
,或 README.monitoring_tables.txt (Firebird 3)。
我正在使用 firebird DB,出于测试原因,我想知道特定 table 被访问了多少次,而不是使用代码中的某些计数器手动执行。
Firebird 不保留 table 访问的历史记录。您或许可以使用 Firebird 跟踪工具自行跟踪,但这需要跟踪始终处于活动状态(这可能会影响性能),或者您可以使用 FBScanner 等第三方(付费)工具。
您也可以尝试使用监控 tables,特别是 MON$RECORD_STATS
,但这些统计信息仅在数据库打开(即具有活动连接)时保留,一旦最后一个连接已关闭(假设数据库逗留已关闭)数据库将关闭,这些统计信息将被删除。
MON$RECORD_STATS
不包含 table 访问本身,但包含读取、插入、删除的记录数等内容。关联的 table 可以通过 [=13= 找到]:
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
有关详细信息,请参阅您的 Firebird 安装中的 doc/README.monitoring_tables.txt
,或 README.monitoring_tables.txt (Firebird 3)。