このトピックでは、PolarDB-X の長時間トランザクションログ監視機能について説明します。
PolarDB-X では、スロークエリログは実行時間が指定されたしきい値を超えた SQL 文を記録します。長時間トランザクションログは、実行時間が指定されたしきい値を超えたトランザクションを記録します。デフォルトのしきい値は 3 秒です。長時間トランザクションは接続リソースとロックリソースを長時間占有する可能性があり、データベースの同時処理能力に悪影響を及ぼします。この問題に対処するため、PolarDB-X は長時間トランザクションログ監視機能を提供します。
前提条件
計算ノードのバージョンは 5.4.17-16859297 以降である必要があります。インスタンスのバージョンを表示およびスペックアップする方法の詳細については、「インスタンスのバージョンを表示および更新する」をご参照ください。
この機能は Enterprise Edition インスタンスでのみ利用可能です。
長時間トランザクションログの表示
PolarDB for Xscaleコンソールにログインします。
ページの左上隅で、ターゲットインスタンスが配置されているリージョンを選択します。
[インスタンスリスト] ページで、[PolarDB-X 2.0] タブをクリックします。
ターゲットインスタンスを見つけて、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、[診断と最適化 > 長時間トランザクションログ] をクリックします。
項目
説明
長時間トランザクションログの傾向
長時間トランザクションログの数と CPU 使用率の経時的な傾向を表示し、それらの相関関係を特定します。
ノードリスト
指定された時間範囲内に各計算ノードで生成された長時間トランザクションログの数を表示します。ノードをクリックすると、そのノードの長時間トランザクションログページに移動します。
長時間トランザクションログの詳細
各長時間トランザクションログの詳細。
長時間トランザクションログの統計
長時間トランザクションログに関する統計。
長時間トランザクションログの統計
指定された時間範囲内の長時間トランザクションログの統計は、トランザクションテンプレートに基づいて収集されます。
トランザクションテンプレート
各トランザクションは一連の SQL 文で構成され、各 SQL 文には対応する SQL テンプレートがあります。トランザクションテンプレートは、これらの SQL テンプレートのシーケンスであり、特定の種類のビジネス操作を表します。クエリパラメーターなどの変数はパラメーター化されているため、同じ操作を実行する異なるトランザクションは、単一のトランザクションテンプレートの下にグループ化されます。
例
次の例は、送金トランザクションを示しています。
トランザクション 1: Mike が John に 1 CNY を送金します。
begin;
update account set balance = balance + 1 where name = 'Mike';
update account set balance = balance - 1 where name = 'John';
commit;トランザクション 2: Mike が John に 10 CNY を送金します。
begin;
update account set balance = balance + 10 where name = 'Mike';
update account set balance = balance - 10 where name = 'John';
commit;トランザクション 1 とトランザクション 2 は、あるアカウントから別のアカウントに金額を送金するビジネスロジックを表す、次のトランザクションテンプレートを共有します。
update account set balance = balance + ? where name = ?;
update account set balance = balance - ? where name = ?;指定された時間範囲内にこのタイプの転送が N 回発生した場合、この長時間トランザクションテンプレートの実行回数は N になります。
フィールド
名前 | 説明 |
トランザクションテンプレート ID | トランザクションテンプレートのハッシュ値。 |
データベース名 | データベースの名前。 |
実行回数 | 総実行回数。 |
平均実行時間 (秒) | 平均実行時間 (秒)。総実行時間を実行回数で割って計算されます。 |
最大実行時間 (秒) | 単一トランザクションの最大実行時間 (秒)。 |
平均アイドル時間 (秒) | 平均アイドル時間 (秒)。総アイドル時間を実行回数で割って計算されます。 |
平均書き込み行数 | トランザクションあたりの平均書き込み行数。書き込まれた総行数を実行回数で割って計算されます。 |
最大書き込み行数 | 単一のトランザクションによって書き込まれた最大行数。 |
平均読み取り行数 | トランザクションごとに計算ノード (CN) から読み取られた平均行数。CN から読み取られた総行数を実行回数で割って計算されます。 |
最大返却行数 | 単一のトランザクションによって返された最大行数。 |
SQL 数 | トランザクション内の SQL 文の数。これには BEGIN、COMMIT、ROLLBACK 文は含まれません。 |
操作 | 長時間トランザクションログのサンプルを表示します。 |
長時間トランザクションログの詳細
特定のノードの長時間トランザクションログの詳細を表示するには、ドロップダウンリストからノードを選択します。
フィールド
名前 | 説明 |
実行完了時間 | トランザクションが終了した時間。 |
トランザクション ID | トランザクションの ID。 |
ステータス | 終了時のトランザクションのステータス。 |
クライアント | クライアントのアドレス ({ip}:{port} フォーマット)。 |
データベース名 | データベースの名前。 |
ユーザー | データベースのユーザー名。 |
実行時間 (秒) | 実行にかかった時間。単位: 秒。 |
アイドル時間 (秒) | トランザクションのアイドル時間。単位: 秒。 |
書き込み行数 | 書き込まれた行数。 |
読み取り行数 | データノード (DN) から読み取られた行数。 |
SQL 数 | DN に送信された SQL 文の数。 |
操作 | [SQL の表示] をクリックして SQL Explorer ページに移動し、トランザクション内の SQL 文のリストを表示します。 説明 インスタンスに対して SQL Explorer を有効にする必要があります。 |