Auteur de questions
Desempenho com Linked Server - Dúvida

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:
- A consulta local retorna em 5s;
- 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;
- 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;
- 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.
- Modifié Fábio B Z jeudi 15 avril 2021 11:28
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]
-
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).
- SELECT * FROM OPENQUERY("LS",'SELECT * FROM [BANCO].[DBO].[TABELA]'); (Com LS)
-
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]
-
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.
-
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]
-
-
-
-
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]