Pregunta

Estoy trabajando en un programa .NET que ejecuta las secuencias de comandos arbitrarios en contra de una base de datos.

Cuando una compañera comenzó a escribir el código de acceso de base de datos, simplemente expone un objeto de comando para el resto de la aplicación que se reutiliza (ajuste CommandText / Type, llamando ExecuteNonQuery() etc.) para cada declaración.

Me imagino que esto es un gran impacto en el rendimiento de las repetidas declaraciones, idénticos, ya que se analizan de nuevo cada vez.

Lo que me pregunto acerca, sin embargo, es: ¿este también degrada la velocidad de ejecución si cada declaración es diferente de la anterior (no sólo los diferentes parámetros, pero una declaración completamente diferente)? No podía encontrar fácilmente una respuesta en que en la documentación.

Por cierto, el RDBMS de Oracle es utilizado, pero supongo que esta pregunta no es realmente la base de datos específica.

P.S. Sé que la exposición del mismo objeto Command no es hilo de seguridad, pero eso no es un problema aquí.

¿Fue útil?

Solución

Existe cierta sobrecarga implicada en la creación de nuevos objetos de comando, por lo que en determinadas circunstancias puede tener sentido para volver a usar el mismo comando. Pero a medida que el caso general forzada durante toda una aplicación parece más que un poco extraño.

Otros consejos

El impacto en el rendimiento general proviene de establecer una conexión con la base de datos, pero ADO.NET crea un pool de conexiones a ayudar aquí.

Si desea evitar las declaraciones de análisis cada vez de nuevo, puede ponerlos en procedimientos almacenados.

Me imagino que su colega acaba utiliza algún método de estilo antiguo que ha heredado de trabajar en otras plataformas en las que la reutilización de un objeto de comando hizo una diferencia.

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