IBTransaction Monitor ユーザーズガイド
Dmitry Kuzmenko、2008年6月8日
IBSurgeon Transaction Monitor (IBTM) 是一个软件包,旨在监控、查看和分析 InterBase 和 Firebird 数据库中的动态事务。
目录
IBSurgeon Transaction Monitor 用户指南。 {C}{C}{C}{C}1{C}{C}{C}{C}{C}{C}{C}{C}{C}
包含内容? {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
Monitor{C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
记录哪些内容? {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
Configuration Assistant{C}{C}{C}{C}3{C}{C}{C}{C}{C}{C}{C}{C}{C}
使用 Configuration Assistant{C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
管理 Monitor 服务。 {C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
配置服务器。 {C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
配置数据库。 {C}{C}{C}{C}5{C}{C}{C}{C}{C}{C}{C}{C}{C}
Visualizer{C}{C}{C}{C}8{C}{C}{C}{C}{C}{C}{C}{C}{C}
图形视图类型。 {C}{C}{C}{C}13{C}{C}{C}{C}{C}{C}{C}{C}{C}
技术支持{C}{C}{C}{C}16{C}{C}{C}{C}{C}{C}{C}{C}{C}
IBTM 包包含三个主要模块:
- Monitor - 一个基于 Win32 服务的小型程序,用于监控和记录一个或多个数据库中的事务状态。
- Configuration Assistant 用于配置 Monitor 和 Viewer 的设置。
- Visualizer 设计用于查看和分析 Monitor 记录的信息。
Monitor 是一个基于 Win32 服务的小型程序(ibtm.exe),可在 Windows NT、2000、XP 以及 Windows Server 2003 和 2008(32 位和 64 位)上运行。启动时,Monitor 读取设置(由 Configuration Assistant 设置)并监控指定的数据库。在监控过程中,它每分钟(推荐的默认间隔)连接到数据库并读取事务状态。
如果 InterBase 或 Firebird 在 Windows 上运行,则可以将 Monitor 安装在数据库所在的服务器上。对于基于 Linux 的服务器,可以将其安装在能够通过网络访问 InterBase 或 Firebird 服务器的任何 Windows 计算机上。您可以使用以下方法安装 Monitor:
- 使用 Configuration Assistant
- 从命令行窗口
重要! 在开始安装 Monitor 之前,您需要确保以管理员权限和特权登录 Windows。Monitor 将以“自动”启动类型在 Localsystem 用户帐户下安装为服务。
由于 Monitor 仅定期连接到数据库并将收集到的信息写入纯文本日志文件,因此无需应用任何其他规则。但是,如果您想保护 Monitor 配置和数据库登录信息,则必须通过 Windows 服务控制面板根据需要更改 Monitor 的服务设置及其目录(和日志)访问权限。
Monitor 配置参数将在 Configuration Assistant 中讨论。
Monitor 定期检查数据库头页,然后将数据库事务信息存储到日志中,如下所示:
- 日志时间
- 最旧事务编号
- 最旧快照事务编号
- 最旧活动事务编号
- 下一个事务编号
- 活动事务数(取决于服务器版本)
此信息存储在日志文件中,然后可以使用 Visualizer 查看和分析。利用可视化的事务状态信息,您可以了解应用程序保持事务打开的时间有多长、同时运行的事务数量、快照事务运行的时间、应用程序启动事务最密集的时间等。
注意: Monitor 将事务状态信息记录到本地日志文件中。它不会通过网络发送此信息或任何其他信息。
Configuration Assistant(ibtmconfig.exe)用于设置 Monitor 和 Viewer 的配置参数。它将配置参数保存在 ibtm.ini 文件中。
!在 Windows Vista 或 Windows 7 上,您需要以管理员权限(右键单击)运行 Configuration Assistant,否则它将无法管理 IBTM 服务(错误 5,访问被拒绝)。
提示! IBTM 不使用注册表来存储配置参数,因此您可以在一台计算机上准备配置,然后将 ibtm.ini 移动到另一台安装了 Monitor 的计算机上(需要重新启动 Monitor 服务才能读取新配置)。
Monitor 和 Configuration Assistant 由 IBTM 安装程序放置在同一个目录中,以便 Monitor 和 Configuration Assistant 共享同一个配置文件(ibtm.ini)。

Configuration Assistant 帮助您:
- 管理 Monitor 服务 - 安装、卸载、启动、停止、暂停和重新启动。
- 指定需要监控的具有数据库的 InterBase 或 Firebird 服务器
- 为特定数据库指定数据库和监控/调度选项

当 Configuration Assistant 启动时,它会确定系统上的 Monitor 服务状态。
安装 Monitor - 如果 Monitor 服务未安装,您将在左上角的 IBTM 状态标签中看到“未安装”消息。要安装 Monitor,请按窗口右侧的“安装”按钮。请注意,Monitor 服务将使用“启动类型”(自动或手动)复选框的值。如果 Monitor 服务安装成功,您将看到 IBTM 状态变为“已停止”,并且“运行服务”按钮将被启用。
每当您更改任何数据库配置参数时,都需要重新启动 Monitor 服务。
IBTM 使用 TCP/IP 连接协议来访问要监控的数据库。因此,如果您将 Monitor 安装在服务器所在的同一台计算机上,则需要将服务器添加为 localhost 或服务器的主机名。完成后,您将能够添加将在该服务器上监控的数据库。
使用此版本的 IBTM,您一次只能监控一个数据库。同时监控一个或多个数据库需要额外的许可证。请联系我们了解详情( www.ibphoenix.com)。
但是,您可以设置多个服务器和数据库,并在它们之间切换以选择要监控的数据库(活动数据库将以粗体突出显示)。使用额外的许可证,您将能够同时监控多个数据库。
使用“数据库”列表左侧的“添加服务器”和“添加数据库”按钮。
每个数据库记录都可以配置以下参数:
获取统计信息的方法。这取决于服务器版本,并支持不同的功能。每种方法都有其优缺点:
| Services API | Firebird API | TMP$ 表 | |
| InterBase 4.x/5.x | 否 | 否 | 否 |
| InterBase 6.0 Classic | 否 | 否 | 否 |
| Firebird Classic - 1.0, 1.5.0, 1.5.1, 1.5.2 |
否 | 是 | 否 |
| InterBase 6.x SuperServer | 是 | 否 | 否 |
| InterBase 7.x/2007 | 是 | 否 | 是 |
| Firebird Classic 和 SuperServer: 1.5.3, 1.5.4 /2.0 | 是 | 是 | 否 |
Services API、Firebird API 和 TMP$ 表之间的差异:
| 方法 | 优点 | 缺点 |
| Services API InterBase 6.0 SuperServer 中引入的公共 API |
- 通用方法,适用于所有版本的 InterBase 和 Firebird - 不影响下一个事务 |
- 无法找到活动事务的真实数量 - 如果服务器很少将数据库头页保存到磁盘,则可能显示过时的信息(InterBase V7.1/V7.5) |
| Firebird API
Firebird V1.0以降、isc\_database\_info呼び出しに拡張パラメータが追加され、トランザクション状態情報の返却が可能になりました。 | アクティブなトランザクション数(最大4676件)の情報を取得する機能を提供します。 | - どのInterBaseバージョンでもサポートされていません。
- 内部的にNextトランザクションをインクリメントします。Monitorはデータベースに接続するたびにNextトランザクションを+1ずつインクリメントします。この時点でデータベースにトランザクションアクティビティがない場合、Oldest Active、Oldest Snapshot、Oldestトランザクション番号は変更されません。
データベースにアクティビティがない場合、Monitorがデータベースを毎分チェックするように設定されていると、24時間でNextトランザクションを+1440インクリメントします。
(Firebird API自体にはこの影響はありません。説明されている動作はisc\_database\_infoメソッドに固有のものです) |
| TMP$テーブル
サーバー状態の監視を可能にするためにInterBase 7.0で導入されました。 | - InterBase V7.x/V2007から実際のトランザクション状態を取得でき、アクティブなトランザクション数も含まれます。
- トランザクション状態情報を取得するために、Monitorは_read_only read_committed rec_version_パラメータでトランザクションを開始します。このようなトランザクションはトランザクション会計の目的ではアクティブとは見なされず、サーバーやデータベースのパフォーマンスに影響を与えません。 | - InterBase V7.0/V7.1/V7.5/V2007でのみサポートされています。
- Firebird APIと同様に、TMP$テーブルからのデータ読み取りはトランザクション内で行う必要があるため、Nextトランザクション番号をインクリメントします。
- アクセス時間はServices APIを使用するよりも少し長くなります(< 0.5秒)。 |
サーバーと互換性のない統計方法を選択した場合、Monitorのトランザクションログには何も書き込まれません。Configuration AssistantのError logタブをチェックして、データベース監視中に発生する可能性のあるエラーを確認してください。
チェック間隔。これはMonitorがデータベースからトランザクション情報を取得する頻度を決定します。最小間隔は1分です。1、3、5、10、20、30分、または1時間の間隔を設定できますが、最も情報量が多いのは1分または3分の間隔です。
1分間隔を使用すると、Monitorは24時間で1440回データベースのトランザクション状態をチェックします。ログファイルのサイズは約150キロバイトになります。
開始時刻と終了時刻。これが設定されていない場合、Monitorは動作中ずっと指定されたデータベースから統計を取得します。時間制限が設定されている場合、Monitorは指定された期間のみ動作します。
ユーザー名とパスワード。データベースのトランザクション状態を監視するために使用されるアカウントのユーザー名とパスワードです。SYSDBAログインまたは任意のユーザーログインを使用できます。非SYSDBAログインを使用する場合、Services APIおよびFirebird APIメソッドでは、そのユーザーアカウントに追加の権限を付与する必要はありません。‘TM’のようなユーザーを作成でき、Monitorは正常に動作します。
一時システムテーブル(IB V7.1、V7.5、V2007)の場合、ユーザーログインはTMP$TRANSACTIONSおよびTMP$DATABASESテーブルに対する読み取りアクセス権を持っている必要があります。InterBase V7.5/V2007データベースで組み込みユーザー認証を使用する場合、そのデータベースに対してログインを作成し、明示的にアクセス権を付与する必要があります。
サーバー接続テストボタン。

指定されたサーバーに対して最適なトランザクション監視方法を確認できます。また、このボタンを使用して、選択した方法が指定されたサーバーで動作するかどうかを確認することもできます。
VisualizerはMonitorによって収集されたトランザクション情報を表示できます。.tmdファイルのベースディレクトリはConfiguration Assistantの設定から取得されます。

左側には統計ファイルのリストが表示されます。デフォルトでは、Viewerは基本インストールフォルダー内のLogフォルダーを参照します。このフォルダーはConfiguration Assistantを使用して変更するか、Viewerメニューオプションから必要なフォルダーを開くことができます。
統計ファイルをクリックすると、すぐにグラフに表示されます。CtrlまたはShiftボタンを押しながら統計ファイルをクリックすると、複数の統計を同時に確認できます:

左下隅では、さまざまなグラフ線(Next、Oldestなど)のオン/オフを切り替えることができます。たとえば、トランザクションの動態を表示したい場合は、Nextダイナミックをオンにします。これにより、IBTMがデータベースから読み取る間に開始された新しいトランザクションの数が表示されます:

グラフの右側、左側、上側、下側には、マウスでドラッグしてイベントが発生した時刻とその値を確認できる特別な線があります。グラフの中央にある垂直の青い線と、茶色の水平線を見てください。これらの線を移動すると、対応するラベルが変更されます - 垂直線は特定の時刻を指し示し、水平線は特定のトランザクション番号を指し示します:

また、間隔を水平方向、垂直方向、または両方向にズームインまたはズームアウトすることもできます。グラフを初期状態に戻すには、Reset Zoomボタンを押します(またはマウスで反対方向にズームします)。

重要! IBTM統計データがFirebirdまたはInterBase 7.xアクセスメソッドを使用して収集された場合、実際のアクティブなトランザクション数を表示できます。

このグラフは、2005年11月10日にアプリケーションによって開かれたアクティブなトランザクションが65から105件あったことを示しています。また、昼休みの時間帯(13:00から14:00)でも約80件のアクティブなトランザクションがあったことがわかります。これは次のことを意味します:
- ユーザーは昼食に行くときにアプリケーションを閉じない
- アプリケーションには開かれたアクティブなトランザクションがある
この情報を使用して、アプリケーションの動作に何が問題がある可能性があるかについて判断を下すことができます。これは、アプリケーションによって直接管理されるトランザクションの数によって異なります。
グラフの表示を変更する3つのボタンがあります:
相対(Oldest)。NextおよびOldest Activeトランザクション番号から、OldestトランザクションまたはOldest Snapshot(どちらか低い方)を差し引いて計算されます。グラフの左側の凡例を見ることで、半アクティブなトランザクションのギャップを確認できます。以下は、Relativeボタンをオンにした前のグラフの例です:

AutoMin。デフォルトでは、IBTM統計ファイルを開くと、最小のトランザクション番号が自動的に「0」として扱われます。通常、これはOldest(注目すべき)トランザクションまたはOldest Snapshotになります。

Abs。大きなトランザクション番号のトランザクション番号の流れと差を確認できます。前の画像では最小のトランザクション番号が約700万で、たとえばOldestとNextトランザクションの差を理解するのが困難でした。ここでは、これらの統計ではデータの差が18000トランザクション以下であったことがわかります。

データベースのトランザクション動作について専門的な説明が必要な場合は、テクニカルサポートを注文することをお勧めします。詳細についてはこちらでサービスをご覧ください。
また、ご質問がございましたら、お気軽にメールでお問い合わせください:[email protected]。