As consultas entre bancos de dados são caras no SQL Server? Todos os bancos de dados estão na mesma instância.
sql-server
Jonathan Allen
fonte
fonte
Respostas:
Desculpe, não tenho reputação suficiente para comentar sobre a pergunta, mas, pela minha experiência, se o aplicativo cliente gerar uma transação para uma consulta que usa junções de banco de dados cruzadas, isso promoveria a transação a ser distribuída e teria a sobrecarga de uma transação DTC .
A sobrecarga do DTC nesse caso pode ser vista como negativa para o desempenho. Geralmente, a diferença seria insignificante, embora a Microsoft descreva as transações DTC como tais:
... o que sugere uma degradação do desempenho se o servidor não puder oferecer os recursos necessários.
Apenas para esclarecer, o artigo acima descreve transações locais promovidas quando sistemas remotos são introduzidos, mas vi que esse é o caso de transações no mesmo servidor ao usar consultas entre bancos de dados.
Como Thomas Stringer aponta em seu comentário, haverá uma sobrecarga extra na autenticação, embora eu pense que, como isso será orientado pelo SID, haverá uma sobrecarga mínima lá, a menos que você precise usar credenciais separadas para acessar o outro banco de dados.
Se houvesse diferença nas configurações do banco de dados que causassem sobrecarga adicional na junção que poderia impactar maior que as sugestões anteriores - por exemplo, agrupamento de banco de dados. O agrupamento do banco de dados pode se manifestar como uma diferença funcional, não apenas como uma diferença de desempenho.
Eu acho que Aaron tem o argumento mais forte para desempenho, com o otimizador não tendo a vantagem de usar relacionamentos para consultas entre bancos de dados, enquanto independente em um banco de dados você pode usar relacionamentos para sua vantagem.
fonte
If a local transaction spans two or more databases on the same instance of the Database Engine, the instance uses an internal two-phase commit to commit all of the databases involved in the transaction.
- Se você encontrou o contrário, relate um erro no Connect com etapas claras de reprodução.No SQL Server 2014, as tabelas com otimização de memória não suportam transações entre bancos de dados. Você não pode acessar outro banco de dados da mesma transação ou da mesma consulta que também acessa uma tabela com otimização de memória. Você não pode copiar facilmente dados de uma tabela em um banco de dados para uma tabela com otimização de memória em outro banco de dados. http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx Transações distribuídas e entre bancos de dados não são suportadas para espelhamento de banco de dados / AOAG. http://technet.microsoft.com/en-us/library/hh393530.aspx . Se você usar o encadeamento de propriedade, esteja ciente dos riscos de segurança http://msdn.microsoft.com/en-us/library/ms188676.aspx
fonte