Pregunta

  • ¿Qué es?
  • ¿Cómo implemento la agrupación de conexiones con MS SQL?
  • ¿Cuáles son las ramificaciones en el desempeño cuando
    • Ejecutar muchas consultas una tras otra (es decir,¿Usando un bucle con más de 30.000 iteraciones llamando a un procedimiento almacenado)?
    • ¿Está ejecutando algunas consultas que toman mucho tiempo (más de 10 minutos)?
  • ¿Existen mejores prácticas?
¿Fue útil?

Solución

La agrupación de conexiones es un mecanismo para reutilizar conexiones, ya que establecer una nueva conexión es lento.

Si usa una cadena de conexión MSSQL y System.Data.SqlClient, entonces ya lo está usando; en .Net, estas cosas están ocultas la mayor parte del tiempo.

Un bucle de 30k iteraciones podría ser mejor como cursor del lado del servidor (busque declaraciones de cursor T-SQL), dependiendo de lo que esté haciendo con cada paso fuera del sproc.

Las consultas largas están bien, pero tenga cuidado al llamarlas desde páginas web, ya que Asp.Net no está realmente optimizado para esperas largas y algunas conexiones se cortarán.

Otros consejos

Un poco más de información sobre el tema de la agrupación de conexiones...ya lo estás usando con SqlClient, pero solo si tu cadena de conexión es idéntica para cada nueva conexión que abres.Tengo entendido que el marco agrupará las conexiones automáticamente cuando pueda, pero si la cadena de conexión varía aunque sea ligeramente de una conexión a la siguiente, entonces la nueva conexión no provendrá del grupo: se creará de nuevo (por lo que es más costoso). ).

Puede usar la aplicación Performance Monitor con XP/Vista para observar las conexiones SQL y verá con bastante rapidez si se está utilizando o no la agrupación.Busque en la categoría "Datos .NET CLR" en Performance Monitor.

Apoyo a Keith;Si llama a un procedimiento almacenado 30.000 veces, tendrá problemas mucho mayores que la agrupación de conexiones.

Su pregunta también fue parcialmente respondida por este hilo.Una búsqueda habría revelado esto...La definición de Connection Pooling, de la cual una Google habría respondido con el primer golpe siendo este..

Lo que dejaría solo las mejores prácticas, lo cual creo que habría sido una buena pregunta :)

+1 a La respuesta de Keith.Ha dado en el clavo.

Solo un cortés recordatorio de las preguntas frecuentes:

Ha buscado en Internet antes de hacer su pregunta, y nos viene armados con investigación e información sobre su pregunta ...¿bien?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top