Partilhar via


Gerenciamento de custos para pool SQL sem servidor no Azure Synapse Analytics

Este artigo explica como você pode estimar e gerenciar custos para o pool SQL sem servidor no Azure Synapse Analytics:

  • Estimar a quantidade de dados processados antes de emitir uma consulta
  • Usar o recurso de controle de custos para definir o orçamento

Entenda que os custos do pool SQL sem servidor no Azure Synapse Analytics são apenas uma parte dos custos mensais na sua fatura do Azure. Se estiver a utilizar outros serviços do Azure, ser-lhe-ão cobrados todos os serviços e recursos do Azure utilizados na sua subscrição do Azure, incluindo os serviços de terceiros. Este artigo explica como planejar e gerenciar custos para o pool SQL sem servidor no Azure Synapse Analytics.

Dados tratados

Dados processados são a quantidade de dados que o sistema armazena temporariamente enquanto uma consulta é executada. Os dados tratados consistem nas seguintes quantidades:

  • Quantidade de dados lidos do armazenamento. Este montante inclui:
    • Data read while reading data.
    • Dados lidos durante a leitura de metadados (para formatos de arquivo que contêm metadados, como Parquet).
  • Quantidade de dados em resultados intermédios. This data is transferred among nodes while the query runs. Inclui a transferência de dados para o seu endpoint, num formato não comprimido.
  • Quantidade de dados gravados no armazenamento. Se utilizar o CETAS para exportar o conjunto de resultados para armazenamento, a quantidade de dados gravados é adicionada à quantidade de dados processados para a parte SELECT do CETAS.

A leitura de arquivos do armazenamento é altamente otimizada. O processo utiliza:

  • Prefetching, which might add some overhead to the amount of data read. Se uma consulta ler um arquivo inteiro, não haverá sobrecarga. Se um arquivo for lido parcialmente, como nas consultas TOP N, um pouco mais de dados serão lidos usando a pré-busca.
  • Um analisador otimizado de valores separados por vírgulas (CSV). Se você usar PARSER_VERSION='2.0' para ler arquivos CSV, as quantidades de dados lidos do armazenamento aumentam ligeiramente. Um analisador CSV otimizado lê arquivos em paralelo, em blocos de tamanho igual. Chunks don't necessarily contain whole rows. Para garantir que todas as linhas sejam analisadas, o analisador CSV otimizado também lê pequenos fragmentos de partes adjacentes. Este processo adiciona uma pequena quantidade de sobrecarga.

Estatísticas

O otimizador de consulta de pool SQL sem servidor depende de estatísticas para gerar planos de execução de consulta ideais. Você pode criar estatísticas manualmente. Caso contrário, o pool SQL sem servidor os criará automaticamente. De qualquer forma, as estatísticas são criadas executando uma consulta separada que retorna uma coluna específica em uma taxa de amostragem fornecida. Esta consulta tem uma quantidade associada de dados processados.

Se você executar a mesma consulta ou qualquer outra consulta que se beneficiaria das estatísticas criadas, as estatísticas serão reutilizadas, se possível. Não há dados adicionais processados para a criação de estatísticas.

When statistics are created for a Parquet column, only the relevant column is read from files. Quando as estatísticas são criadas para uma coluna CSV, arquivos inteiros são lidos e analisados.

Rounding

A quantidade de dados processados é arredondada para o MB mais próximo por consulta. Cada consulta tem um mínimo de 10 MB de dados processados.

O que os dados processados não incluem

  • Metadados no nível do servidor (como logins, funções e credenciais no nível do servidor).
  • Databases you create in your endpoint. Esses bancos de dados contêm apenas metadados (como usuários, funções, esquemas, exibições, funções com valor de tabela embutido [TVFs], procedimentos armazenados, credenciais com escopo de banco de dados, fontes de dados externas, formatos de arquivo externos e tabelas externas).
    • Se você usar a inferência de esquema, os fragmentos de arquivo serão lidos para inferir nomes de colunas e tipos de dados, e a quantidade de dados lidos será adicionada à quantidade de dados processados.
  • Instruções DDL (linguagem de definição de dados), exceto para a instrução CREATE STATISTICS, pois ela processa dados do armazenamento com base na porcentagem de amostra especificada.
  • Consultas somente de metadados.

Reduzir a quantidade de dados processados

Você pode otimizar a quantidade de dados processados por consulta e melhorar o desempenho particionando e convertendo seus dados em um formato compactado baseado em colunas, como o Parquet.

Exemplos

