Compartilhar via


Pools de SQL personalizados

Aplica-se a:✅ Endpoint de análise de SQL e Armazém de Dados no Microsoft Fabric

Os pools de SQL personalizados permitem que os administradores tenham mais controle sobre como os recursos de computação de back-end são alocados para seu repositório e endpoint de análise SQL em um workspace.

Diagrama do motor SQL com pools de SQL personalizados.

O Fabric Data Warehouse fornece gerenciamento de carga de trabalho autônomo que segrega recursos de computação em "pools de SQL" internos que são dimensionados independentemente com base na demanda.

Por padrão, os limites de isolamento são ingestão (tipos não declarativosSELECT) e processamento de consulta (SELECT instruções). Com pools de SQL personalizados, os administradores podem:

  • Altere o número de limites de isolamento (adicione mais pools de SQL personalizados).
  • Crie classificações de carga de trabalho personalizadas específicas do nome do aplicativo.
  • Controlar a alocação de recursos de cada pool por meio de um percentual máximo de recursos.

Casos de uso de pools de SQL personalizados

Os pools SQL personalizados têm dois casos de uso principais: proteger cargas de trabalho contra a concorrência de recursos e contra a limitação da capacidade do Fabric devido ao alto consumo.

Cargas de trabalho concorrentes com os pools de cargas de trabalho autônomos

Esse cenário se aplica quando cargas de trabalho distintas competem por recursos, fazendo com que cargas de trabalho críticas percam metas de desempenho.

Cenário de exemplo

  • Uma carga de trabalho de relatórios empresariais é executada de forma subótima quando as consultas ad hoc de usuário são executadas no editor de consultas SQL no portal Fabric.

Abordagem recomendada

  • Divida essas cargas de trabalho em dois pools de SQL personalizados separados.
  • Aloque uma porcentagem maior de recursos para o pool que atende ao aplicativo de relatório empresarial, garantindo que mais recursos estejam disponíveis para o aplicativo comercialmente crítico.

Restrição de capacidade devido ao alto consumo

Esse cenário se aplica quando o alto consumo de capacidade do Fabric causa restrição que afeta o desempenho geral do armazém.

Cenário de exemplo

Abordagem recomendada

  • Reduza o percentual total de recursos alocado para o armazém afetado.
  • Monitore se essa alteração reduz o throttling de consultas e melhora o desempenho como um todo.

Diferenças entre o gerenciamento de carga de trabalho autônoma e pools de SQL personalizados

Tópico Gerenciamento de carga de trabalho autônoma Pools de SQL personalizados
Configuração Nenhum (pronto para uso) – Interface do usuário da Web
- APIs
Permissões N/A Administrador do espaço de trabalho
Scope Workspace – inclui tanto o warehouse quanto o endpoint de análise SQL. Workspace – inclui tanto o warehouse quanto o endpoint de análise SQL.
Método de classificação Tipo de instrução (SELECT ou outro) - Nome do aplicativo
- Expressão regular do nome do aplicativo
Unidade de medida N/A Porcentagem do total de nós de back-end
Pools de SQL SELECT ou outro Alocação definida pelo usuário
Capacidade expansível Gerenciado pelo Fabric (até 12x por pool de SQL, total de 24x) Usuário definido com base na porcentagem de nós de back-end alocados. A quantidade total de recursos ainda é 24 vezes.

Capacidade expansível

Os pools de SQL personalizados permitem que um administrador configure o percentual máximo de recursos como a quantidade de recursos de computação que podem ser alocados. O fator de explosão do tamanho do SKU de capacidade será aplicado e usado de acordo com a porcentagem fornecida para cada pool.

Classificadores

Um classificador é um atributo de uma solicitação SQL que informa ao sistema como rotear para o pool de SQL apropriado.

O Fabric Data Warehouse fornece três maneiras de classificar solicitações:

Tipo de classificador Descrição Configuração
Tipo de instrução Classifica as solicitações em SELECT (query) ou não-SELECT (todas as instruções DML e DDL) Somente gerenciamento autônomo de carga de trabalho
Nome do aplicativo - Aplicativo (ou nome do programa) usado na cadeia de conexão ao se conectar ao Fabric Warehouse ou ao SQL Analytics Endpoint.
– Dá suporte a vários nomes de aplicativos por pool de SQL personalizado
- 128 caracteres ou menos
- Mutuamente exclusivo entre pools de SQL personalizados
Apenas pools de SQL personalizados
Regex para nome do aplicativo - Expressão regular usada para corresponder ao valor do nome do aplicativo.
- Somente o primeiro valor na lista é avaliado para expressão regular
Apenas pools de SQL personalizados

