Práticas recomendadas para análise de SQL no Azure Synapse Analytics (antigo SQL DW)Best practices for SQL Analytics in Azure Synapse Analytics (formerly SQL DW)

Este artigo é uma coleção de práticas recomendadas para ajudá-lo a obter o desempenho ideal da sua implantação do SQL Analytics .This article is a collection of best practices to help you to achieve optimal performance from your SQL Analytics deployment. A finalidade deste artigo é fornecer algumas diretrizes básicas e destacar áreas importantes de foco.The purpose of this article is to give you some basic guidance and highlight important areas of focus. Cada seção apresenta um conceito e, em seguida, aponta para artigos mais detalhados que abordam o conceito em mais detalhes.Each section introduces you to a concept and then points you to more detailed articles that cover the concept in more depth. A sequência de tópicos é a ordem de importância.The sequence of topics is in the order of importance.

Reduzir custos com pausa e dimensionamentoReduce cost with pause and scale

Para obter mais informações sobre como reduzir os custos por meio de pausa e dimensionamento, confira Gerenciar computação.For more information about reducing costs through pausing and scaling, see the Manage compute.

Manter as estatísticasMaintain statistics

Os SQL Data Warehouse do Azure podem ser configurados para detectar e criar estatísticas automaticamente em colunas.Azure SQL Data Warehouse can be configured to automatically detect and create statistics on columns. Os planos de consulta criados pelo otimizador são tão bons quanto as estatísticas disponíveis.The query plans created by the optimizer are only as good as the available statistics. Recomendamos que você habilite AUTO_CREATE_STATISTICS para seus bancos de dados e mantenha as estatísticas atualizadas diariamente ou após cada carga para garantir que as estatísticas nas colunas usadas em suas consultas estejam sempre atualizadas.We recommend that you enable AUTO_CREATE_STATISTICS for your databases and keep the statistics updated daily or after each load to ensure that statistics on columns used in your queries are always up-to-date.

Se você achar que está demorando muito para atualizar todas as suas estatísticas, convém tentar ser mais seletivos sobre quais colunas precisam de atualizações de estatísticas frequentes.If you find it is taking too long to update all of your statistics, you may want to try to be more selective about which columns need frequent statistics updates. Por exemplo, convém atualizar as colunas de data, onde novos valores podem ser adicionados, diariamente.For example, you might want to update date columns, where new values may be added, daily. Você obterá mais benefícios com a atualização de estatísticas em colunas envolvidas em junções, colunas usadas na cláusula WHERE e colunas encontradas em GROUP BY.You will gain the most benefit by having updated statistics on columns involved in joins, columns used in the WHERE clause and columns found in GROUP BY.

Confira também Gerenciar as estatísticas da tabela, CRIAR ESTATÍSTICAS, UPDATE STATISTICSSee also Manage table statistics, CREATE STATISTICS, UPDATE STATISTICS

Usar DMVs para monitorar e otimizar suas consultasUse DMVs to monitor and optimize your queries

A análise de SQL tem várias DMVs que podem ser usadas para monitorar a execução da consulta.SQL Analytics has several DMVs that can be used to monitor query execution. O artigo de monitoramento abaixo apresenta instruções passo a passo sobre como analisar os detalhes de uma consulta em execução.The monitoring article below walks through step-by-step instructions on how to look at the details of an executing query. Para encontrar rapidamente as consultas nessas DMVs, usar a opção LABEL com suas consultas poderá ajudar.To quickly find queries in these DMVs, using the LABEL option with your queries can help.

Confira também Monitore sua carga de trabalho usando DMVs, LABEL, OPTION, sys.dm_exec_sessions, sys.dm_pdw_exec_requests, sys.dm_pdw_request_steps, sys.dm_pdw_sql_requests, sys.dm_pdw_dms_workers, DBCC PDW_SHOWEXECUTIONPLAN, sys.dm_pdw_waitsSee also Monitor your workload using DMVs, LABEL, OPTION, sys.dm_exec_sessions, sys.dm_pdw_exec_requests, sys.dm_pdw_request_steps, sys.dm_pdw_sql_requests, sys.dm_pdw_dms_workers, DBCC PDW_SHOWEXECUTIONPLAN, sys.dm_pdw_waits

