从 Firebird 中的 SQL 语句中提取每个 table 的详细统计信息

Extract detailed statistics per table from an SQL statement in Firebird

我希望能够从系统执行的 SQL 语句中提取 read-by-table 统计信息,以生成“可疑”语句的日志。 在 IBExpert 中,有一个功能可以让您在执行 SQL 语句时查看每个 table 读取的记录量,以索引和非索引读数分隔,以及总数table 中与该语句相关的记录数。

这使我们能够识别仅执行计划无法证明的问题,因为我们已经遇到过这样的情况,其中一条为我们带来 100 条记录的指令在其中一个 table 中被读取,超过 100000 条记录,因为它过滤错误 table。在这种情况下,该计划对我们没有帮助,因为所有读数都已编入索引,我们只是在 IBexpert 中的 运行 这个命令显示了过多的读数时才发现问题。

我从各种渠道研究过如何做到这一点,但没有成功。

我已经尝试过使用 firebird 监控 tables,但它只提供了一个“一般”统计数据,没有这种分离。

我已经尝试过使用 fbtracemgr 应用程序,但没有这种可能性。

有人知道这是怎么做到的吗?

我相信您正在寻找的是 Firebird 跟踪和审计配置中的“print_perf”参数。它显示每个 table.

的性能计数器(包括 indexed/unindexed 读取次数)