C # con Procedimientos Almacenados

21/04/2008 - 17:53 por RP | Informe spam
Hola que tal, mi pregunta es si saben de alguna dirección que tenga un manual
que describa como se utiliza el C # con procedimientos almacenados, y en si
como crear procedimientos almacenados, es que soy medio fanatico de trabajar
con puras sentencias SQL, pero ya quiero ir dejando esa manía, así que deseo
aprender a usar los procedimientos almacenados, si saben de alguna dirección
de la cual me pueda guiar, por favor, no duden en pasarme la voz, Gracias...

Preguntas similare

Leer las respuestas

#6 Alfredo Novoa
24/04/2008 - 14:42 | Informe spam
On Thu, 24 Apr 2008 08:19:42 -0400, "Michelle"
wrote:

Alfredo, gracias por el enlace pero no comprendo bien lo de la comparacion
con "consultas preparadas" . Hay que 'preparar' cada consulta antes de
enviarla desde la aplicacion entonces ?



No tienes por que preparar las consultas, pero si lo haces favoreces
la reutilización del plan de ejecución.

no lleva entonces un tiempo
adicional de todos modos?



Claro que si. En algún momento siempre se tienen que compilar tanto
las consultas como los procedimientos almacenados para que se genere
el plan.

Lo que pasa es que tanto con consultas preparadas como con
prodecimientos almacenados ese plan se puede reutilizar muchas veces
gracias a la caché. Y no hay ventajas significativas entre
procedimientos almacenados y consultas preparadas en ese sentido.

Si usas consultas preparadas, las tendrás que preparar solo una vez
cada vez que ejecutes la aplicación, lo cual es un coste ridículo
comparado con el tiempo de carga normal de la aplicación.

Y además es bueno volver a generar los planes de ejecución de vez en
cuando por que así se tienen en cuenta las estadísticas actualizadas.

El artículo del enlace también comenta una pequeña ventaja de las
consultas preparadas que es muy poco relevante pero curiosa:

"Y puede que las consultas preparadas tengan mejor rendimiento que las
incluidas en un procedimiento almacenado por la siguiente razón: Si un
procedimiento almacenado se ejecuta en una base de datos D1, su plan
de ejecución no es reutilizado si se ejecuta en una base de datos
distinta D2. En cambio las consultas ad-hoc, las prepared y las
dinámicas SI."


Saludos
Alfredo
Respuesta Responder a este mensaje
#7 Michelle
25/04/2008 - 03:45 | Informe spam
Muy agradecida por su explicacion tan clara.

saludos


"Alfredo Novoa" escribió en el mensaje
news:
On Thu, 24 Apr 2008 08:19:42 -0400, "Michelle"
wrote:

Alfredo, gracias por el enlace pero no comprendo bien lo de la comparacion
con "consultas preparadas" . Hay que 'preparar' cada consulta antes de
enviarla desde la aplicacion entonces ?



No tienes por que preparar las consultas, pero si lo haces favoreces
la reutilización del plan de ejecución.

no lleva entonces un tiempo
adicional de todos modos?



Claro que si. En algún momento siempre se tienen que compilar tanto
las consultas como los procedimientos almacenados para que se genere
el plan.

Lo que pasa es que tanto con consultas preparadas como con
prodecimientos almacenados ese plan se puede reutilizar muchas veces
gracias a la caché. Y no hay ventajas significativas entre
procedimientos almacenados y consultas preparadas en ese sentido.

Si usas consultas preparadas, las tendrás que preparar solo una vez
cada vez que ejecutes la aplicación, lo cual es un coste ridículo
comparado con el tiempo de carga normal de la aplicación.

Y además es bueno volver a generar los planes de ejecución de vez en
cuando por que así se tienen en cuenta las estadísticas actualizadas.

El artículo del enlace también comenta una pequeña ventaja de las
consultas preparadas que es muy poco relevante pero curiosa:

"Y puede que las consultas preparadas tengan mejor rendimiento que las
incluidas en un procedimiento almacenado por la siguiente razón: Si un
procedimiento almacenado se ejecuta en una base de datos D1, su plan
de ejecución no es reutilizado si se ejecuta en una base de datos
distinta D2. En cambio las consultas ad-hoc, las prepared y las
dinámicas SI."


Saludos
Alfredo
Respuesta Responder a este mensaje
#8 Heriberto Díaz
29/04/2008 - 05:37 | Informe spam

Si usas consultas preparadas, las tendrás que preparar solo una vez
cada vez que ejecutes la aplicación, lo cual es un coste ridículo
comparado con el tiempo de carga normal de la aplicación.




Hola amigo Alfredo, no entiendo bien ese punto, en ese caso te refieres
todas las consultas que uno tenga en la aplicacion prepararlas al iniciar el
sistema? Pero si uno tiene consultas variables que se arman segun las
condiciones que elija el usuario, es dificil saber todas las posibilidades
de consultas que pueda haber.
Pensando en automatizarlo, si uno la manda a preparar cada vez que se vaya a
hacer la consulta, lo hace cada vez aunque ya este preparada la consulta ?
Por otro lado, el plan de ejecucion de las consultas preparadas se quedan
en cache hasta cerrar la conexión ?
Respuesta Responder a este mensaje
#9 Alfredo Novoa
29/04/2008 - 11:08 | Informe spam
Hola Heriberto,

On Mon, 28 Apr 2008 23:37:48 -0400, "Heriberto Díaz"
wrote:


Si usas consultas preparadas, las tendrás que preparar solo una vez
cada vez que ejecutes la aplicación, lo cual es un coste ridículo
comparado con el tiempo de carga normal de la aplicación.




Hola amigo Alfredo, no entiendo bien ese punto, en ese caso te refieres
todas las consultas que uno tenga en la aplicacion prepararlas al iniciar el
sistema?



Bueno, eso sería una opción, aunque también podrías repartir la
preparación de la consulta por módulos.

Por ejemplo yo suelo preparar las consultas que usa un formulario
cuando se abre el formulario.

Pero si uno tiene consultas variables que se arman segun las
condiciones que elija el usuario, es dificil saber todas las posibilidades
de consultas que pueda haber.



Esas consultas no tiene sentido prepararlas por que normalmente se
usan una sola vez.

Además la ganancia por preparar las consultas es mínima mínima, eso
nunca hay que olvidarlo. Muchas veces no vale la pena la molestia.

Pensando en automatizarlo, si uno la manda a preparar cada vez que se vaya a
hacer la consulta,



Esto no serviría para nada por que tardaría como mínimo lo mismo que
una consulta normal.

Preparar una consulta quiere decir generar un plan de ejecución que
pueda ser reutilizado. Si generas el plan cada vez obviamente no lo
vas a reutilizar.

Por otro lado, el plan de ejecucion de las consultas preparadas se quedan
en cache hasta cerrar la conexión ?



El tiempo de permanencia de los planes en la caché es independiente de
abrir y cerrar conexiones, o eso creo.

Si la caché se llena se puede eliminar un plan de la caché antes de
que cierres la conexión y si no se llena el plan seguirá en la caché
aun después de que hayas desconectado.


Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida