SP para todo ?

25/11/2004 - 01:29 por El foxero | Informe spam
Hola, como dije antes estoy empezando con SQL SErver y he estado revisando
el archivo de mensajes de este foro y veo que se recomienda hacer SP's para
la mayor parte de las cosas pero no me queda muy claro hacer un SP para
incluso las operaciones basicas de insert, update y delete para cada tabla.
Eso implicaria tener un sp para cada cosa para cada tabla no es asi ?
No seria sobrecargar mucho la base de datos si tiene muchas tablas ?
O no hay limite de la cantidad de SP's que se definen en la base de datos ?
Alguna opinion que me aclare un poco por favor.

Es cierta la frase: "Hacer un SP para todo.." ?

Gracias

Raul

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
25/11/2004 - 09:23 | Informe spam
Hola:

Personalmente si que te recomiendo que utilices SPs siempre que puedas
(vamos siempre ;-))

No hay problema en tener tantos SPs como necesites en tu base de datos,
salvo que deberás documentarlos de alguna forma y seguir ciertas reglas de
nomenclatura para facilitar su localización.

Te aconsejo que utilices SPs para todas las tareas, aunque en cuanto a
rendimiento donde menos notarás la diferencia es en las insert, update y
delete. Con los SPs puedes mejorar mucho tu seguridad, ya que podrías
restringir el acceso de los usuarios a las tablas, y darles sólo permisos
para que ejecutasen los SPs.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ Te interesa participar en las reuniones
del grupo de Usuarios de SQL Server y .NET ?
Se harán en levante de España, (Alicante o Murcia)?

"El foxero" escribió en el mensaje
news:
Hola, como dije antes estoy empezando con SQL SErver y he estado revisando
el archivo de mensajes de este foro y veo que se recomienda hacer SP's
para
la mayor parte de las cosas pero no me queda muy claro hacer un SP para
incluso las operaciones basicas de insert, update y delete para cada
tabla.
Eso implicaria tener un sp para cada cosa para cada tabla no es asi ?
No seria sobrecargar mucho la base de datos si tiene muchas tablas ?
O no hay limite de la cantidad de SP's que se definen en la base de datos
?
Alguna opinion que me aclare un poco por favor.

Es cierta la frase: "Hacer un SP para todo.." ?

Gracias

Raul


Respuesta Responder a este mensaje
#2 Paulino Padial
25/11/2004 - 09:25 | Informe spam
Si, es mas, en una aplicacion cliente, no se deberia lanzar ni un Select .
Esto es por eficiencia, ademas de modularizacion.
Si tenemso que cambiar la consulta, la cambiamos en el SP, no hay riesgos de
inyecciones, y no hay hard code en tu aplicacion. Ademas imagina que en
alguna parte del codigo ejecutas una select, sql la procesa. Despues en otra
parte o en ela misma, vuelves a ejecutar la select, como esta en codigo se
la vuelves a enviar tal cual al gestor, y este la procesa, mientras que si
tienes un SP con la select, sql server compila el sp una vez y lo utiliza
para compartirlo con las veces sucesivas que lo soliciten, obteniendo asi un
trabajo menos "pesado" y mas efectivo a la base de datos.

__________________________________________

Paulino Padial López
Murcia - España

Microsoft SQL-Server Administrator.
Microsoft Certified Solution Developer
Microsoft Certified Trainer
Oracle Certified Asociate
__________________________________________
"El foxero" escribió en el mensaje
news:
Hola, como dije antes estoy empezando con SQL SErver y he estado revisando
el archivo de mensajes de este foro y veo que se recomienda hacer SP's


para
la mayor parte de las cosas pero no me queda muy claro hacer un SP para
incluso las operaciones basicas de insert, update y delete para cada


tabla.
Eso implicaria tener un sp para cada cosa para cada tabla no es asi ?
No seria sobrecargar mucho la base de datos si tiene muchas tablas ?
O no hay limite de la cantidad de SP's que se definen en la base de datos


?
Alguna opinion que me aclare un poco por favor.

Es cierta la frase: "Hacer un SP para todo.." ?

Gracias

Raul


Respuesta Responder a este mensaje
#3 Maxi
25/11/2004 - 14:18 | Informe spam
Hola, solo como comentario nomas.

Los sp se deberian usar siempre por muchas razones (ya los amigos han
expuesto algunas), pero mucho cuidado, e visto en SP codigo que parecia C# y
se ponian super lentos!! o sea, no se puede hacer todo en SP, pero si lo que
es el acceso y el trabajo con datos.

Una ventaja mas que menciono y es importante: Si no usas SP vas a tener que
codificar en la aplicacion, esto por un lado tiene algunos problemas de
seguridad y de performance. Hay muchos que se excusan en esto y argumentan
que de esa forma pueden hacer el sistema muy escalable!! bueno eso es una
mentirita con patitas cortas ;).

Te cuento un ejemplo que siempre les muestro a los fanaticos de poner todo
fuera del motor ;)

