AnalyticDB for MySQL は、データインポートジョブの非同期送信をサポートしています。
利用シーン
INSERT INTO または INSERT OVERWRITE SELECT を使用してデータをインポートする場合、プロセスはデフォルトで同期的に実行されます。データ量が数百 GB に達すると、クライアントから AnalyticDB for MySQL サーバーへの接続が中断され、データインポートが失敗する可能性があります。そのため、大量のデータの場合、データインポートジョブを非同期で送信する必要があります。
非同期ジョブの送信
構文
基本構文
SUBMIT JOB INSERT OVERWRITE table_name select_statement;拡張構文。
ジョブの送信時にエイリアスを指定できます。
SUBMIT JOB <job_alias_name> AS <query_body>;一意性: エイリアスは一意である必要があります。
フォーマット: 文字列型。シングルクォーテーションまたはダブルクォーテーションで囲まないでください。
文字セット: 文字、数字、アンダースコアのみがサポートされています。
長さ: 最大 128 文字。
例
非同期ジョブの送信
SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;文の実行後、ジョブ ID が返されます。このジョブ ID を使用して、非同期ジョブのステータスをクエリできます。
+---------------------------------------+ | job_id | +---------------------------------------+ | 2017112122202917203100908203303000715 |非同期ジョブを送信し、エイリアスを指定
正しい例
SUBMIT JOB test_123 AS INSERT INTO test SELECT * FROM test_external_table;誤った例
ジョブエイリアスをシングルクォーテーションまたはダブルクォーテーションで囲まないでください。
SUBMIT JOB 'test_123' AS INSERT INTO test SELECT * FROM test_external_table; SUBMIT JOB "test_123" AS INSERT INTO test SELECT * FROM test_external_table;
優先度ベースのスケジューリングの設定
バージョン 3.1.3.6 以降は、優先度ベースのスケジューリングをサポートしています。SQL 文の前にヒントワード /*+async_job_priority=n*/ を追加して、非同期ジョブの優先度を指定できます。デフォルトの優先度値は 1 です。値が大きいほど優先度が高くなり、システムが最初にスケジュールします。
/*+async_job_priority=10*/ SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;非同期ジョブステータスのクエリ
構文
ジョブ ID を使用したクエリ
SHOW JOB STATUS WHERE job_id='job_id';ジョブエイリアスを使用したクエリ
SHOW JOB STATUS WHERE job_name='job_alias_name';
例
SHOW JOB STATUS WHERE job_id='2017112122202917203100908203303000715';以下の情報が返されます。
+-------------------------------------------+-------------+-----------+--------------+-----------+----------+-------------------------+-------------------------+---------------------------------------------------+-------------------------------------------+------------+----------+------------+-------------+------------+------------------+------------------------+
| job_id | schema_name | status | process_rows | fail_rows | fail_msg | create_time | update_time | definition | exec_job_id | total_rows | progress | start_time | result_rows | result_url | query_priority | user_define_job_name |
+-------------------------------------------+-------------+-----------+--------------+-----------+----------+-------------------------+-------------------------+---------------------------------------------------+-------------------------------------------+------------+----------+------------+-------------+------------+------------------+------------------------+
| 2026022710213902101709304503151000743 | test_db | SUCCEEDED | 4 | 0 | NULL | 2026-02-27 10:21:39.0 | 2026-02-27 10:21:45.0 | INSERT INTO test SELECT * FROM test_external_table| 2026022710214402101706516803151005717 | 0 | NULL | NULL | 0 | NULL | NORMAL | test_123 |
+-------------------------------------------+-------------+-----------+--------------+-----------+----------+-------------------------+-------------------------+---------------------------------------------------+-------------------------------------------+------------+----------+------------+-------------+------------+------------------+------------------------+返される情報のフィールドは、クラスターの Milvus バージョンによって異なります。返される情報の status フィールドに基づいて、非同期ジョブのステータスを解析できます。
ジョブステータスとマッピング
Data Warehouse Edition でのステータス | Data Lakehouse Edition でのステータス | 説明 |
INIT | SUBMITTING | 非同期ジョブが送信されます。 |
SUBMITTED | RUNNING | 非同期ジョブが実行中です。 |
RUNNING | ||
FINISH | SUCCEEDED | 非同期ジョブが成功しました。 |
FAILED | FAILED | 非同期ジョブが失敗しました。 |
None | CANCELLED | 非同期ジョブがキャンセルされました。 |
CANCELLED は新しい非同期タスクの状態であり、Data Warehouse Edition (V3.0) にはマッピングされていません。
ジョブの終了
説明
スケジュールされていないジョブ、および完了した (失敗または成功した) ジョブはキューから削除されます。
実行中のジョブが終了された場合、インポートされたデータがロールバックされる可能性があります。残りのデータは手動で削除する必要があります。
エイリアス
user_define_job_nameを使用してジョブを直接終了することはできません。エイリアスを使用してジョブ ID をクエリし、そのジョブ ID を使用してジョブを終了する必要があります。
構文
CANCEL JOB 'job_id';例
CANCEL JOB '2017112122202917203100908203303000715';