Ajustar o desempenho de consultas com novos aprimoramentos de produtosTune query performance with new product enhancements

Agrupar instruções INSERT em lotesGroup INSERT statements into batches

Uma única carga para uma pequena tabela com uma instrução INSERT ou mesmo uma recarga periódica de uma pesquisa pode ser útil para satisfazer suas necessidades com uma instrução como INSERT INTO MyLookup VALUES (1, 'Type 1').A one-time load to a small table with an INSERT statement or even a periodic reload of a look-up may perform just fine for your needs with a statement like INSERT INTO MyLookup VALUES (1, 'Type 1'). No entanto, se você precisar carregar milhares ou milhões de linhas ao longo do dia, poderá achar que os INSERTS individuais poderão não dar conta.However, if you need to load thousands or millions of rows throughout the day, you might find that singleton INSERTS just can't keep up. Em vez disso, desenvolva seus processos de modo que eles gravem em um arquivo e outro processo adiante-se periodicamente e carregue esse arquivo.Instead, develop your processes so that they write to a file and another process periodically comes along and loads this file.

Confira também INSERTSee also INSERT

Use o PolyBase para carregar e exportar dados rapidamenteUse PolyBase to load and export data quickly

A análise do SQL dá suporte ao carregamento e exportação de dados por meio de várias ferramentas, incluindo Azure Data Factory, polybase e BCP.SQL Analytics supports loading and exporting data through several tools including Azure Data Factory, PolyBase, and BCP. Para pequenas quantidades de dados em que o desempenho não é essencial, qualquer ferramenta poderá ser suficiente para satisfazer suas necessidades.For small amounts of data where performance isn't critical, any tool may be sufficient for your needs. No entanto, quando você estiver carregando ou exportando grandes volumes de dados ou um desempenho rápido for necessário, o PolyBase será a melhor opção.However, when you are loading or exporting large volumes of data or fast performance is needed, PolyBase is the best choice.

O polybase foi projetado para aproveitar a arquitetura MPP (processamento paralelo maciço) e carregará e exportará as magnitudes de dados mais rápido do que qualquer outra ferramenta.PolyBase is designed to leverage the MPP (Massively Parallel Processing) architecture and will load and export data magnitudes faster than any other tool. As cargas do PolyBase podem ser executadas usando CTAS ou INSERT INTO.PolyBase loads can be run using CTAS or INSERT INTO. Usar o CTAS minimizará o registro em log das transações e será o modo mais rápido de carregar os dados.Using CTAS will minimize transaction logging and the fastest way to load your data.

Além disso, o Azure Data Factory dá suporte a cargas de PolyBase e pode alcançar um desempenho semelhante como CTAS.Azure Data Factory also supports PolyBase loads and can achieve similar performance as CTAS. O PolyBase oferece suporte a vários formatos de arquivo, incluindo os arquivos Gzip.PolyBase supports a variety of file formats including Gzip files. Para maximizar a taxa de transferência ao usar arquivos de texto gzip, divida arquivos em 60 ou mais arquivos para maximizar o paralelismo de sua carga.To maximize throughput when using gzip text files, break up files into 60 or more files to maximize parallelism of your load. Para ter uma taxa de transferência total mais rápida, considere carregar os dados simultaneamente.For faster total throughput, consider loading data concurrently.

Consulte também carregar dados, guia para usar o polybase, padrões e estratégias de carregamento do pool SQL, carregar dados com Azure data Factory, mover dados com Azure data Factory, criar formato de arquivo externo, criar tabela como SELECT (CTAS)See also Load data, Guide for using PolyBase, SQL pool loading patterns and strategies, Load Data with Azure Data Factory, Move data with Azure Data Factory, CREATE EXTERNAL FILE FORMAT, Create table as select (CTAS)