Imagine três mesas.

  • A tabela population_csv é apoiada por 5 TB de arquivos CSV. Os arquivos são organizados em cinco colunas de tamanho igual.
  • A tabela population_parquet tem os mesmos dados que a tabela population_csv. It's backed by 1 TB of Parquet files. Esta tabela é menor do que a anterior porque os dados são compactados no formato Parquet.
  • A tabela very_small_csv é apoiada por 100 KB de arquivos CSV.

Consulta 1: SELECT SUM(população) FROM population_csv

Esta consulta lê e analisa arquivos inteiros para obter valores para a coluna de população. Os nós processam fragmentos desta tabela, e a soma da população para cada fragmento é transferida entre nós. A soma final é transferida para o seu destino final.

This query processes 5 TB of data plus a small amount overhead for transferring sums of fragments.

Query 2: SELECT SUM(population) FROM population_parquet

Quando você consulta formatos compactados e baseados em colunas, como o Parquet, menos dados são lidos do que na consulta 1. Você vê esse resultado porque o pool SQL sem servidor lê uma única coluna compactada em vez do arquivo inteiro. In this case, 0.2 TB is read. (Cinco colunas de tamanho igual têm 0,2 TB cada.) Os nós processam fragmentos desta tabela, e a soma da população para cada fragmento é transferida entre nós. A soma final é transferida para o seu destino final.

This query processes 0.2 TB plus a small amount of overhead for transferring sums of fragments.

Query 3: SELECT * FROM population_parquet

Esta consulta lê todas as colunas e transfere todos os dados num formato não comprimido. Se o formato de compressão for 5:1, a consulta processa 6 TB porque lê 1 TB e transfere 5 TB de dados não comprimidos.

Query 4: SELECT COUNT(*) FROM very_small_csv

Esta consulta lê ficheiros inteiros. O tamanho total dos ficheiros armazenados para esta tabela é de 100 KB. Os nós processam fragmentos desta tabela e a soma de cada fragmento é transferida entre nós. A soma final é transferida para o seu destino final.

Esta consulta processa pouco mais de 100 KB de dados. A quantidade de dados processados para esta consulta é arredondada para 10 MB, conforme especificado na seção Arredondamento deste artigo.

Controlo de custos

O recurso de controle de custos no pool SQL sem servidor permite definir o orçamento para a quantidade de dados processados. Você pode definir o orçamento em TB de dados processados para um dia, semana e mês. Ao mesmo tempo, você pode ter um ou mais orçamentos definidos. Para configurar o controle de custos para o pool SQL sem servidor, você pode usar o Synapse Studio ou o T-SQL.

Configurar o controle de custos para pool SQL sem servidor no Synapse Studio

Para configurar o controlo de custos para o pool SQL sem servidor no Synapse Studio, navegue até o item Gerir no menu à esquerda e selecione o item do pool SQL em Pools de análise. Ao passar o mouse sobre o pool SQL sem servidor, você notará um ícone para controle de custos - clique neste ícone.

Cost control navigation

Depois de clicar no ícone de controle de custos, uma barra lateral aparecerá:

Configuração de controle de custos

To set one or more budgets, first click on Enable radio button for a budget you want to set, than enter the integer value in the text box. A unidade para o valor é TBs. Depois de configurar os orçamentos desejados, clique no botão Aplicar na parte inferior da barra lateral. É isso, o seu orçamento está agora definido.

Configurar o controle de custos para pool SQL sem servidor no T-SQL

Para configurar o controle de custos para pool SQL sem servidor no T-SQL, você precisa executar um ou mais dos seguintes procedimentos armazenados.

sp_set_data_processed_limit
	@type = N'daily',
	@limit_tb = 1

sp_set_data_processed_limit
	@type= N'weekly',
	@limit_tb = 2

sp_set_data_processed_limit
	@type= N'monthly',
	@limit_tb = 3334

Para ver a configuração atual, execute a seguinte instrução T-SQL:

SELECT * FROM sys.configurations
WHERE name like 'Data processed %';

Para ver quantos dados foram processados durante o dia, semana ou mês atual, execute a seguinte instrução T-SQL:

SELECT * FROM sys.dm_external_data_processed

Exceder os limites definidos no controlo de custos

Caso algum limite seja excedido durante a execução da consulta, a consulta não será encerrada.

Quando o limite é excedido, nova consulta será rejeitada com a mensagem de erro que contém detalhes sobre o período, limite definido para esse período e dados processados para esse período. Por exemplo, caso uma nova consulta seja executada, em que o limite semanal é definido como 1 TB e foi excedido, a mensagem de erro será:

Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))

Próximos passos

Para saber como otimizar suas consultas para desempenho, consulte Práticas recomendadas para pool SQL sem servidor.