Os procedementos almacenados proporcionan alta eficiencia e beneficios de seguridade
Microsoft SQL Server proporciona o mecanismo de procedemento almacenado para simplificar o proceso de desenvolvemento da base de datos agrupando as instrucións de Transact-SQL en bloques manexables. Os procedementos almacenados son apreciados pola maioría dos desenvolvedores de SQL Server que atopan a eficiencia e os beneficios de seguridade que recolle merecen o investimento inicial no tempo.
Beneficios do uso de procedementos almacenados
Por que un desenvolvedor debe utilizar os procedementos almacenados?
Estes son os principais beneficios desta tecnoloxía:
- Execución precompilada: SQL Server compila cada procedemento almacenado unha vez e despois reutiliza o plan de execución. Isto resulta nun impulso tremendo de rendemento cando os procedementos almacenados son chamados repetidamente.
- Redución do tráfico do cliente / servidor: se o ancho de banda da rede é unha preocupación no seu contorno, estará feliz de saber que os procedementos almacenados poden reducir as consultas longas de SQL a unha única liña que se transmite a través do fío.
- Reutilización eficiente de código e abstracción de programación: os procedementos almacenados poden ser utilizados por varios usuarios e programas cliente. Se usalos de forma planificada, atopará que o ciclo de desenvolvemento leva menos tempo.
- Controis de seguridade mellorados: pode conceder aos usuarios permiso para executar un procedemento almacenado independentemente dos permisos de táboas subxacentes.
Os procedementos almacenados son similares ás funcións definidas polo usuario, pero hai diferenzas sutís.
Estrutura
Os procedementos almacenados son similares aos construídos noutros idiomas de programación.
Eles aceptan datos en forma de parámetros de entrada que se especifican no tempo de execución. Estes parámetros de entrada (se se implementan) son utilizados na execución dunha serie de declaracións que producen algún resultado. Este resultado volve ao ambiente de chamada mediante o uso dun conxunto de rexistros, parámetros de saída e un código de retorno.
Isto pode soar como un bocado, pero atoparás que os procedementos almacenados son bastante sinxelos.
Exemplo
Vexamos un exemplo práctico relacionado coa táboa denominada inventario que se mostra na parte inferior desta páxina. Esta información actualízase en tempo real, e os xestores de almacenaxe comproban constantemente os niveis de produtos almacenados no seu almacén e están dispoñibles para o seu envío. No pasado, cada xestor executaría consultas similares ás seguintes:
SELECCIONAR produto, cantidade
FROM Inventory
ONDE Warehouse = 'FL'
Isto deu como resultado un rendemento ineficiente no servidor SQL. Cada vez que un xestor de almacéns executou a consulta, o servidor de bases de datos forzouse a recompilar a consulta e executala desde cero. Tamén esixiu que o xestor do almacén tivese coñecemento de SQL e permisos axeitados para acceder á información da táboa.
No seu canto, o proceso pódese simplificar mediante o uso dun procedemento almacenado. Aquí está o código dun procedemento chamado sp_GetInventory que recupera os niveis de inventario dun determinado almacén.
CREAR PROCEDEMENTO sp_GetInventory
@location varchar (10)
AS
SELECCIONAR produto, cantidade
FROM Inventory
Onde almacén = @ localización
O xestor de almacéns de Florida pode acceder aos niveis de inventario emitindo o comando:
EXECUTE sp_GetInventory 'FL'
O xestor de almacéns de Nova York pode usar o mesmo procedemento almacenado para acceder ao inventario desta área:
EXECUTE sp_GetInventory 'NY'
Concedido, este é un exemplo sinxelo, pero os beneficios da abstracción pódense ver aquí. O administrador do almacén non necesita comprender SQL nin o funcionamento interno do procedemento. Desde unha perspectiva de rendemento, o procedemento almacenado fai marabillas. O SQL Server crea un plan de execución unha vez e despois o reutiliza conectando os parámetros axeitados no momento de execución.
Agora que aprendeu os beneficios dos procedementos almacenados, sae alí e utilízaos.
Proba algúns exemplos e mide as melloras do rendemento alcanzadas, ¡sorprenderás!
Táboa de inventario
ID | Produto | Almacén | Cantidade |
142 | Faba verde | NY | 100 |
214 | Peas | FL | 200 |
825 | Millo | NY | 140 |
512 | Faba de Lima | NY | 180 |
491 | Tomates | FL | 80 |
379 | Sandía | FL | 85 |