¿Son caras las consultas entre bases de datos en SQL Server?


15

¿Son caras las consultas entre bases de datos en SQL Server? Todas las bases de datos están en la misma instancia.


3
Nunca he encontrado ninguna evidencia de que lo sean, no. Las únicas excepciones en las que podría pensar (pero que no he probado) son (a) que el optimizador no puede beneficiarse de relaciones que no pueden ser explícitas (por ejemplo, puede beneficiarse de definiciones de claves externas, que no pueden existir cruzadas -database) o (b) hay problemas con las estadísticas que son un problema en los servidores vinculados, pero imagino que puede haber casos en los que incluso a través de la base de datos un usuario que ejecuta una consulta no puede ver las estadísticas. No sé si (b) es real o no; no lo he probado, solo sé que puede ser un problema grave en todos los servidores.
Aaron Bertrand

2
Estoy con @AaronBertrand en este caso, no he visto nada que diga definitivamente que hay un gran éxito. Lo único que podría pensar que agregaría algo a la ecuación sería posiblemente alguna forma de operaciones de autenticación, pero dudaría que fuera significativo. Solo soy yo pensando en voz alta, no estoy seguro. Su mejor apuesta aquí sería configurar una prueba / punto de referencia automatizado con una base de datos cruzada, luego con la misma consulta entre bases de datos y ejecutar esa prueba miles de veces. Obtenga el promedio, el máximo, etc. y tome su decisión basándose en eso.
Thomas Stringer

1
@thomas ¿podrías ver una diferencia definitivamente al mirar los planes de consulta reales?
Max Vernon

@ Jonathan: la definición de "caro" es relativa a las alternativas. Entonces, ¿qué estás tratando de hacer y qué estás decidiendo? Sin más información, es muy posible obtener una respuesta que parece correcta a esta pregunta al pie de la letra, pero al mismo tiempo es absolutamente incorrecta para su situación. Todo tiene un costo, pero ese costo puede ser barato o costoso dependiendo de con qué lo esté comparando. Y los costos de consulta (es decir, tiempo, contención, etc.) deben sopesarse con los costos de mantenimiento, costos de hardware, etc.
Solomon Rutzky

Me gustaría saber el costo en comparación con una consulta en la misma tabla.
Jonathan Allen

Respuestas:


6

Lo siento, no tengo suficiente reputación para comentar sobre la pregunta, pero según mi experiencia, si la aplicación del cliente genera una transacción para una consulta que utiliza uniones de bases de datos cruzadas, entonces promovería la transacción para distribuirla y tendría los gastos generales de una transacción DTC .

La sobrecarga de DTC en este caso podría verse como negativa para el rendimiento. En general, la diferencia sería insignificante, aunque Microsoft describe las transacciones DTC como tales:

Las transacciones distribuidas generalmente consumen recursos significativos del sistema

Promoción de transacciones

... lo que sugeriría una degradación del rendimiento si su servidor no puede ofrecer los recursos que requiere.

Solo para aclarar, el artículo anterior describe las transacciones locales que se promueven cuando se introducen sistemas remotos, pero he visto que este es el caso de las transacciones en el mismo servidor cuando se utilizan consultas de bases de datos cruzadas.

Como Thomas Stringer señala en su comentario, habrá una sobrecarga adicional en la autenticación, aunque creo que ya que esto será impulsado por SID, habrá una sobrecarga mínima allí a menos que tenga que usar credenciales separadas para acceder a la otra base de datos.

Si hubo diferencias en la configuración de la base de datos que causó una sobrecarga adicional en la unión que podría tener un impacto mayor que las sugerencias anteriores, por ejemplo, la recopilación de bases de datos. La recopilación de la base de datos podría manifestarse como una diferencia funcional, no solo como una diferencia de rendimiento.

Creo que Aaron tiene el argumento más sólido para el rendimiento, ya que el optimizador no tiene la ventaja de usar relaciones para consultas de bases de datos cruzadas, mientras que el contenido de una base de datos puede contener las relaciones para su ventaja.



1
El artículo de promoción de transacciones es para transacciones CLR.
stacylaray

-2

En SQL Server 2014, las tablas con memoria optimizada no admiten transacciones entre bases de datos. No puede acceder a otra base de datos desde la misma transacción o la misma consulta que también accede a una tabla con memoria optimizada. No puede copiar fácilmente datos de una tabla en una base de datos a una tabla con memoria optimizada en otra base de datos.http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx Las transacciones distribuidas y entre bases de datos no son compatibles con la duplicación de bases de datos / AOAG. http://technet.microsoft.com/en-us/library/hh393530.aspx . Si va a utilizar el encadenamiento de propiedad, tenga en cuenta los riesgos de seguridad http://msdn.microsoft.com/en-us/library/ms188676.aspx


Eso solo se aplica a escenarios que "recursos que abarcan múltiples instancias o servidores". En este caso estamos hablando de una sola instancia con múltiples bases de datos.
Jonathan Allen

1
Lo malo ... me perdí la parte de que estaba dentro de la misma instancia
stacylaray
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.