AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 153467
Accepted
AcePL
AcePL
Asked: 2016-10-28 01:31:40 +0800 CST2016-10-28 01:31:40 +0800 CST 2016-10-28 01:31:40 +0800 CST

Consulta do SQL Server em vários servidores vinculados - desempenho péssimo

  • 772

Existem três bancos de dados diferentes em três servidores vinculados separados SQL0( SQL1hospedando 2 dbs) SQL2(hospedando 1 db). SQL0atua como um servidor de relatórios e hospedará todos os bancos de dados em questão (método TBD - talvez replicação, talvez mais), mas como os dados serão antigos para alguns fins de auditoria (<24H), ainda será necessário executar algumas consultas ao vivo dados.

Duas configurações:

Configuração 1. Localhost\SQL0- vinculado a SQL1e SQL2(cada um usando suas respectivas sacredenciais para se conectar)

Configuração 2. SQL1vinculada a SQL2(novamente, usando sacredenciais)

A consulta em questão une (por enquanto) 8 tabelas nesses três bancos de dados. No futuro, haverá outro servidor, outro banco de dados e várias outras tabelas unidas na consulta, executadas regularmente pelo agente e os resultados enviados por e-mail. Geralmente retorna menos de 100 linhas, mas é limitado TOP 10durante o desenvolvimento.

Por que essa consulta SQL2leva 3s ou menos para ser executada, mas 105s quando executada SQL0? Contanto que seja apenas tráfego de rede, estou disposto a desconsiderar a execução 30 vezes mais longa, mas se estiver afetando o desempenho dos servidores vinculados, preciso encontrar a estatística da solução.

Todos os servidores estão na mesma LAN, mas SQL2em outro prédio conectado via VPN.

Tudo está no SSMS, em uma máquina conectada na mesma rede que todas as outras, sem visualizações, sem servidores vinculados a servidores vinculados ou outras "complicações"; Eu tenho acesso a todos os servidores como sa.

Planos de consulta (reais), SQL2 e SQL0 respectivamente: Plano de consulta no SQL2 e Plano de consulta no SQL0

sql-server sql-server-2012
  • 2 2 respostas
  • 2163 Views

2 respostas

  • Voted
  1. Best Answer
    Duane Lawrence
    2016-10-28T05:14:23+08:002016-10-28T05:14:23+08:00

    O baixo desempenho é porque você está usando o servidor vinculado. Há uma constante diferença de opinião entre desenvolvedores e administradores de banco de dados. Os administradores de banco de dados sabem que as conexões de servidores vinculados são lentas. Os desenvolvedores os querem porque resolvem problemas para eles. Já fui desenvolvedor e administrador de banco de dados e lembro que, como desenvolvedor, pressionei para adicionar o servidor vinculado. Como administrador de banco de dados nos últimos 20 anos, tenho problemas para fotografar o desempenho ruim milhares de vezes para descobrir que uma conexão de servidor vinculada é a causa.

    Use a replicação transacional para obter dados em tempo real para seu servidor de relatório. Isso eliminará o atraso de 24 horas e eliminará a necessidade de usar o servidor vinculado. Você também terá um ganho de desempenho em seus servidores de origem porque as consultas de relatórios somente leitura não competirão com as transações ativas que administram sua empresa.

    • 3
  2. Marcin Gminski
    2016-10-28T14:44:19+08:002016-10-28T14:44:19+08:00

    O que você pode estar enfrentando é o fato de que, ao consultar o servidor remoto para JOIN em tabelas locais ou aplicar a cláusula WHERE, todo o conjunto de dados está sendo trazido de volta pela rede e, em seguida, filtrado localmente.

    Você pode estar melhor com OPENQUERY, caso em que a cláusula WHERE será executada no host remoto e somente o subconjunto necessário será retornado.

    Se você precisar de junções entre servidores, deve começar a procurar ferramentas ETL.

    • 1

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve