none
Desempenho com Linked Server - Dúvida RRS feed

  • Question

  • Bom dia pessoal. Tenho uma dúvida com relação ao desempenho usando Linked Server. Vejam meu cenário:

    Preciso usar um linked server em um servidor em outra unidade/cidade, porém o que acontece é que o desempenho fica muito inferior, um select em uma tabela que tem 160.000 registros foi usado para o teste:

    1. A consulta local retorna em 5s;
    2. No servidor da outra cidade (testes com duas operadoras de internet e dois servidores diferentes) a mesma consulta através de um linked server retorna de 2m a 3m;
    3. Nesse mesmo servidor da outra cidade, ao invés de usar o linked server, usei o acesso diretamente pelo Management Studio e a consulta termina em 5s;
    4. Em um servidor na mesma rede do servidor de origem a consulta com ou sem linked server retorna em 5s;

    Ou seja, o único meio que demora é usando o LS e estando em outra localidade. Observando a taxa de download percebi que, ao usar o LS em outra cidade a taxa não passa de 3Mbps, enquanto se realizado sem LS (item 3 acima) a taxa passa de 50Mbps. Isso não está fazendo sentido para mim :(

    Seria uma particularidade do LS? Há algo que se possa fazer nesse caso?

    Obrigado.

    Abraço.


    jeudi 15 avril 2021 11:14

Toutes les réponses

  • Fábio,

    Então, antes de debruçarmos nas questões de rede, gostaria de saber mais detalhes sobre a versão do SQL Server, em adicional para qual destino o Linked Server esta sendo configurado.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    samedi 17 avril 2021 12:33
    Modérateur
  • Olá Junior, obrigado pelo retorno.

    A versão do SQL é Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64)  em ambos.

    Uma atualização sobre o problema: Agora mesmo usando o Management Studio para se conectar diretamente no outro servidor, o tempo do select está parecido, cerca de 2m, isso não acontecia antes e não entendi pq mudou esse comportamento.

    As 3 maneiras que estou testando o Select são:

    • SELECT * FROM OPENQUERY("LS",'SELECT * FROM [BANCO].[DBO].[TABELA]'); (Com LS)
    • SELECT * FROM [LS].[BANCO].[DBO].[TABELA]; (Com LS)
    • USE [BANCO]; SELECT * FROM [dbo].[TABELA]; (Sem LS)

    Fiz o teste de banda, inclusive compartilhando um arquivo entre esses servidores e o tráfego é muito maior do que quando faço a consulta SQL. Na consulta não passa de 4Mbps enquanto downloads no geral ou trafegando qualquer arquivo entre esses dois servidores o tráfego bate no teto de um dos links (50Mbps).

    mardi 20 avril 2021 16:34
  • Fábio,

    Obrigado pelo retorno.

    Gostaria de fazer uma observação construtiva, sem ter a noção do volume de dados que você esta trabalhando.

    Aplicar um Select * ainda mais sem a cláusula Where não é uma boa prática, ainda mais quando estamos fazendo acesso de dados na camada de rede.

    Pois bem, quando fazemos uso do OpenQuery, estamos dizendo para o SQL Server abrir a Query que se encontra dentro dos parentes e realizar o processamento para depois retornar os dados, particularmente eu trocaria pelo OpenRowSet, o qual justamente nos permite trabalhar com mais opções de controle de erros e volume de dados, ainda mais se tivermos a necessidade de trabalhar com arquivos.

    Em adicional o processamento é realizado no servidor destino e somente os dados são retornados, ao contrário do OpenQuery em que o processamento é realizado e se aguardo no retorno dos dados para se encerrar o processo.

    Você chegou a analisar as possibilidades de utilizar o OpenQuery ou OpenDataSource?

    OPENROWSET (Transact-SQL) - SQL Server | Microsoft Docs

    OPENDATASOURCE (Transact-SQL) - SQL Server | Microsoft Docs


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    jeudi 22 avril 2021 11:31
    Modérateur
  • Bom dia Junior.

    Grato pelas observações. O "Select *" foi só para realizar os testes. Agora pela manhã testei novamente e pelo LS o tempo é muito maior, o tráfego na interface não passa de 3,5Mbps durante a consulta (com ou sem OpenQuery), enquanto se acessar pelo Management Studio na mesma maquina termina em poucos segundos a consulta e o tráfego chega no máximo da rede (50Mbps).

    Não estou entendendo pq um é muito mais rápido que o outro e como preciso usar o LS esse desempenho baixo atrapalha bastante.
    lundi 26 avril 2021 11:59
  • Fábio,

    Justamente a questão do uso do Linked Server faz com que o SQL Server trabalhe com os drivers ODBC e OLEDB, os quais para este tipo de acesso não apresentam uma boa performance, ao contrário de quando fazemos acesso via Management Studio, estamos utilizando os canais de comunicação diretos do SQL Server.

    Ao usar o SSMS para acesso, estamos fazendo uso dos recurso do TDS - Tabular Data Stream, que é o padrão de troca de dados na camada TCP/IP, o uso do Linked Server trabalha com base na construção de um túnel, ao de uma forma bem genérica da mesma forma que uma VPN, e isso impacta diretamente na performance.

    Seria interessante verificar as questões de regras de firewall no seu ambiente, em adicional quais os protocolos de rede estão configurados para que você possa trabalhar.

    Se você quiser poderia postar a tela com as configurações do seu Linked Server para que possamos fazer uma validação.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    lundi 26 avril 2021 17:08
    Modérateur
  • Existe VPN entre os dois sites? O link é dedicado?

    Fabiano Carvalho

    mercredi 28 avril 2021 11:06
  • Olá Junior,

    entendi, era essa a dúvida, se haveria diferenças entre um método e outro que pudesse implicar em desempenho.

    Obrigado pelas respostas.

    jeudi 29 avril 2021 12:38
  • Oi Fabiano,

    os links são dedicados, mas testes em outros não dedicados o resultado foi o mesmo, com e sem VPN o resultado foi o mesmo também.

    Abs

    jeudi 29 avril 2021 12:41
  • Fabio,

    Ok, eu que agradeço.

    Eu estou querendo entender melhor as suas configurações relacionadas ao Linked Server.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    jeudi 29 avril 2021 14:20
    Modérateur