本記事では、sql_diagnoserの使用方法について説明します。テナントSQL診断、SQLレビュー、sql_diagnoserの停止などの操作が含まれます。
テナントSQL診断
sql_diagnoserのホームページで、テナントSQL診断機能を使用して、業務クラスタで実行されたSQLを直接分析し、一般的な疑わしいSQLを特定することができます。これにより、ユーザーは隠れたパフォーマンス問題を特定し、最適化の提案を受けることができます。この機能の具体的な入力フィールドの説明は以下の通りです。
入力ボックス |
説明 |
必須 |
|---|---|---|
| Ip Address | IPアドレス。 | はい |
| Port | ポート番号。 | はい |
| ユーザー名 | テナントのユーザー名 | はい |
| テナントパスワード | テナントのログインパスワード。 | はい |
| クラスタ名 | OBProxy経由で接続するクラスタの場合は必須です。そうでない場合は、クラスタに接続できません。 | いいえ |
| 開始時間 | この時点以降のSQL実行レコードの診断を取得することを表します。 | はい |
| サンプリング数 | sql_auditビューからクエリするレコード数です。デフォルト値は10000 | いいえ |
| 終了時間 | この時点までのSQL実行レコードの診断を取得することを表します。診断速度が遅い場合は、クエリ範囲を狭めて再試行することをお勧めします。 | はい |
| 応答時間 | 応答時間のしきい値で、この値を超える応答時間のSQL実行レコードのみが診断されます。単位はusです。デフォルト値は20000 usです。診断インターフェースが遅すぎる場合は、このしきい値を引き上げることができます。 | いいえ |
注意
- 診断ルールと診断結果に含まれる時間属性には単位処理がされておらず、実際は
gv$ob_sql_audit(OceanBaseデータベースV4.0及び以前のバージョンではgv$sql_audit) の元の単位と一致します。例えば、elapsed_timeの単位はusであり、CPU時間はexecution_time + get_plan_time - total_wait_time_microで計算され、単位も同様にusです。 - sql_diagnoserが初めて起動する際、現在のユーザーのホームディレクトリに
h2フォルダと関連するデータファイルが作成されます。これらのファイルを削除すると、診断ルールがリセットされます。診断ルールの変更を永続化したい場合は、これらのファイルを移動、変更、または削除しないでください。 - 診断はデフォルトでOceanBaseデータベース(OceanBaseデータベースがデプロイされた後、デフォルトでoceanbaseという名前のデータベースが作成されます)を除外します。このデータベースで本ツールの機能をテストしないでください。
- 診断によるシステムテナントへの負荷とツール自体の負荷を軽減するため、各診断では最大で
gv$ob_sql_audit(OceanBaseデータベースV4.0及び以前のバージョンではgv$sql_audit) から10000件のデータ(応答時間の降順)を抽出するため、全量診断はできません。診断データ量を調整したい場合は、インターフェース呼び出しで最大戻り行数queryLimitを指定するか、本ツール起動時に環境変数sql.diagnose.sql.query-sql-audit-limitを設定することをお勧めします。例:nohup java -Dsql.diagnose.sql.query-sql-audit-limit=12345 -Dserver.port=9090 -jar sql-diagnoser-4.2.0.0.jar &。
SQLレビュー
SQLレビュー機能は、シンプルな画面操作で、ユーザーが画面上にレビューしたいSQLテキストを入力すると、ツールが一般的なルール項目に基づいてSQL文が妥当かどうかを分析し、改善策を提案します。入力フィールドの説明は以下の通りです:
入力ボックス |
説明 |
必須 |
|---|---|---|
| 接続アドレス | IPアドレス。 | はい |
| Port | ポート番号。 | はい |
| ユーザー名 | テナントのユーザー名 | はい |
| テナントパスワード | テナントのログインパスワード。 | はい |
| SQLテキストボックス | チェックしたいSQLを入力してください | はい |
SQLテキストボックスに入力されたSQLの検出は、静的ルールとOceanBaseデータベースへの接続を介して内部ビューをクエリすることで完了します。そのため、OceanBaseデータベースの接続情報(実際に検出するデータベースを含む)を入力する必要があります。チェックプロセスでは、このテキストボックス内のSQLを実際に実行することはないため、SQLレビュー機能を安心してご利用いただけます。
sql_diagnoserの停止
sql_diagnoserのプロセスを終了することで、sql_diagnoserの実行を停止できます。
ps -ef | grep sql-diagnoserを実行して、sql_diagnoserのプロセス番号を確認します。kill -9 プロセス番号を実行してプロセスを終了します。