AnalyticDB for MySQL permite enviar jobs de importação de dados de forma assíncrona.
Cenários
Ao importar dados com INSERT INTO ou INSERT OVERWRITE SELECT, a execução ocorre de forma síncrona por padrão. Se o volume de dados atingir centenas de GB, a conexão entre o cliente e o servidor do AnalyticDB for MySQL pode ser interrompida, causando falha na importação. Portanto, para grandes volumes de dados, envie os jobs de importação de forma assíncrona.
Envio assíncrono de jobs
Sintaxe
-
Sintaxe básica
SUBMIT JOB INSERT OVERWRITE table_name select_statement; -
Sintaxe aprimorada
Especifique um alias ao enviar um job.
SUBMIT JOB <job_alias_name> AS <query_body>;Unicidade: O alias deve ser único.
Formato: Tipo string. Não use aspas simples ou duplas.
Conjunto de caracteres: Apenas letras, dígitos e underscores são permitidos.
Tamanho: Máximo de 128 caracteres.
Exemplos
-
Enviar um job assíncrono
SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;Após executar a instrução, o sistema retorna um ID de job. Use esse ID para consultar o status do job assíncrono.
+---------------------------------------+ | job_id | +---------------------------------------+ | 2017112122202917203100908203303000715 | -
Enviar um job assíncrono e especificar um alias
-
Exemplo correto
SUBMIT JOB test_123 AS INSERT INTO test SELECT * FROM test_external_table; -
Exemplos incorretos
Não coloque o alias do job entre aspas simples ou duplas.
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;
-
Configurar agendamento por prioridade
A versão 3.1.3.6 e posteriores oferecem suporte a agendamento baseado em prioridade. Adicione a dica /*+async_job_priority=n*/ antes da instrução SQL para definir a prioridade do job assíncrono. O valor padrão de prioridade é 1. Valores maiores indicam maior prioridade; nesses casos, o sistema agenda o job primeiro.
/*+async_job_priority=10*/ SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;
Consultar status de jobs assíncronos
Sintaxe
-
Consultar por ID do job
SHOW JOB STATUS WHERE job_id='job_id'; -
Consultar por alias do job
SHOW JOB STATUS WHERE job_name='job_alias_name';
Exemplos
SHOW JOB STATUS WHERE job_id='2017112122202917203100908203303000715';
O sistema retorna as seguintes informações:
+-------------------------------------------+-------------+-----------+--------------+-----------+----------+-------------------------+-------------------------+---------------------------------------------------+-------------------------------------------+------------+----------+------------+-------------+------------+------------------+------------------------+
| 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 |
+-------------------------------------------+-------------+-----------+--------------+-----------+----------+-------------------------+-------------------------+---------------------------------------------------+-------------------------------------------+------------+----------+------------+-------------+------------+------------------+------------------------+
Os campos retornados variam conforme a versão do Milvus do cluster. Interprete o status do job assíncrono com base no campo status do resultado.
Status de jobs e mapeamentos
|
Status na Data Warehouse Edition |
Status na Data Lakehouse Edition |
Descrição |
|
INIT |
SUBMITTING |
Job assíncrono enviado. |
|
SUBMITTED |
RUNNING |
Job assíncrono em execução. |
|
RUNNING |
||
|
FINISH |
SUCCEEDED |
Job assíncrono concluído com sucesso. |
|
FAILED |
FAILED |
Falha no job assíncrono. |
|
Nenhum |
CANCELLED |
Job assíncrono cancelado. |
CANCELLED é um novo estado de tarefa assíncrona e não possui mapeamento na Data Warehouse Edition (V3.0).
Encerrar jobs
Descrição
O sistema remove da fila jobs não agendados e concluídos (com falha ou sucesso).
Se você encerrar um job em execução, os dados importados podem sofrer rollback. Nesse caso, exclua manualmente quaisquer dados residuais.
Não é possível encerrar um job diretamente pelo alias
user_define_job_name. Consulte o ID do job usando o alias e, em seguida, encerre o job utilizando o ID obtido.
Sintaxe
CANCEL JOB 'job_id';
Exemplos
CANCEL JOB '2017112122202917203100908203303000715';