2009-12-23 10 views
6

ya que estamos trabajando en un proyecto del ASP .NET allí tres maneras se puede actualizar datos en la base de datos cuando hay múltiples filas updation/inserción requeridapaso de parámetros Los parámetros con valores de tabla Vs Vs XML para SQL 2008 de aplicación .NET

Asumamos que tenemos que actualizar detalle educación de los empleados (que podría ser 1,3,5 o 10 registros)

Método para actualizar los datos

  1. valor de pasar como parámetro (enfoque tradicional), 10 Si los registros son a continuación, se requiere 10 viajes de ida y vuelta

  2. pasar datos como XML y escribir la lógica dentro de su procedimiento almacenado para conseguir que los datos de XML y actualizar la tabla (sólo ida y vuelta individual requerido)

  3. Uso valores de tabla parámetros (sólo ida y vuelta individual requerido)

Nota: Los datos están disponibles como Lista, por lo que necesito convertirlos a xml o cualquier otro formato si necesito pasar.

No hay. de plazas en toda aplicación que necesitamos para actualizar datos de forma masiva (o varios registros)

sólo necesito sus sugerencias de que

  1. Qué método será más rápido (por favor mencionar si hay algunos otros gastos generales)

  2. de administración o la capacidad de prueba preocupación con cualquier enfoque

  3. cualquier otro cuello de botella o un problema con cualquiera de enfoque (serialización/deserialización preocupación o límite en el tamaño del paso del datos g)

  4. Cualquier otro método que se sugiere para la mismas operaciones

, gracias

Respuesta

7

El enfoque de parámetros con valores de tabla será muy probablemente el mejor enfoque, ya que se puede actualizar un lote de filas En seguida; después de todo, obtienes una tabla a la que puedes unirte fácilmente.

Los otros enfoques son fila por fila, que son intrínsecamente más lentos o requieren un poco de limpieza en el lado del servidor SQL; esto no solo no es realmente divertido, por lo general, sino que también es más propenso a errores y, por lo general, menos eficiente que simplemente unir dos tablas.

Este es exactamente el escenario para el que se ha introducido el TVP: para resolver ese problema "fila por fila" o "messing-around-with-XML". Creo que hay una buena razón para que Microsoft presente esto, y si lo hacen, definitivamente deberías intentarlo y ver si funciona.

Pero de nuevo: eso es solo una "corazonada" sin conocer realmente todos sus detalles. Solo usted puede descubrir esto, para usted mismo, probando las tres opciones. Hay una plétora de otros efectos y parámetros que podrían entrar en juego que cualquiera que responda no puede saber ...

+0

tenemos una solución de gestión de pedidos normal donde hay un amo orden y otro detalle de la orden (productos), detalle de la dirección, etc. misma forma en que se moverá a la facturación ... puede sugerir cualquier posible problema con los parámetros con valores de tabla .. .que siente que debemos considerar antes de seguir adelante (o cualquier efecto secundario de ese enfoque) – Harryboy

3

Si utiliza TVP de que puede utilizar la instrucción de combinación para gestionar insertar/actualizar/borrar. (nueva característica interesante de SQL2008).

La única limitación de la TVP que he visto es el límite de 1.000 fila. Como esto no es un problema con xml o haciendo fila por fila.

he implementado una fila por fila y soluciones TVP para una importación de datos que estaba haciendo (miles de filas). TVP's ganó manos abajo (minutos a segundos). Así que sugeriría hacer ambas cosas: ¡también le dará métricas para decirle a su jefe lo genial que es, haciendo que las cosas funcionen más rápido!

cosas que hay que tener en cuenta; ¿Cuál es el procesador por encima de la conversión de datos de fila por fila, a TVP o XML. Esto se basa en tus datos. (Va a implicar más bucles o serialización)

Comprobar el paralelismo - He visto ejemplos en los parámetros de la tabla sólo se ejecute más de un núcleo !! - Entonces en prueba, el aumento de velocidad que ves, puede no reflejarse en vivo.

Cuestiones relacionadas