Carregar e consultar tabelas externasLoad then query external tables

Embora o Polybase, também conhecido como tabelas externas, possa ser a maneira mais rápida de carregar dados, ele não é o ideal para consultas.While Polybase, also known as external tables, can be the fastest way to load data, it is not optimal for queries. Atualmente, as tabelas do polybase dão suporte apenas a arquivos de blob do Azure e armazenamento de Azure Data Lake.Polybase tables currently only support Azure blob files and Azure Data Lake storage. Esses arquivos não tem quaisquer recursos de computação que os assegure.These files do not have any compute resources backing them.

Como resultado, a análise do SQL não pode descarregar esse trabalho e, portanto, deve ler o arquivo inteiro carregando-o para tempdb a fim de ler os dados.As a result, SQL Analytics cannot offload this work and therefore must read the entire file by loading it to tempdb in order to read the data. Desse modo, se você tiver várias consultas que usarão esses dados, é melhor carregá-los apenas uma vez e fazer com que as consultas usem a tabela local.Therefore, if you have several queries that will be querying this data, it is better to load this data once and have queries use the local table.

Confira também Guia para usar o PolyBaseSee also Guide for using PolyBase

Tabelas grandes com distribuição HashHash distribute large tables

Por padrão, as tabelas são distribuídas pelo método Round Robin.By default, tables are Round Robin distributed. Isso facilita para os usuários começar a criar tabelas sem ter de decidir sobre como as tabelas deverão ser distribuídas.This makes it easy for users to get started creating tables without having to decide how their tables should be distributed. Tabelas Round Robin podem apresentar desempenho suficiente para algumas cargas de trabalho, mas, na maioria das vezes, o desempenho será muito melhor se uma coluna de distribuição for escolhida.Round Robin tables may perform sufficiently for some workloads, but in most cases selecting a distribution column will perform much better. O exemplo mais comum de quando uma tabela distribuída por uma coluna superará bastante uma tabela Round Robin ocorre quando duas tabelas de fatos grandes são unidas.The most common example of when a table distributed by a column will far outperform a Round Robin table is when two large fact tables are joined.

Por exemplo, se você tiver uma tabela de pedidos, que é distribuída por order_id, e uma tabela de transações, que também é distribuída por order_id, quando você unir a tabela de pedidos e a tabela de transações em order_id, a consulta se tornará uma consulta de passagem, o que significa que podemos eliminar as operações de movimentação de dados.For example, if you have an orders table, which is distributed by order_id, and a transactions table, which is also distributed by order_id, when you join your orders table to your transactions table on order_id, this query becomes a pass-through query, which means we eliminate data movement operations. Menos etapas significam uma consulta mais rápida.Fewer steps mean a faster query. Menos movimento de dados também resulta em consultas mais rápidas.Less data movement also makes for faster queries.

Ao carregar uma tabela distribuída, verifique se os dados de entrada não estão classificados na chave de distribuição, pois isso reduzirá a velocidade das cargas.When loading a distributed table, be sure that your incoming data is not sorted on the distribution key as this will slow down your loads. Consulte os links abaixo para obter mais detalhes sobre como selecionar uma coluna de distribuição pode melhorar o desempenho, bem como definir uma tabela distribuída na cláusula WITH de sua instrução CREATE TABLE.See the below links for more details on how selecting a distribution column can improve performance as well as how to define a distributed table in the WITH clause of your CREATE TABLE statement.

Confira também Visão geral das tabelas, Distribuição de tabelas, Selecionando a distribuição de tabelas, CREATE TABLE, CREATE TABLE AS SELECTSee also Table overview, Table distribution, Selecting table distribution, CREATE TABLE, CREATE TABLE AS SELECT

Não estender a partiçãoDo not over-partition

Embora o particionamento de dados possa ser eficaz para manter seus dados por meio da alternância de partição ou otimização de verificações com a eliminação de partição, ter muitas partições pode retardar suas consultas.While partitioning data can be effective for maintaining your data through partition switching or optimizing scans by with partition elimination, having too many partitions can slow down your queries. Geralmente, uma estratégia de particionamento de alta granularidade, que pode funcionar bem em SQL Server pode não funcionar bem na análise de SQL.Often a high granularity partitioning strategy, which may work well on SQL Server may not work well in SQL Analytics.

Ter muitas partições também poderá reduzir a eficiência dos índices columnstore clusterizados se cada partição tiver menos de 1 milhão de linhas.Having too many partitions can also reduce the effectiveness of clustered columnstore indexes if each partition has fewer than 1 million rows. Lembre-se de que, em segundo plano, a análise do SQL particiona seus dados para você em 60, portanto, se você criar uma tabela com 100 partições, isso realmente resultará em 6000 partições.Keep in mind that behind the scenes, SQL Analytics partitions your data for you into 60 databases, so if you create a table with 100 partitions, this actually results in 6000 partitions.

Cada carga de trabalho é diferente, assim, o melhor conselho é fazer experiências com o particionamento para ver o que funciona melhor para sua carga de trabalho.Each workload is different so the best advice is to experiment with partitioning to see what works best for your workload. Considere uma granularidade menor do que pode ter funcionado para você no SQL Server.Consider lower granularity than what may have worked for you in SQL Server. Por exemplo, considere usar partições semanais ou mensais, em vez de partições diárias.For example, consider using weekly or monthly partitions rather than daily partitions.

Confira também Particionamento de tabelasSee also Table partitioning

Minimizar os tamanhos das transaçõesMinimize transaction sizes

As instruções INSERT, UPDATE e DELETE são executadas em uma transação e quando falham, devem ser revertidas.INSERT, UPDATE, and DELETE statements run in a transaction and when they fail they must be rolled back. Para minimizar a possibilidade de uma reversão longa, minimize os tamanhos das transações sempre que possível.To minimize the potential for a long rollback, minimize transaction sizes whenever possible. Isso pode ser feito dividindo as instruções INSERT, UPDATE e DELETE em partes.This can be done by dividing INSERT, UPDATE, and DELETE statements into parts.

Por exemplo, se você tiver uma inserção que espera levar 1 hora, se possível, divida a inserção em quatro partes, que será executada em 15 minutos.For example, if you have an INSERT that you expect to take 1 hour, if possible, break up the INSERT into four parts, which will each run in 15 minutes. Aproveite os casos especiais de Registro em Log Mínimo, como CTAS, TRUNCATE, DROP TABLE ou INSERT, para esvaziar as tabelas, reduzindo o risco de reversão.Leverage special Minimal Logging cases, like CTAS, TRUNCATE, DROP TABLE or INSERT to empty tables, to reduce rollback risk.

Outra maneira de eliminar as reversões é usar as operações de Metadados Somente, como a troca de partição para o gerenciamento de dados.Another way to eliminate rollbacks is to use Metadata Only operations like partition switching for data management. Por exemplo, em vez de executar uma instrução DELETE para excluir todas as linhas em uma tabela onde order_date foi em outubro de 2001, você poderia particionar os dados mensalmente e, em seguida, trocar a partição com os dados por uma partição vazia a partir de outra tabela (consulte exemplos de ALTER TABLE).For example, rather than execute a DELETE statement to delete all rows in a table where the order_date was in October of 2001, you could partition your data monthly and then switch out the partition with data for an empty partition from another table (see ALTER TABLE examples).

Para tabelas não particionadas, considere usar um CTAS para gravar os dados que você deseja manter em uma tabela em vez de usar DELETE.For unpartitioned tables, consider using a CTAS to write the data you want to keep in a table rather than using DELETE. Se um CTAS levar o mesmo período de tempo, será uma operação muito mais segura para ser executada, pois ele tem o registro em log de transações mínimo e poderá ser cancelado rapidamente, se necessário.If a CTAS takes the same amount of time, it is a much safer operation to run as it has minimal transaction logging and can be canceled quickly if needed.

Confira também Compreendendo as transações, Otimizando as transações, Particionamento de tabelas, TRUNCATE TABLE, ALTER TABLE, Create table as select (CTAS)See also Understanding transactions, Optimizing transactions, Table partitioning, TRUNCATE TABLE, ALTER TABLE, Create table as select (CTAS)

Reduzir tamanhos de resultados de consultaReduce query result sizes

Esta etapa ajuda a evitar problemas do lado do cliente causados por grandes resultados de consulta.This step helps you avoid client-side issues caused by large query result. Você pode editar sua consulta para reduzir o número de linhas retornadas.You can edit your query to reduce the number of rows returned. Algumas ferramentas de geração de consulta permitem que você adicione a sintaxe "Top N" a cada consulta.Some query generation tools allow you to add “top N” syntax to each query. Você também pode CETAS o resultado da consulta a uma tabela temporária e, em seguida, usar a exportação do polybase para o processamento de nível inferior.You can also CETAS the query result to a temporary table and then use PolyBase export for the downlevel processing.

Use o menor tamanho de coluna possívelUse the smallest possible column size

Ao definir o DDL, usar o menor tipo de dados que dará suporte aos seus dados melhorará o desempenho da consulta.When defining your DDL, using the smallest data type that will support your data will improve query performance. Isso é especialmente importante para as colunas CHAR e VARCHAR.This is especially important for CHAR and VARCHAR columns. Se o maior valor em uma coluna for 25 caracteres, então, defina a coluna como VARCHAR(25).If the longest value in a column is 25 characters, then define your column as VARCHAR(25). Evite definir todas as colunas de caractere para um tamanho grande padrão.Avoid defining all character columns to a large default length. Além disso, defina as colunas como VARCHAR quando isso for realmente necessário em vez de usar NVARCHAR.In addition, define columns as VARCHAR when that is all that is needed rather than use NVARCHAR.

Confira também Visão geral das tabelas, Tipos de dados da tabela, CREATE TABLESee also Table overview, Table data types, CREATE TABLE

Usar tabelas de heap temporárias para dados transitóriosUse temporary heap tables for transient data

Quando os dados são temporários temporariamente, você pode descobrir que usar uma tabela de heap tornará o processo geral mais rápido.When you are temporarily landing data, you may find that using a heap table will make the overall process faster. Se estiver carregando os dados apenas para prepará-los antes de executar mais transformações, carregar a tabela na tabela de heap será muito mais rápido que carregar os dados em uma tabela columnstore clusterizado.If you are loading data only to stage it before running more transformations, loading the table to heap table will be much faster than loading the data to a clustered columnstore table.

Além disso, o carregamento de dados em uma tabela temporária também carregará muito mais rapidamente do que carregar uma tabela em um armazenamento permanente.In addition, loading data to a temp table will also load much faster than loading a table to permanent storage. As tabelas temporárias começam com um "#" e só podem ser acessadas pela sessão que a criou, para que elas só possam funcionar em cenários limitados.Temporary tables start with a "#" and are only accessible by the session that created it, so they may only work in limited scenarios. As tabelas de heap são definidas na cláusula WITH de CREATE TABLE.Heap tables are defined in the WITH clause of a CREATE TABLE. Se você usar uma tabela temporária, lembre-se também de criar estatísticas nela.If you do use a temporary table, remember to create statistics on that temporary table too.

Confira também Tabelas temporárias, CREATE TABLE, CREATE TABLE AS SELECTSee also Temporary tables, CREATE TABLE, CREATE TABLE AS SELECT

Otimizar tabelas columnstore clusterizadasOptimize clustered columnstore tables