Si no usas SP y el dia de mañana una tabla llegara a cambiar (por ej, se le
agrega un campo nuevo), vas a tener que identificar a todos los clientes que
hacen uso de esta tabla para seguramente trabajar con este campo nuevo, esto
es una tarea titanica y muy poco escalable :( Ahora si usas SP, es muy
simple, solo debes ver los SP que hacen referencia a esa tabla (lo sacas con
un simple select) y listo!! tocas y nada mas :)

En mi opinion y para cerrar, los SP son una herramienta excelente de los
motores, en los Insert,Delete,Update simples no notaras diferencias de
performance, pero si aislaras mas aun tu aplicacion, con lo cual los
desarrolladores no deben ni conocer codigo SQL si quieres, solo deben saber
como llamar a un SP :)




Salu2
Maxi


"El foxero" escribió en el mensaje
news:
Hola, como dije antes estoy empezando con SQL SErver y he estado revisando
el archivo de mensajes de este foro y veo que se recomienda hacer SP's
para
la mayor parte de las cosas pero no me queda muy claro hacer un SP para
incluso las operaciones basicas de insert, update y delete para cada
tabla.
Eso implicaria tener un sp para cada cosa para cada tabla no es asi ?
No seria sobrecargar mucho la base de datos si tiene muchas tablas ?
O no hay limite de la cantidad de SP's que se definen en la base de datos
?
Alguna opinion que me aclare un poco por favor.

Es cierta la frase: "Hacer un SP para todo.." ?

Gracias

Raul


Respuesta Responder a este mensaje
#4 Javier Loria
25/11/2004 - 15:26 | Informe spam
Hola:
Un voto a los excelentes comentarios de Salvador, Paulino y Maxi.
Unas estadisticas personales:
a) El 80% de mis procedimientos almacenados son "triviales".
b) Como un 19% son "interesantes".
c) El 1% no los entiende nadie, y debieron haberse escrito en VB.NET
o C#.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"El foxero" wrote in message
news:
Hola, como dije antes estoy empezando con SQL SErver y he estado revisando
el archivo de mensajes de este foro y veo que se recomienda hacer SP's


para
la mayor parte de las cosas pero no me queda muy claro hacer un SP para
incluso las operaciones basicas de insert, update y delete para cada


tabla.
Eso implicaria tener un sp para cada cosa para cada tabla no es asi ?
No seria sobrecargar mucho la base de datos si tiene muchas tablas ?
O no hay limite de la cantidad de SP's que se definen en la base de datos


?
Alguna opinion que me aclare un poco por favor.

Es cierta la frase: "Hacer un SP para todo.." ?

Gracias

Raul


Respuesta Responder a este mensaje
#5 Maxi
25/11/2004 - 15:38 | Informe spam
Un tema para agregar:

Hace unas semanas tuve una "pequeña" discusion con algunos arquitectos de
.NEt donde ni locos usan SP ya que es mala palabra ;)

Bien, desarrollamos un caso de estudio y ellos lo armaron con c# y
resolvieron la logica en c#.
Yo por mi parte arme un SP que resolvia la misma logica :)

Resultados en produccion

Proceso c# 18'
Proceso Sp 10s

Uso del cpu c# = 80% promedio durante los 18'
proceso Sp = 25% durante unos segundos :)

Ni hablar de seguridad ni nada!! la discusion era que los SP no eran tan
optimos como para poder usarlos y que lo mejor era no usar SP o solo usarlos
como Input a las BDD.

Al que le interese tengo los casos de estudio y ambas soluciones, ahh el SP
es un Update nomas con un poco de logica T-SQL, pero nada de cursores,
tablas temporales ni nada :)

Usen SP para trabajar con datos, es muy eficiente de verdad!! ahora usarlos
para mandar un mail o para borrar archivos o cosas por el estilo, me parece
una locura ;)


Salu2
Maxi


"Javier Loria" escribió en el mensaje
news:%
Hola:
Un voto a los excelentes comentarios de Salvador, Paulino y Maxi.
Unas estadisticas personales:
a) El 80% de mis procedimientos almacenados son "triviales".
b) Como un 19% son "interesantes".
c) El 1% no los entiende nadie, y debieron haberse escrito en
VB.NET
o C#.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"El foxero" wrote in message
news:
Hola, como dije antes estoy empezando con SQL SErver y he estado
revisando
el archivo de mensajes de este foro y veo que se recomienda hacer SP's


para
la mayor parte de las cosas pero no me queda muy claro hacer un SP para
incluso las operaciones basicas de insert, update y delete para cada


tabla.
Eso implicaria tener un sp para cada cosa para cada tabla no es asi ?
No seria sobrecargar mucho la base de datos si tiene muchas tablas ?
O no hay limite de la cantidad de SP's que se definen en la base de datos


?
Alguna opinion que me aclare un poco por favor.

Es cierta la frase: "Hacer un SP para todo.." ?

Gracias

Raul






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