2011-09-05 18 views
9

duplicados Posible:
Disadvantages of MARS (Multiple Active Result Sets)?desventajas de la utilización de MARS (varios conjuntos de resultados activos)

Estoy desarrollando una aplicación tal que tengo que usar múltiples DataReaders al mismo tiempo. Cuando digo Múltiples DataReaders significo DataReaders MÚLTIPLES ... no habría requerido unos pocos a la vez. (Algo en torno a 10-50 o más)

Así que un escenario que me encontré fue a use diferentes cadenas de conexión ... ¡pero al implementar eso me siento incómodo!

Otro método es usar MARS que encontré que era bastante decente. pero mi duda es que tengo que considerar o tomar precauciones cuando lo implemente o es algo vicioso esperando que suceda :-)

de mi llamada investigación lo que pude encontrar fue que al usar MARS el servidor produce datos rápidamente, por lo que la aplicación del cliente debe recibir los datos a la misma velocidad que ingresa. De lo contrario, se llenará el búfer de almacenamiento de datos y el procesamiento se detendrá ... y solo se habilitará cuando el búfer se vacíe.

me he perdido en algún lugar por aquí ....

también que estoy usando sólo Sele declaraciones de ct solo para esta exigencia ...

así que mi pregunta es ¿hay alguna desventaja al usarlas? ¿cuántos de los datos se pueden almacenar en el búfer de datos del servidor para que el proceso no se detenga?

+1

¿Cuál es tu pregunta? (Algo que termina con un signo de interrogación, si eso lo ayuda a expresarlo en palabras) –

+0

También puede cuantificar "DATAREADERS MÚLTIPLES". Ponerlo en letras mayúsculas no lo convierte en un número. – Tony

+0

@Johnstone => he olvidó por completo terminar con las preguntas – Manek

Respuesta

1

Sugiero que use conexiones múltiples, si es realmente necesario leer de 100 conjuntos de datos a la vez. No veo por qué necesitarías tener múltiples lectores de datos activos en una sola conexión.

Sin embargo, es más probable que la consulta o tarea que intenta realizar se pueda realizar sin la necesidad de realizar esta gran operación en paralelo. Si puede ser más específico con algunos detalles quizás podamos encontrar algunas sugerencias alternativas.

+0

@Johnstone => He intentado optimizar mucho en el lado de la consulta y ahora estoy avanzando con MARS. Es algo así como que obtenemos una lista de una TableA y cada fila de TableA obtendrá una lista de TableB y cada fila en TableB tendrá que obtener una lista de TableC, y así sucesivamente. ¡¡Uf!! Sé que esto suena raro, pero de todos modos, gracias por tu tiempo aquí. Solo quería saber sobre los datos que podrían almacenarse en el búfer de datos. – Manek

+1

Eso suena exactamente como lo hace una unión. Es probable que pueda hacer lo que quiera con una sola consulta y será mucho, mucho más rápido que lo que está haciendo. –

+0

Por ejemplo: 'SELECT * FROM TblA INNER JOIN TblB ON X = Y' da todas las filas de' TblA', y para cada fila en 'TblB' donde se cumple el criterio' X = Y', una lista de filas de ' TblB'. –

Cuestiones relacionadas