AnalyticDB for MySQL prend en charge la soumission asynchrone des tâches d'importation de données.
Scénarios
Lorsque vous importez des données à l'aide des instructions INSERT INTO ou INSERT OVERWRITE SELECT, le processus s'exécute par défaut de manière synchrone. Si le volume de données atteint plusieurs centaines de gigaoctets, la connexion entre le client et le serveur AnalyticDB for MySQL risque d'être interrompue, ce qui peut entraîner l'échec de l'importation. Par conséquent, pour les volumes de données importants, nous vous recommandons de soumettre les tâches d'importation de manière asynchrone.
Soumettre des tâches de manière asynchrone
Syntaxe
-
Syntaxe de base
SUBMIT JOB INSERT OVERWRITE table_name select_statement; -
Syntaxe avancée.
Spécifiez un alias lors de la soumission d'une tâche.
SUBMIT JOB <job_alias_name> AS <query_body>;Unicité : l'alias doit être unique.
Format : type chaîne. Ne l'entourez pas de guillemets simples ou doubles.
Jeu de caractères : seules les lettres, les chiffres et les traits de soulignement sont pris en charge.
Longueur : 128 caractères maximum.
Exemples
-
Soumettre une tâche asynchrone
SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;Après l'exécution de l'instruction, un ID de tâche est renvoyé. Utilisez cet ID pour interroger l'état de la tâche asynchrone.
+---------------------------------------+ | job_id | +---------------------------------------+ | 2017112122202917203100908203303000715 | -
Soumettre une tâche asynchrone en spécifiant un alias
-
Exemple correct
SUBMIT JOB test_123 AS INSERT INTO test SELECT * FROM test_external_table; -
Exemples incorrects
N'entourez pas l'alias de la tâche de guillemets simples ou doubles.
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;
-
Configurer la planification basée sur la priorité
Les versions 3.1.3.6 et ultérieures prennent en charge la planification basée sur la priorité. Ajoutez l'indicateur /*+async_job_priority=n*/ avant l'instruction SQL pour spécifier la priorité de la tâche asynchrone. La valeur de priorité par défaut est 1. Une valeur plus élevée indique une priorité plus importante ; le système planifie alors la tâche en premier.
/*+async_job_priority=10*/ SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;
Interroger l'état d'une tâche asynchrone
Syntaxe
-
Interroger à l'aide d'un ID de tâche
SHOW JOB STATUS WHERE job_id='job_id'; -
Interroger à l'aide d'un alias de tâche
SHOW JOB STATUS WHERE job_name='job_alias_name';
Exemples
SHOW JOB STATUS WHERE job_id='2017112122202917203100908203303000715';
Le système renvoie les informations suivantes :
+-------------------------------------------+-------------+-----------+--------------+-----------+----------+-------------------------+-------------------------+---------------------------------------------------+-------------------------------------------+------------+----------+------------+-------------+------------+------------------+------------------------+
| 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 |
+-------------------------------------------+-------------+-----------+--------------+-----------+----------+-------------------------+-------------------------+---------------------------------------------------+-------------------------------------------+------------+----------+------------+-------------+------------+------------------+------------------------+
Les champs des informations renvoyées varient selon la version Milvus du cluster. Déterminez l'état de la tâche asynchrone en vous basant sur le champ status des informations renvoyées.
États des tâches et correspondances
|
État dans l'édition Data Warehouse |
État dans l'édition Data Lakehouse |
Description |
|
INIT |
SUBMITTING |
La tâche asynchrone est soumise. |
|
SUBMITTED |
RUNNING |
La tâche asynchrone est en cours d'exécution. |
|
RUNNING |
||
|
FINISH |
SUCCEEDED |
La tâche asynchrone a réussi. |
|
FAILED |
FAILED |
La tâche asynchrone a échoué. |
|
None |
CANCELLED |
La tâche asynchrone est annulée. |
CANCELLED est un nouvel état de tâche asynchrone et n'est pas mappé dans Data Warehouse Edition (V3.0).
Arrêter des tâches
Description
Le système supprime de la file d'attente les tâches non planifiées et terminées (échouées ou réussies).
Si vous arrêtez une tâche en cours d'exécution, le système peut restaurer les données importées. Supprimez manuellement toutes les données résiduelles.
Vous ne pouvez pas arrêter directement une tâche en utilisant son alias
user_define_job_name. Interrogez d'abord l'ID de la tâche à l'aide de l'alias, puis arrêtez la tâche en utilisant cet ID.
Syntaxe
CANCEL JOB 'job_id';
Exemples
CANCEL JOB '2017112122202917203100908203303000715';