データロードのトラブルシューティング
このガイドは、DBA や運用エンジニアが外部の監視システムに頼らずに SQL インターフェースを通じてデータロードジョブのステータスを監視するのを支援するために設計されています。また、ロード操作中のパフォーマンスボトルネックの特定や異常のトラブルシューティングに関するガイダンスも提供します。
用語
Load Job: Routine Load Job や Pipe Job のような継続的なデータロードプロセス。
Load Task: 通常、単一のロードトランザクションに対応する一度きりのデータロードプロセス。例として、Broker Load、Stream Load、Spark Load、および INSERT INTO があります。Routine Load ジョブと Pipe ジョブは、データ取り込みを行うためにタスクを継続的に生成します。
ロードジョブの観察
ロードジョブを観察する方法は2つあります:
- SQL ステートメント SHOW ROUTINE LOAD および SHOW PIPES を使用する。
- システムビュー information_schema.routine_load_jobs および information_schema.pipes を使用する。
ロードタスクの観察
ロードタスクも2つの方法で監視できます:
- SQL ステートメント SHOW LOAD および SHOW ROUTINE LOAD TASK を使用する。
- システムビュー information_schema.loads および statistics.loads_history を使用する。
SQL ステートメント
SHOW ステートメントは、現在のデータベースの進行中および最近完了したロードタスクを表示し、タスクのステータスを迅速に把握できます。取得される情報は、statistics.loads_history システムビューのサブセットです。
SHOW LOAD ステートメントは Broker Load、Insert Into、Spark Load タスクの情報を返し、SHOW ROUTINE LOAD TASK ステートメントは Routine Load タスクの情報を返します。
システムビュー
information_schema.loads
information_schema.loads システムビューは、最近のロードタスクに関する情報を保存し、アクティブなものと最近完了したものを含みます。StarRocks は定期的にデータを statistics.loads_history システムテーブルに同期し、永続的に保存します。
information_schema.loads は以下のフィールドを提供します:
| フィールド | 説明 |
|---|---|
| ID | グローバルに一意の識別子。 |
| LABEL | ロードジョブのラベル。 |
| PROFILE_ID | ANALYZE PROFILE を通じて分析できるプロファイルの ID。 |
| DB_NAME | 対象テーブルが属するデータベース。 |
| TABLE_NAME | 対象テーブル。 |
| USER | ロードジョブを開始したユーザー。 |
| WAREHOUSE | ロードジョブが属するウェアハウス。 |
| STATE | ロードジョブの状態。 有効な値:
|
| PROGRESS | ロードジョブの ETL ステージと LOADING ステージの進捗。 |
| TYPE | ロードジョブのタイプ。 Broker Load の場合、返される値は BROKER。INSERT の場合、返される値は INSERT。Stream Load の場合、返される値は STREAM。Routine Load の場合、返される値は ROUTINE。 |
| PRIORITY | ロードジョブの優先度。 有効な値: HIGHEST, HIGH, NORMAL, LOW, LOWEST。 |
| SCAN_ROWS | スキャンされたデータ行の数。 |
| SCAN_BYTES | スキャンされたバイト数。 |
| FILTERED_ROWS | データ品質が不十分なためにフィルタリングされたデータ行の数。 |
| UNSELECTED_ROWS | WHERE 句で指定された条件によりフィルタリングされたデータ行の数。 |
| SINK_ROWS | ロードされたデータ行の数。 |
| RUNTIME_DETAILS | ロードの実行時メタデータ。詳細は RUNTIME_DETAILS を参照。 |
| CREATE_TIME | ロードジョブが作成された時間。フォーマット: yyyy-MM-dd HH:mm:ss。例: 2023-07-24 14:58:58。 |
| LOAD_START_TIME | ロードジョブの LOADING ステージの開始時間。 フォーマット: yyyy-MM-dd HH:mm:ss。例: 2023-07-24 14:58:58。 |
| LOAD_COMMIT_TIME | ロADING トランザクションがコミットされた時間。フォーマット: yyyy-MM-dd HH:mm:ss。例: 2023-07-24 14:58:58。 |
| LOAD_FINISH_TIME | ロードジョブの LOADING ステージの終了時間。フォーマット: yyyy-MM-dd HH:mm:ss。例: 2023-07-24 14:58:58。 |
| PROPERTIES | ロードジョブの静的プロパティ。詳細は PROPERTIES を参照。 |
| ERROR_MSG | ロードジョブのエラーメッセージ。エラーが発生しなかった場合、NULL が返されます。 |
| TRACKING_SQL | ロードジョブの追跡ログをクエリするために使用できる SQL ステートメント。ロードジョブが不適格なデータ行を含む場合にのみ SQL ステートメントが返されます。不適格なデータ行を含まない場合、NULL が返されます。 |
| REJECTED_RECORD_PATH | ロードジョブでフィルタリングされたすべての不適格なデータ行にアクセスできるパス。ログに記録される不適格なデータ行の数は、ロードジョブで設定された log_rejected_record_num パラメータによって決まります。このパスにアクセスするには wget コマンドを使用できます。不適格なデータ行を含まない場合、NULL が返されます。 |
RUNTIME_DETAILS
- 共通メトリクス:
| メト リック | 説明 |
|---|---|
| load_id | ロード実行計画のグローバルに一意の ID。 |
| txn_id | ロードトランザクション ID。 |
- Broker Load、INSERT INTO、Spark Load の特定メトリクス:
| メトリック | 説明 |
|---|---|
| etl_info | ETL 詳細。このフィールドは Spark Load ジョブにのみ有効です。他のタイプのロードジョブでは、値は空になります。 |
| etl_start_time | ロードジョブの ETL ステージの開始時間。フォーマット: yyyy-MM-dd HH:mm:ss。例: 2023-07-24 14:58:58。 |
| etl_start_time | ロードジョブの ETL ステージの終了時間。フォーマット: yyyy-MM-dd HH:mm:ss。例: 2023-07-24 14:58:58。 |
| unfinished_backends | 実行が完了していない BEs のリスト。 |
| backends | 実行に参加している BEs のリスト。 |
| file_num | 読み取られたファイルの数。 |
| file_size | 読み取られたファイルの合計サイズ。 |
| task_num | サブタスクの数。 |
- Routine Load の特定メトリクス:
| メトリック | 説明 |
|---|---|
| schedule_interval | Routine Load がスケジュールされる間隔。 |
| wait_slot_time | Routine Load タスクが実行スロットを待機している間に経過した時間。 |
| check_offset_time | Routine Load タスクのスケジューリング中にオフセット情報を確認する際に消費される時間。 |
| consume_time | Routine Load タスクが上流データを読み取るのに消費する時間。 |
| plan_time | 実行計画を生成する時間。 |
| commit_publish_time | COMMIT RPC を実行するのに消費される時間。 |
- Stream Load の特定メトリクス:
| メトリック | 説明 |
|---|---|
| timeout | ロードタスクのタイムアウト。 |
| begin_txn_ms | トランザクションを開始するのに消費される時間。 |
| plan_time_ms | 実行計画を生成する時間。 |
| receive_data_time_ms | データを受信する時間。 |
| commit_publish_time_ms | COMMIT RPC を実行するのに消費される時間。 |
| client_ip | クライアントの IP アドレス。 |
PROPERTIES
- Broker Load、INSERT INTO、Spark Load の特定プロパティ:
| プロパティ | 説明 |
|---|---|
| timeout | ロードタスクのタイムアウト。 |
| max_filter_ratio | データ品質が不十分なためにフィルタリングされるデータ行の最大比率。 |
- Routine Load の特定プロパティ:
| プロパティ | 説明 |
|---|---|
| job_name | Routine Load ジョブ名。 |
| task_num | 実際に並行して実行されるサブタスクの数。 |
| timeout | ロードタスクのタイムアウト。 |
statistics.loads_history
statistics.loads_history システムビューは、デフォルトで過去3か月間のロード記録を保存します。DBA はビューの partition_ttl を変更して保持期間を調整できます。statistics.loads_history は information_schema.loads と一貫したスキーマを持っています。
Load Profiles でロードパフォーマンスの問題を特定する
Load Profile は、データロードに関与するすべてのワーカーノードの実行詳細を記録します。これにより、StarRocks クラスター内のパフォーマンスボトルネックを迅速に特定できます。
Load Profiles を有効にする
StarRocks は、ロードの種類に応じて Load Profiles を有効にする複数の方法を提供します: