Exportar (0) Imprimir
Expandir Tudo
Este tópico ainda não foi avaliado como - Avalie este tópico

Monitorando o Banco de dados SQL do Windows Azure usando exibições de gerenciamento dinâmico

O Microsoft Banco de dados SQL do Windows Azure habilita um subconjunto de exibições de gerenciamento dinâmico para diagnosticar os problemas de desempenho, que podem ser causados por consultas bloqueadas ou de execução longa, gargalos de recursos, planos de consulta ruins etc. Este tópico fornece informações sobre como detectar problemas de desempenho comuns usando as exibições de gerenciamento dinâmico no Banco de dados SQL do Windows Azure.

O Banco de dados SQL do Windows Azure oferece suporte parcial a três categorias de exibições de gerenciamento dinâmico:

  • Exibições de gerenciamento dinâmico relacionadas ao banco de dados.

  • Exibições de gerenciamento dinâmico relacionadas à execução.

  • Exibições de gerenciamento dinâmico relacionadas à transação.

Para obter uma lista das exibições de gerenciamento dinâmico com total suporte no Banco de dados SQL do Windows Azure, consulte Exibições do sistema (Banco de dados SQL do Windows Azure). Para obter informações detalhadas sobre exibições de gerenciamento dinâmico, consulte Exibições e funções de gerenciamento dinâmico (Transact-SQL) nos Manuais Online do SQL Server.

Permissões

No Banco de dados SQL do Windows Azure, consultar uma exibição de gerenciamento dinâmico requer permissões VIEW DATABASE STATE. A permissão VIEW DATABASE STATE retorna informações sobre todos os objetos do banco de dados atual.

Para conceder a permissão VIEW DATABASE STATE a um usuário de banco de dados específico, execute a seguinte consulta:

GRANT VIEW DATABASE STATE TO database_user;

Em uma instância local do SQL Server, as exibições de gerenciamento dinâmico retornam informações sobre o estado do servidor. No Banco de dados SQL do Windows Azure, elas retornam informações relacionadas somente ao seu banco de dados lógico atual.

noteObservação
Na execução das exibições sys.dm_exec_requests e sys.dm_exec_sessions, se o usuário tiver a permissão VIEW DATABASE STATE no banco de dados, ele verá todas as sessões em execução no banco de dados; caso contrário, ele verá somente a sessão atual.

Calculando o tamanho do banco de dados

Você será cobrado pela edição e a capacidade dos seus bancos de dados do Banco de dados SQL. Se o tamanho do seu banco de dados atingir seu MAXSIZE, você receberá o código de erro 40544. Você não poderá inserir nem atualizar dados, nem criar novos objetos (como tabelas, procedimentos armazenados, exibições e funções) a menos que você atualize o MAXSIZE do seu banco de dados ou exclua dados. Para obter mais informações, consulte Contas e cobrança no Banco de dados SQL do Windows Azure. A exibição sys.dm_db_partition_stats retorna informações sobre a contagem de linhas e páginas de cada partição no banco de dados, que podem ser usadas para calcular o tamanho do banco de dados.

A consulta a seguir retorna o tamanho de seu banco de dados (em megabytes):

-- Calculates the size of the database. 

SELECT SUM(reserved_page_count)*8.0/1024

FROM sys.dm_db_partition_stats; 

GO

A consulta a seguir retorna o tamanho de objetos individuais (em megabytes) de seu banco de dados:

-- Calculates the size of individual database objects. 

SELECT sys.objects.name, SUM(reserved_page_count) * 8.0 / 1024

FROM sys.dm_db_partition_stats, sys.objects 

WHERE sys.dm_db_partition_stats.object_id = sys.objects.object_id 

GROUP BY sys.objects.name; 

GO

Monitorando conexões

Você pode usar a exibição sys.dm_exec_connections (Banco de Dados SQL do Windows Azure) para recuperar informações sobre as conexões estabelecidas a um servidor específico do Banco de dados SQL e os detalhes de cada conexão. Além disso, a exibição sys.dm_exec_sessions é útil na recuperação de informações sobre todas as conexões de usuário e tarefas internas ativas.

A consulta a seguir recupera informações sobre a conexão atual:


-- monitor connections
SELECT
      e.connection_id,
      s.session_id,
      s.login_name,
      s.last_request_end_time,
      s.cpu_time
FROM
      sys.dm_exec_sessions s
      INNER JOIN sys.dm_exec_connections e
      ON s.session_id = e.session_id
GO

Monitorando o desempenho da consulta

Consultas de execução lenta ou longa podem consumir recursos do sistema significativos. Esta seção demonstra como usar as exibições de gerenciamento dinâmico para detectar alguns problemas de desempenho de consulta. Para obter informações detalhadas, consulte o artigo Solução de problemas de desempenho no SQL Server 2005 no Microsoft TechNet.

Localizando as N consultas principais

O exemplo a seguir retorna informações sobre as cinco principais consultas classificadas por tempo médio de CPU. Este exemplo agrega as consultas de acordo com o hash de consulta, para que as consultas logicamente equivalentes sejam agrupadas pelo respectivo consumo de recursos cumulativo.


-- Find top 5queries
SELECT TOP 5 query_stats.query_hash AS "Query Hash", 
    SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",
    MIN(query_stats.statement_text) AS "Statement Text"
FROM 
    (SELECT QS.*, 
    SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
    ((CASE statement_end_offset 
        WHEN -1 THEN DATALENGTH(st.text)
        ELSE QS.statement_end_offset END 
            - QS.statement_start_offset)/2) + 1) AS statement_text
     FROM sys.dm_exec_query_stats AS QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC;
GO

Monitorando consultas bloqueadas

Consultas de execução lenta ou longa podem contribuir para o consumo excessivo de recursos e ser a consequência de consultas bloqueadas. A causa do bloqueio pode ser criação de aplicativo de má qualidade, planos de consulta ruins, falta de índices úteis e assim por diante. Você pode usar a exibição sys.dm_tran_locks para obter informações sobre a atividade de bloqueio atual em seu Banco de dados SQL. Para obter um código de exemplo, consulte sys.dm_tran_locks (Transact-SQL) nos Manuais Online do SQL Server.

Monitorando planos de consulta

Um plano de consulta ineficiente também pode aumentar consumo de CPU. O exemplo a seguir usa a exibição sys.dm_exec_query_stats para determinar qual consulta usa a CPU mais cumulativa.


-- Monitor query plans
SELECT
    highest_cpu_queries.plan_handle,  
    highest_cpu_queries.total_worker_time, 
    q.dbid, 
    q.objectid, 
    q.number, 
    q.encrypted, 
    q.[text] 
FROM 
    (SELECT TOP 50  
        qs.plan_handle,  
        qs.total_worker_time 
     FROM 
        sys.dm_exec_query_stats qs 
     ORDER BY qs.total_worker_time desc) AS highest_cpu_queries 
     CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS q 
ORDER BY highest_cpu_queries.total_worker_time desc

Consulte também

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.