Os índices columnstore clusterizados são uma das maneiras mais eficientes de armazenar seus dados na análise de SQL.Clustered columnstore indexes are one of the most efficient ways you can store your data in SQL Analytics. Por padrão, as tabelas na análise de SQL são criadas como ColumnStore clusterizado.By default, tables in SQL Analytics are created as Clustered ColumnStore. É importante ter um segmento de boa qualidade para obter o melhor desempenho para as consultas nas tabelas columnstore.To get the best performance for queries on columnstore tables, having good segment quality is important.

Quando as linhas são gravadas nas tabelas columnstore sob pressão da memória, a qualidade do segmento columnstore pode ficar prejudicada.When rows are written to columnstore tables under memory pressure, columnstore segment quality may suffer. A qualidade de segmento pode ser medida pelo número de linhas em um grupo de linhas compactado.Segment quality can be measured by number of rows in a compressed Row Group. Confira as Causas da má qualidade de índice columnstore no artigo sobre Índices de tabela para obter instruções passo a passo sobre como detectar e melhorar a qualidade do segmento para as tabelas columnstore clusterizadas.See the Causes of poor columnstore index quality in the Table indexes article for step by step instructions on detecting and improving segment quality for clustered columnstore tables.

Como os segmentos columnstore de alta qualidade são importantes, é uma boa ideia usar IDs de usuários que estão na classe de recursos médio ou grande para carregar dados.Because high-quality columnstore segments are important, it's a good idea to use users IDs that are in the medium or large resource class for loading data. Usar unidades de data warehouse menores significa que você deseja atribuir uma classe de recursos maior ao usuário que está carregando.Using lower data warehouse units means you want to assign a larger resource class to your loading user.

Como as tabelas columnstore geralmente não enviam dados para um segmento columnstore compactado até que haja mais de 1 milhão linhas por tabela e cada tabela de análise de SQL seja particionada em tabelas 60, como uma regra prática, as tabelas columnstore não beneficiarão uma consulta, a menos que a tabela tem mais de 60 milhões linhas.Since columnstore tables generally won't push data into a compressed columnstore segment until there are more than 1 million rows per table and each SQL Analytics table is partitioned into 60 tables, as a rule of thumb, columnstore tables won't benefit a query unless the table has more than 60 million rows. Para a tabela com menos de 60 milhões de linhas, talvez não faça sentido ter um índice columnstore.For table with less than 60 million rows, it may not make any sense to have a columnstore index. Também pode não prejudicar.It also may not hurt.

Além disso, se você particionar seus dados, desejará considerar que cada partição precisará ter 1 milhão de linhas para se beneficiar de um índice columnstore clusterizado.Furthermore, if you partition your data, then you will want to consider that each partition will need to have 1 million rows to benefit from a clustered columnstore index. Se uma tabela tiver 100 partições, será necessário ter pelo menos 6 bilhões de linhas para se beneficiar de um columnstore clusterizado (60 distribuições * 100 partições * 1 milhão de linhas).If a table has 100 partitions, then it will need to have at least 6 billion rows to benefit from a clustered columns store (60 distributions * 100 partitions * 1 million rows).

Se a tabela não tiver as 6 bilhões de linhas neste exemplo, reduza o número de partições ou considere usar uma tabela de heap.If your table does not have 6 billion rows in this example, either reduce the number of partitions or consider using a heap table instead. Também pode valer a pena testar para ver se um melhor desempenho pode ser obtido com uma tabela de heap com índices secundários em vez de uma tabela columnstore.It also may be worth experimenting to see if better performance can be gained with a heap table with secondary indexes rather than a columnstore table.

Ao consultar uma tabela columnstore, as consultas serão executadas mais rapidamente se você selecionar apenas as colunas necessárias.When querying a columnstore table, queries will run faster if you select only the columns you need.

Confira também Índices de tabela, Guia dos índices columnstore e Recriando índices columnstoreSee also Table indexes, Columnstore indexes guide, Rebuilding columnstore indexes

