SQL Serverのトランザクションレプリケーションに関連した情報の収集方法をまとめてみました。
1. perfmonのメトリクス
ログリーダーエージェントとディストリビューションエージェントに関して、遅延や配信コマンド数を確認できます。
また、「SQL Server:Databases\Repl. Pending Xacts」を確認することで、保留中のレプリケーショントランザクション数を確認できます。
これらの値をダッシュボード化しておけると、遅延の際にログリーダーエージェント起因なのか、ディストリビューションエージェント起因なのかの切り分けを行いやすいかと思います。
2. レプリ関連のシステムテーブル
ドキュメントにあるように、様々なレプリケーション関連のシステムテーブルが提供されています。
これらを組み合わせて、様々な情報を取得できます。
専用のテーブルを作成して定期的に情報をダンプしておくことで、例えば「〇月〇日〇時~〇時の間に、更新数が多かったレプリ対象テーブルは何か」といったことを後追いできるようになります。
githubでクエリを公開しています。
特に、「アーティクルごとのレプリ対象コマンド数」は後追いにとても便利です。
perfmonのメトリクスで遅延に気づき、遅延の原因として「アーティクルごとのレプリ対象コマンド数」をみることで、例えば特定のテーブルのレコード更新が大量に実施されたことで遅延時間が伸びた、といった後追いが可能になります。
トランザクションレプリケーションをお使いの環境は現在ではあまり存在していないかもしれませんが、お使いの方がいればぜひ活用してみてください。