本記事ではsql_diagnoserの使用方法について説明します。テナントSQL診断、SQLレビュー、sql_diagnoserの無効化などの操作が含まれます。
テナントSQL診断
sql_diagnoserのホームページで テナントSQL診断 機能を使用すると、業務クラスタで実行されたSQLを直接分析し、一般的な疑わしいSQLを特定することができます。これにより、ユーザーは隠れたパフォーマンス問題を見つけ出し、最適化の提案を受けることができます。この機能の具体的なフィールド説明は以下の通りです。
入力ボックス |
説明 |
必須 |
|---|---|---|
| Ip Address | IPアドレス。 | はい |
| Port | ポート番号。 | はい |
| ユーザー名 | テナントのユーザー名 | はい |
| テナントパスワード | テナントのログインパスワード。 | はい |
| クラスタ名 | OBProxyを介して接続するクラスタの場合は入力が必要です。そうでない場合は、クラスタに接続できません。 | いいえ |
| 開始時間 | この時刻以降のSQL実行レコードの診断を取得します。 | はい |
| サンプリング数 | sql_auditビューからクエリされるレコード数。デフォルト値は10000 | いいえ |
| 終了時間 | この時刻までのSQL実行レコードの診断を取得します。診断速度が遅い場合は、クエリ範囲を狭めて再試行することを推奨します。 | はい |
| 応答時間 | 応答時間のしきい値。この値を超える応答時間のSQL実行レコードのみが診断されます。単位はus、デフォルト値は20000usです。診断インターフェースが遅すぎる場合は、このしきい値を引き上げることができます。 | いいえ |
注意
- 診断ルールおよび診断結果に含まれる時間関連の属性には単位が付いていません。実際の単位は
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 という名前のデータベースが作成されます)。このデータベースで本ツールの機能をテストしないでください。
- 診断によるシステムテナントへの負荷とツール自体の負荷を軽減するため、1回の診断では最大で
gv$ob_sql_audit(OceanBaseデータベースV4.0以前バージョンではgv$sql_audit) から10,000件のデータを抽出します(応答時間の降順)。そのため、全量診断は行えません。診断データ量を調整する場合は、API呼び出しで最大戻り行数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 Review
SQL Review機能は、シンプルな画面操作で利用できます。ユーザーは画面上にレビューしたいSQLテキストを入力すると、ツールが一般的なルール項目に基づいてSQLステートメントの妥当性を分析し、改善策を提案します。フィールドの入力方法は以下のとおりです:
入力ボックス |
説明 |
必須 |
|---|---|---|
| 接続アドレス | IPアドレス。 | はい |
| Port | ポート番号。 | はい |
| ユーザー名 | テナントのユーザー名 | はい |
| テナントパスワード | テナントログインパスワード。 | はい |
| SQLテキストボックス | 検査したいSQLを入力してください | はい |
SQLテキストボックスに入力されたSQLの検出は、静的ルールとOceanBaseデータベースへの接続を介して内部ビューをクエリすることで行われます。そのため、OceanBaseデータベースの接続情報(実際に検出するデータベースを含む)を入力する必要があります。チェック中にこのテキストボックス内のSQLを実際に実行することはないため、SQL Review機能は安心してご利用いただけます。
sql_diagnoserを終了する
sql_diagnoserのプロセスを終了することで、sql_diagnoserの実行を停止できます。
ps -ef | grep sql-diagnoserを実行して、sql_diagnoserのプロセス番号を確認します。kill -9 プロセス番号を実行してプロセスを終了します。