Usar uma classe maior de recursos para melhorar o desempenho da consultaUse larger resource class to improve query performance

A análise de SQL usa grupos de recursos como uma maneira de alocar memória para consultas.SQL Analytics uses resource groups as a way to allocate memory to queries. Para uso pronto, todos os usuários são atribuídos à classe de recursos pequena, que concede 100 MB de memória por distribuição.Out of the box, all users are assigned to the small resource class, which grants 100 MB of memory per distribution. Como sempre há 60 distribuições e cada distribuição recebe um mínimo de 100 MB, a alocação de memória total de todo o sistema é de 6.000 MB ou menos de 6 GB.Since there are always 60 distributions and each distribution is given a minimum of 100 MB, system wide the total memory allocation is 6,000 MB, or just under 6 GB.

Determinadas consultas, como junções grandes ou cargas para as tabelas columnstore clusterizado, se beneficiarão das alocações de memória maiores.Certain queries, like large joins or loads to clustered columnstore tables, will benefit from larger memory allocations. Algumas consultas, como as varreduras puras, não terão qualquer benefício.Some queries, like pure scans, will see no benefit. No lado do inverso, a utilização de classes de recursos maiores reduz a simultaneidade, portanto, você desejará considerar esse impacto antes de mover todos os usuários para uma classe de recursos grande.On the flip side, utilizing larger resource classes reduces concurrency, so you will want to take this impact into consideration before moving all of your users to a large resource class.

Veja também Classes de recursos para gerenciamento de carga de trabalhoSee also Resource classes for workload management

Usar uma Classe de Recurso Menor para Aumentar a SimultaneidadeUse Smaller Resource Class to Increase Concurrency

Se você estiver percebendo que as consultas do usuário parecem ter um longo atraso, pode ser que os usuários estejam executando em classes de recursos maiores e consumam muitos slots de simultaneidade, fazendo com que outras consultas sejam enfileiradas.If you are noticing that user queries seem to have a long delay, it could be that your users are running in larger resource classes and are consuming many concurrency slots causing other queries to queue up. Para saber se as consultas dos usuários estão em fila, execute SELECT * FROM sys.dm_pdw_waits para ver se alguma linha é retornada.To see if users queries are queued, run SELECT * FROM sys.dm_pdw_waits to see if any rows are returned.

Consulte também classes de recursos para gerenciamento de carga de trabalho, Sys. dm_pdw_waitsSee also Resource classes for workload management, sys.dm_pdw_waits

Outros recursosOther resources

Confira também nosso artigo de Solução de problemas para conhecer os problemas e as soluções comuns.Also see our Troubleshooting article for common issues and solutions.

Se você não encontrou o que está procurando neste artigo, tente usar "Pesquisar documentos" no lado esquerdo desta página para pesquisar todos os documentos do Azure Synapse.If you didn't find what you are looking for in this article, try using the "Search for docs" on the left side of this page to search all of the Azure Synapse documents. O Fórum do Azure Synapse é um lugar para você fazer perguntas para outros usuários e para o grupo de produtos do Azure Synapse.The Azure Synapse Forum is a place for you to ask questions to other users and to the Azure Synapse Product Group.

Monitoramos ativamente esse fórum para garantir que suas perguntas sejam respondidas por outro usuário ou um de nós.We actively monitor this forum to ensure that your questions are answered either by another user or one of us. Se você preferir fazer suas perguntas em Stack Overflow, também temos um Fórum do Azure Synapse Stack Overflow.If you prefer to ask your questions on Stack Overflow, we also have an Azure Synapse Stack Overflow Forum.

Por fim, use a página de comentários do Azure Synapse para fazer solicitações de recursos.Finally, please do use the Azure Synapse Feedback page to make feature requests. Adicionar suas solicitações ou recomendar outras solicitações realmente nos ajudará a priorizar os recursos.Adding your requests or up-voting other requests really helps us prioritize features.