【问题标题】:Firebird DB - monitoring tableFirebird DB - 监控表
【发布时间】:2014-07-26 19:00:46
【问题描述】:

我最近刚刚开始在 Linux Redhawk 5.4.11 系统上使用 firebird DB v2.1。我正在尝试创建一个通过 cron 作业启动的监控脚本。但是我遇到了一些问题,我希望得到一些建议......

首先,我已经阅读了 firebird DB 附带的大部分文档以及他们网站上提供的大量文档。我曾尝试使用提供的 gstat 工具,但这似乎并没有给我我正在寻找的那种信息。我遇到了 README.monitoring_tables 文件,这似乎正是我想要监控的。然而,这是我开始遇到进步的地方....

从通过 isql 登录数据库运行后,我运行 SELECT MON$PAGE_READS, MON$PAGE_WRITES FROM MON$IO_STATS; 我能够得到一些看起来不错的数字。然而,再次运行该命令时,数据似乎已过时,因为数字没有更新。我等了 1 分钟、5 分钟、15 分钟,每次的所有数据都是一样的。一旦我注销并重新运行以再次运行命令,数据就会改变。似乎只有在重新登录时才会刷新数据,但我不确定即使这样数据是否正确。

我现在的问题是我这样做是否正确?这些命令是真正监控我的数据库还是只是监控命令本身?另外为什么需要重新登录才能刷新统计信息?我担心的一件事是我的数据不一致。换句话说,当我每次登录时,我的系统正在运行,读/写不是线性增加。它们从 10k 到 500 到 2k 不等。任何建议或帮助将不胜感激!

【问题讨论】:

  • 我已重新标记到 Firebird,因为您的问题也与 Firebird 2.1 相比的新版本相关。我已经删除了 isql 标记,因为它指的是 Sybase 产品(并且您使用 Firebird isql 工具的事实与问题并不真正相关)。

标签: linux database monitoring firebird


【解决方案1】:

当您查询监控表时,会创建监控信息的快照,以便监控表的内容在事务的其余部分保持稳定。如果您想要新的信息,您需要提交并开始一个新的事务。 Firebird 总是使用事务(如果没有显式启动,isql 会隐式启动事务)。

这也记录在doc/README.monitoring_tables 中(至少在 Firebird 2.5 版本中):

第一次从给定事务中选择任何监控表时创建快照,并保留到事务结束,因此多个查询(例如主从查询)将始终返回一致的数据视图.换句话说,监控表总是表现得像一个快照(又名一致性)事务,即使主机事务已经以另一个隔离级别启动。 要刷新快照,应完成当前事务并在新事务上下文中查询监控表。

(强调我的)

请注意,根据您的监控需求,您还应该查看 Firebird 2.5 中引入的 trace functionality

【讨论】:

  • 哇,我完全错过了文档中的内容。因此,由于我是数据库的新手,我将假设获得一个新事务,您需要退出并重新启动 isql 工具?换句话说。假设我通过 cron 作业启动了我的监控脚本来监控统计信息,我必须继续重新登录到数据库,而不是仅仅唤醒我的会话以再次收集统计信息,对吗?
  • 在 isql 中你可以输入“commit;” ,然后再次尝试查询。
  • 您只需拨打COMMIT;
猜你喜欢
  • 1970-01-01
  • 2014-10-03
  • 2016-03-25
  • 2017-03-08
  • 2016-04-15
  • 1970-01-01
  • 2014-12-21
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多