2008-12-17 8 views

Respuesta

46

Al parecer, hay al menos dos (potenciales) inconvenientes conocidos (de este (1) Team blog):

  1. Obviamente, esto puede causar problemas potenciales para los sistemas heredados que no fueron diseñados para funcionar contra un MARS habilitado diseño - "código existente optimizado para funcionar en el mundo no-MARS puede mostrar una ligera disminución de rendimiento cuando se ejecuta un-modificado con MARS"

  2. “con Marte puede enviar múltiples mu lti-statement lotes al servidor. El servidor intercalará la ejecución de tales lotes, lo que significa que si los lotes cambian el estado del servidor mediante sentencias SET o USE, por ejemplo, o usan declaraciones de gestión de transacciones TSQL (BEGIN TRAN, COMMIT, ROLLBACK), tanto usted como el servidor pueden confundirse sobre lo que su intención real es.”

todavía tengo que probar un diseño MARS habilitado, pero estoy llegando muy cerca de hacerlo en mi proyecto actual. Tenemos un ligero problema con las operaciones de consulta competidoras (ya veces dependientes) (como los datos de configuración de carga diferida de la misma base de datos que se está ejecutando un conjunto de registros activo).

Hay más información en el sitio de MSDN (2) here

[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx]
[(2) http://msdn.microsoft.com/en-us/library/ms131686.aspx]

+3

Antes de aplicar la gran solución de @RobS, leí este artículo primero para asegurarme de que no puede resolver este problema con la siguiente solución: http://devproconnections.com/development/solving-net-scalability-problem O agregando .ToList() hasta el final de su llamada al DB, que resolvió mi problema. Por cierto, gracias a RobS por el gran consejo, MARS será útil en el futuro. :) – Termato

2

dependiendo de qué? no hay desventajas reales

no son compatibles con los puntos guardados de la transacción. pero no pienso en esto como una desventaja.

5
  • Toma un poco más de recursos de servidor que hacer una conexión a la vez.
  • Debe ejecutar SQL Server 2005 o posterior. Entonces eso puede ser un problema en entornos heredados (¡ack!).
+0

puedes hacer una donación utilizar SqlTransaction bien. –

+11

¿Cuánto cuesta "un poco más de recursos del servidor"? ¿Puedes ponerle un presupuesto en términos de memoria o CPU? Estoy interesado en esto principalmente porque estoy en un entorno de Azure donde los recursos son proporcionales al costo del servidor. –

Cuestiones relacionadas