As consultas são extremamente rápidas localmente, extremamente lentas em máquinas remotas

3

Temos uma consulta que leva de 24 a 38 segundos para ser executada quando você a executa do SQL Server Management Studio a partir de uma máquina remota, mas em menos de um segundo é executada quando é executada localmente usando o SQL Server Management Studio.

SQL Server 2005 Windows Server 2003 R2 Standard Edition Virtualizado no VMWare 3.5.0 com 4GB de Ram e uma CPU Única.

Também adicionarei que a mesma consulta é executada lentamente a partir de aplicativos - não apenas do SQL Mgmt Studio.

Alguma idéia de por que ele pode funcionar super rápido, mas lento em máquinas remotas?

Editar: o SQL Server manipula os resultados de forma diferente? Pergunto isso porque o fornecedor cujo software estava causando o problema adicionou índices às tabelas que fizeram com que os resultados fossem exibidos, perguntando rapidamente remotamente, como faziam localmente. Eu usei o SQL Profiler para analisar o tempo que as consultas estavam levando para concluir e as remotas estavam definitivamente demorando mais para serem concluídas e agora elas parecem estar tomando o mesmo tempo após a adição de índices.

    
por nvahalik 14.07.2009 / 21:01

3 respostas

2

Minha expectativa seria uma das seguintes:

  • Muitos dados estão sendo retornados e demoramos muito para que os dados cruzem o fio.
  • Problema de desempenho com a máquina remota.

Clique no botão da barra de ferramentas na janela de consulta "Incluir estatísticas do cliente" e observe o que é retornado após a execução da consulta. Você pode ver quantos bytes foram recebidos do servidor, tempo de execução, etc.

Client Execution Time                                   12:08:38
Query Profile Statistics                                                                        
  Number of INSERT, DELETE and UPDATE statements        0
  Rows affected by INSERT, DELETE, or UPDATE statements 0
  Number of SELECT statements                           3
  Rows returned by SELECT statements                    15
  Number of transactions                                0
Network Statistics                                                                      
  Number of server roundtrips                           3
  TDS packets sent from client                          3
  TDS packets received from server                      7
  Bytes sent from client                                240
  Bytes received from server                            21306
Time Statistics                                                                 
  Client processing time                                31
  Total execution time                                  61093
  Wait time on server replies                           61062

Editar:

Seu comentário diz que está retornando apenas 39 linhas, portanto, provavelmente não é uma transferência de dados entre o cliente e o servidor.

Eu consideraria a execução do SQL Profiler no servidor filtrado para o seu cliente e ver o que poderia estar acontecendo. Aqui estão alguns bons artigos sobre o uso do SQL Profiler:

por 14.07.2009 / 21:16
2

Por padrão, o SQL Server se conecta usando memória compartilhada ao fazer uma conexão local e, em seguida, TCP / IP ou Named Pipes ao se conectar remotamente. Para testar se é algo relacionado ao protocolo que está sendo usado, tente se conectar localmente, mas force-o a usar TCP / IP ou Named Pipes.

  1. abra o Management Studio
  2. Clique em Conectar- > Mecanismo de banco de dados
  3. Clique em Opções
  4. Em Propriedades da Conexão, altere o Protocolo de Rede

Sua consulta ainda é executada com a mesma lentidão?

Além disso, quando você se conecta remotamente, a conexão inicial fica lenta para conectar? Meu pensamento aqui é que poderia ser autenticação.

    
por 14.07.2009 / 23:28
0

Como é o desempenho quando você tenta se conectar à máquina de outra maneira, como área de trabalho remota, etc.? Se tudo estiver lento ao tentar acessar a máquina, você pode ter alguns problemas de rede, como uma placa de rede / cabo quebrado, problemas de roteador / firewall etc. (Eu vi alguns servidores com o modo 10Mbit em uma placa de rede Gigabit): D)

Você usa o mesmo usuário quando você executa a partir do servidor local, como quando você faz isso remoto? É uma conta AD ou conta SQL?

Procure por waittypes em Sys.dm_os_waiting_tasks

link

    
por 14.07.2009 / 23:23