Diretrizes:

  • Somente um tipo de classificador pode ser usado por workspace. Todos os pools de SQL personalizados em um único workspace devem usar o mesmo classificador.
  • No caso de um classificador de expressão regular de nome de aplicativo, se uma solicitação atender a duas ou mais classificações, a seleção do pool de SQL personalizado será aleatória e não haverá critérios de priorização.

Permissões

  • Os membros da função de Administrador do espaço de trabalho podem habilitar ou desabilitar pools de SQL personalizados para um espaço de trabalho.
  • Os membros da função de workspace administrador podem atualizar as configurações personalizadas do pool de SQL.

Configurar pools de SQL personalizados

Você pode configurar pools de SQL personalizados no Fabric Data Warehouse no portal do Fabric ou por meio de chamadas à API.

Monitor

Você pode ver o nome do aplicativo e o pool de SQL que foram registrados para uma consulta nos campos program_name e sql_pool_name da exibição do sistema queryinsights.exec_requests_history.

Você pode usar program_name como nome do aplicativo em um classificador, ou em um padrão de expressão regular para nomear um classificador de aplicativos.

Por exemplo, para localizar todos os program_name e os correspondentes sql_pool_name no histórico recente:

SELECT DISTINCT 
         program_name
        ,sql_pool_name
FROM queryinsights.exec_requests_history;

Você pode identificar quais pools de SQL estão sob pressão consultando a queryinsights.sql_pool_insights exibição.

Por exemplo, encontre períodos de tempo em que um pool estava sob pressão na última semana.

SELECT [timestamp]
        ,sql_pool_name
        ,max_resource_percentage
        ,is_pool_under_pressure
FROM queryinsights.sql_pool_insights
WHERE is_pool_under_pressure = 1
AND [timestamp] > DATEADD(WEEK, -1, GETDATE())
ORDER BY [timestamp] DESC, sql_pool_name;

Para agregar program_name valores por algumas métricas de custo de execução de consultas, você pode usar a seguinte consulta:

SELECT 
    program_name,
    sql_pool_name,
    [CPU] = SUM(allocated_cpu_time_ms), 
    [Disk] = SUM(data_scanned_disk_mb), 
    [Memory] = SUM(data_scanned_memory_mb), 
    [Remote storage] = SUM(data_scanned_remote_storage_mb)
FROM queryinsights.exec_requests_history
GROUP BY program_name, sql_pool_name
ORDER BY [CPU] desc, [Disk] desc, [Memory] desc, [Remote storage] desc;

Limitações

  • Um workspace deve conter um ou mais armazéns de dados ou pontos de extremidade de análise SQL antes de utilizar as APIs.
  • Você pode criar até oito pools de SQL personalizados por workspace.
  • Quando um pool de SQL personalizado é removido, enquanto uma consulta está sendo executada no pool, a consulta falhará com uma mensagem de Request to perform an external distributed computation has failed with error "Query canceled by user.". Redimensionar um pool de SQL personalizado não causa falha na consulta.

Alterações no tamanho da capacidade da malha

Cada espaço de trabalho tem uma capacidade com unidades de capacidade (CUs) associadas, com base no SKU que você adquirir. A capacidade intermitível dos pools de SQL personalizados depende do tamanho da SKU. Portanto, ao alterar a capacidade, você afeta a quantidade máxima de recursos para cada pool de SQL personalizado.

Quando você altera o tamanho do SKU de capacidade ou atribui uma capacidade diferente a um workspace, se os pools de SQL personalizados são habilitados, eles são dimensionados automaticamente para o novo tamanho de SKU.

Se o downscaling força um pool de SQL a zero nós atribuídos, o seguinte erro é exibido em runtime: "O pool de SQL atribuído para essa consulta não tem recursos e deve ser reconfigurado.". Um administrador deve reconfigurar pools de SQL personalizados para remover esse erro.

Próxima etapa