Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica como você pode estimar e gerenciar custos para o pool de SQL sem servidor no Azure Synapse Analytics:
- Estimar a quantidade de dados processados antes de emitir uma consulta
- Usar o recurso de controle de custo para definir o orçamento
Entenda que os custos do pool de SQL sem servidor no Azure Synapse Analytics são apenas uma parte dos custos mensais em sua fatura do Azure. Se você estiver usando outros serviços do Azure, será cobrado por todos os serviços e recursos do Azure usados em sua assinatura do Azure, incluindo os serviços de terceiros. Este artigo explica como planejar e gerenciar custos para o pool de SQL sem servidor no Azure Synapse Analytics.
Dados processados
Os dados processados são a quantidade de dados que o sistema armazena temporariamente enquanto uma consulta é executada. Os dados processados consistem nas seguintes quantidades:
- Quantidade de dados lidos do armazenamento. Esse valor inclui:
- Dados lidos durante a leitura de dados.
- Dados lidos durante a leitura de metadados (para formatos de arquivo que contêm metadados, como Parquet).
- Quantidade de dados em resultados intermediários. Esses dados são transferidos entre nós enquanto a consulta é executada. Ele inclui a transferência de dados para o ponto de extremidade, em um formato descompactado.
- Quantidade de dados gravados no armazenamento. Se você usar o CETAS para exportar o conjunto de resultados para o armazenamento, a quantidade de dados gravados será adicionada à quantidade de dados processados para a parte SELECT do CETAS.
A leitura de arquivos do armazenamento é altamente otimizada. O processo usa:
- Pré-busca, o que pode adicionar alguma sobrecarga à quantidade de dados lidos. Se uma consulta ler um arquivo inteiro, não haverá sobrecarga. Se um arquivo for lido parcialmente, como em consultas TOP N, um pouco mais de dados serão lidos usando a pré-busca.
- Um analisador de CSV (valor separado por vírgula) otimizado. Se você usar PARSER_VERSION='2.0' para ler arquivos CSV, as quantidades de dados lidos do armazenamento aumentarão ligeiramente. Um analisador de CSV otimizado lê arquivos em paralelo, em partes de tamanho igual. Segmentos não necessariamente contêm linhas inteiras. Para garantir que todas as linhas sejam analisadas, o analisador CSV otimizado também lê pequenos fragmentos de partes adjacentes. Esse processo adiciona uma pequena quantidade de sobrecarga.
Estatísticas
O otimizador de consulta do pool de 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 de 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 a uma taxa de exemplo fornecida. Essa consulta tem uma quantidade associada de dados processados.
Se você executar a mesma 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.
Quando se criam estatísticas para uma coluna Parquet, somente a coluna relevante é lida a partir dos arquivos. Quando as estatísticas são criadas para uma coluna CSV, arquivos inteiros são lidos e analisados.
Arredondamento
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 logons, funções e credenciais no nível do servidor).
- Bancos de dados que você cria no seu endpoint. Esses bancos de dados contêm apenas metadados (como usuários, funções, esquemas, exibições, funções embutidas com valor de tabela [TVFs], procedimentos armazenados, credenciais no escopo do 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 porque processa dados do armazenamento com base na porcentagem de exemplo especificada.
- Consultas somente de metadados.
Reduzindo 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 e baseado em colunas, como Parquet.
Exemplos
Imagine três tabelas.
- 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 da tabela population_csv. É respaldado por 1 TB de arquivos Parquet. Esta tabela é menor 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(population) FROM population_csv
Essa consulta lê e analisa arquivos inteiros para obter valores para a coluna de população. Os nós processam fragmentos dessa tabela, e a soma da população de cada fragmento é transferida entre os nós. A soma final é transferida para o destino final.
Essa consulta processa 5 TB de dados, além de uma pequena sobrecarga adicional para transferir somas de fragmentos.
Consulta 2: SELECT SUM(population) FROM population_parquet
Quando você consulta formatos compactados e baseados em coluna, como Parquet, menos dados são lidos do que na consulta 1. Você verá esse resultado porque o pool de SQL sem servidor lê uma única coluna compactada em vez de todo o arquivo. Nesse caso, 0,2 TB é lido. (Cinco colunas de tamanho igual são de 0,2 TB cada.) Os nós processam fragmentos dessa tabela, e a soma da população de cada fragmento é transferida entre os nós. A soma final é transferida para o endpoint.
Essa consulta processa 0,2 TB mais uma pequena quantidade de sobrecarga para transferir somas de fragmentos.
Consulta 3: SELECT * FROM population_parquet
Essa consulta lê todas as colunas e transfere todos os dados em um formato descompactado. Se o formato de compactação for 5:1, a consulta processará 6 TB porque lerá 1 TB e transferirá 5 TB de dados não compactados.
Consulta 4: SELECT COUNT(*) FROM very_small_csv
Essa consulta lê arquivos inteiros. O tamanho total dos arquivos no armazenamento para esta tabela é de 100 KB. Os nós processam fragmentos desta tabela, e a soma de cada fragmento é transferida entre os nós. A soma final é transferida para o destino final.
Essa consulta processa pouco mais de 100 KB de dados. A quantidade de dados processados para essa consulta é arredondada para até 10 MB, conforme especificado na seção Arredondamento deste artigo.
Controle de custo
O recurso de controle de custo no pool de SQL sem servidor permite que você defina o orçamento para a quantidade de dados processados. Você pode definir o orçamento em TB de dados processados por um dia, semana e mês. Ao mesmo tempo, você pode ter um ou mais orçamentos definidos. Para configurar o controle de custo para o pool de SQL sem servidor, você pode usar o Synapse Studio ou o T-SQL.
Configurar o controle de custo para o pool de SQL sem servidor no Synapse Studio
Para configurar o controle de custo para o SQL pool sem servidor no Synapse Studio, navegue até a opção Gerenciar no menu à esquerda, depois selecione o item SQL pool em Pools de Análise. Ao passar o mouse sobre o pool de SQL sem servidor, você observará um ícone para o controle de custo – clique neste ícone.
Depois de clicar no ícone de controle de custo, uma barra lateral será exibida:
Para definir um ou mais orçamentos, primeiro clique no botão para Habilitar na opção de um orçamento que você deseja definir e depois insira o valor inteiro na caixa de texto. A unidade para o valor é TBs. Depois de configurar os orçamentos que você queria, clique no botão Aplicar na parte inferior da barra lateral. É isso, seu orçamento agora está definido.
Configurar o controle de custo para o pool de SQL sem servidor no T-SQL
Para configurar o controle de custo para o pool de SQL sem servidor no T-SQL, você precisa executar um ou mais dos procedimentos armazenados a seguir.
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, a semana ou o mês atuais, execute a seguinte instrução T-SQL:
SELECT * FROM sys.dm_external_data_processed
Excedendo os limites definidos nos controles de custo
Caso qualquer limite seja excedido durante a execução da consulta, a consulta não será encerrada.
Quando o limite for excedido, a 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óximas Etapas
Para saber como otimizar suas consultas para desempenho, consulte As práticas recomendadas para o pool de SQL sem servidor.