Todos os produtos
Search
Central de documentação

MaxCompute:Split Size Hint

Última atualização: Jul 13, 2026

Quando um job SQL do MaxCompute apresenta desempenho abaixo do esperado, a causa geralmente é o desequilíbrio entre o número de tarefas e os recursos disponíveis. O hint split_size controla como o MaxCompute divide os dados da tabela em blocos para processamento paralelo. Cada bloco se torna uma tarefa map; portanto, o tamanho do split determina diretamente a concorrência do job. Ajuste esse valor para equilibrar a quantidade de tarefas com os recursos disponíveis: splits menores geram mais tarefas map para maior paralelismo, enquanto splits maiores reduzem o número de tarefas e aliviam a pressão no agendamento.

SELECT ...
FROM <table_name> /*+split_size(<value_in_mb>)*/
...

O tamanho padrão do split é 256 MB.

Funcionamento

O MaxCompute lê os dados de uma tabela e os divide em splits do tamanho especificado. O número de tarefas map corresponde aproximadamente a:

map tasks = table data size / split_size

Por exemplo, uma tabela de 10 GB com split_size(256) gera cerca de 40 tarefas map. Reduzir para split_size(64) cria aproximadamente 160 tarefas map, ou seja, quatro vezes mais paralelismo.

O MaxCompute respeita o hint split_size na maioria das tabelas. Há uma exceção: se o otimizador de consultas utilizar as propriedades de bucketing de uma tabela clusterizada para otimização, ele ignorará o hint para essa tabela específica.

Ajuste do tamanho do split

O descompasso entre o volume de tarefas e os recursos disponíveis está entre as causas mais frequentes de lentidão em jobs SQL:

  • Excesso de tarefas para os recursos disponíveis -- As tarefas entram em fila aguardando slots de execução, o que aumenta o overhead de agendamento. O job passa mais tempo esperando do que computando.

  • Poucas tarefas para os recursos disponíveis -- Os recursos ficam ociosos enquanto um pequeno número de tarefas processa grandes blocos de dados sequencialmente. O job demora mais do que o necessário.

Cenário

Ação

Motivo

Tarefas em fila por recursos

Aumente o split_size (ex.: 512 ou 1024)

Menos tarefas map reduzem a contenção e o overhead de agendamento

Recursos ociosos durante a execução do job

Diminua o split_size (ex.: 64 ou 128)

Mais tarefas map executam em paralelo, melhorando a utilização dos recursos

Defina o split_size em múltiplos de 256 MB (ex.: 256, 512, 1024) para obter desempenho ideal.

Exemplos

Em todos os exemplos, o hint aparece logo após o nome da tabela na cláusula FROM.

Defina o tamanho do split como 1 MB ao ler src. O MaxCompute dividirá os dados da tabela src em blocos de 1 MB, cada um processado por uma tarefa map distinta. Para uma tabela de 10 GB, isso gera cerca de 10.240 tarefas map em vez das 40 padrão:

SELECT a.key
FROM src a /*+split_size(1)*/
JOIN src2 b ON a.key = b.key;

Aumente o tamanho do split para 512 MB a fim de reduzir o número de tarefas em uma tabela grande. Em uma tabela de 10 GB, essa configuração diminui a contagem de tarefas de 40 para aproximadamente 20:

SELECT *
FROM large_table /*+split_size(512)*/
WHERE dt = '2024-01-01';

Comportamento com tabelas clusterizadas e múltiplos hints

  • Tabelas clusterizadas: O otimizador de consultas ignora o hint split_size em uma tabela clusterizada caso utilize as propriedades de bucketing dessa tabela para otimização.

  • Múltiplos hints na mesma tabela: Se uma consulta ler a mesma tabela várias vezes com diferentes hints split_size, o MaxCompute adotará o menor valor. Por exemplo:

    • split_size(1) e split_size(10) na mesma tabela -- o MaxCompute usa 1.

    • split_size(1) em uma referência e nenhum hint em outra -- o MaxCompute usa 1 (não o padrão de 256 MB).

Referência

Propriedade

Valor

Descrição

Nome do hint

split_size

Nome utilizado no comentário de hint

Sintaxe

/*+split_size(<value_in_mb>)*/

Sintaxe de comentário inline posicionada após o nome da tabela

Posicionamento

Após o nome da tabela em uma consulta

Aplica-se especificamente à tabela que o precede

Unidade

MB

O valor do split size é interpretado em megabytes

Padrão

256

Utilizado quando nenhum hint é especificado

Valores recomendados

Múltiplos de 256 (ex.: 256, 512, 1024)

Alinha-se aos limites internos de blocos para desempenho ideal

Resolução de conflitos

Menor valor entre todos os hints na mesma tabela

Aplica-se quando a mesma tabela aparece múltiplas vezes com hints diferentes