SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
Procedimientos almacenados                  Composición de un P.A. - Cabecera

                    (1ª Parte)
                                                    l   Una cabecera que define el nombre con el
                                                        identificaremos a un P.A. Y lo
                                                        diferenciaremos de otros.


                                                    l   Los parámetros de entrada y salida.

                                                    l   Opciones de procesamiento del P.A.




Procedimientos almacenados                          Composición de un P.A. - Cuerpo

l   Los procedimientos almacenados son              l   El siguiente elemento es el cuerpo del P.A. Que
                                                        contendrá una o mas sentencias SQL que se
    objetos de BD que encapsulan colecciones            ejecutarán mas adelante
    de sentencias SQL transaccionales y que se
    almacenan para un uso posterior.                l CREATE PROC[EDURE] procedure_name
                                                    l [ {@parameter data_type} [= default] [OUTPUT] ]
                                                      [,...n]
l   Podríamos decir que son como las
                                                    l AS
    subrutinas y las funciones de otros lenguajes
                                                    l sql_statement [...n]
    de programación
Función de un P.A.                                                  Parámetros

l   Uno de los propósitos principales de un                         l   Create procedure prGetEqId_2
    procedimiento almacenado es el de devolver                          – @Make varchar(50),
    una serie de valores de una forma útil.                             – @Model varchar(50),
                                                                        – @EqId int Output
l   Existen tres formas de devolver un resultado:
                                                                    l   as
l   1-. Resultset                                                       –    select @EqId = EquipmentId
l   2-. Parámetros                                                            l   from Equipment
                                                                              l   where Make = @Make
l   3-. Valores de retorno                                                    l   and Model = @Model




Resultset                                                           Parámetros

l   Para conseguir una lista de resultados, solo hemos de indicar   l Declare @intEqId int
    una sentencia que devuelva una lista de valores (por ejemplo    l Execute prGetEqId_2 ' Toshiba', ' Portege 7020CT',
    la clausula SELECT)
                                                                      @intEqId output
l   También podemos utilizar la llamada a otro P.A. Que devuelva
    una lista de valores.                                           l Select @intEqId 'Equipment Identifier'
l   Es posible devolver varias listas diferentes de valores. Para
    ello ejecutamos varios select en este P.A. o llamando a otros   l Este lote devolverá el parámetro de salidaEquipment
    P.A.                                                              Identifier
l   Algunos métodos de acceso a los datos como RDO pueden           l --------------------
    acceder a todas las listas de resultados que devuelve un P.A.
                                                                    l 1
    Pero otros solo pueden recibir el primer conjunto o incluso
    devolver un error                                               l (1 row(s) affected)
Valores de retorno                                                  Combinación de salidas
                                                                           l   Declare     @intEqId int,
l   Create Procedure prGetEqId_ 3         l   Create Procedure
                                              prGetEqId_3                                  @intStatusCode int
l   @Make varchar(50),                                                     l   Execute @intStatusCode = prGetEqId_2 'Toshiba',
                                          l   @Make varchar(50),
l   @Model varchar(50)                                                                     'Portege 7020CT',
                                          l   @Model varchar(50)
l   as                                    l   as                                           @intEqId output
l   Declare @intEqId int                  l   Return (select EquipmentId   l   Select @intEqId result, @intStatusCode ErrorCode
l   Select @intEqId = EquipmentId         l   from Equipment
l   from Equipment                        l   where Make = @Make           l   El resultado de ejecutar este lote de instrucciones seria
l   where Make = @Make                    l   and Model = @Model)
l   and Model = @Model                                                     l   result ErrorCode
                                                                           l   ----------- -----------
    Declare @intEqId int                                                   l   10
    Execute @intEqId = prGetEqId_3 'Toshiba', 'Portege 7020CT'
                                                                           l   (1 row(s) affected)
    Select @intEqId'Equipment Identifier'




       Combinación de salidas
        l   Create Procedure prGetEqId _2                                  Parámetros opcionales
        l   @Make varchar(50),
        l   @Model varchar(50),                                            l   Create Procedure prGetEqId _4
        l   @EqId int output
                                                                           l @Make varchar(50) = '%',
        l   As
        l   select @EqId = EquipmentId                                     l @Model varchar(50) = '%'
        l   from Equipment                                                 l as
        l   where Make = @Make                                             l Select *
        l   and Model = @Model                                             l from Equipment
        l   Return @@Error
                                                                           l where Make Like @Make
                                                                           l   and Model Like @Model
Parámetros opcionales                                        Tipos de P.A.

l   Execute prGetEqId_4 'T%', 'Portege%‘                     l   Definido por el usuario (user-defined)
                                                             l   System
l   Execute prGetEqId_4 'T%'                                 l   Extended
                                                             l   Temporary
l    Paso de parámetros por nombre                           l   Global temporary
                                                             l   Remote

l    Execute prGetEqId_4 @Model = 'T%'




P.A. Con la opción WITH ENCRYPTION                           P.A. Definidos por el usuario
l   CREATE PROC[EDURE] procedure_name [; number]
l   [
l   {@ parameter data_type} [VARYING] [= default] [OUTPUT]   l   Los que hemos visto hasta ahora.
l   ]
l   [,... n]
l   [WITH { RECOMPILE
l   | ENCRYPTION
l   | RECOMPILE, ENCRYPTION }
l   ]
l   [FOR REPLICATION]
l   AS
l   sql_statement [... n]
El proceso de compilación y ejecución
P.A. De sistema                                          Parsing

                                          l   El parsing es un proceso durante el cual MS SQL Server
                                              comprueba que la sintaxis del comando sea correcta.
l   Son procedimientos almacenados
                                          l   Si no existe ningún error sistáctico se trocea la sentencia en
                                              unidades mas sencillas como las palabras claves,
                                              identificadores y operadores
l   Se almacenan en la B.D. Del sistema
    (master y msdb)                       l   Ahora solo queda construir una estructura que describa la serie
                                              de pasos necesarios para realizar la operación que el cliente
                                              pide.
l   Tienen el prefijo sp_????? (System
                                          l   Si el lote contiene una consulta, la estructura interna se llama
    Procedure)                                árbol de consulta y si contiene un procedimiento: árbol de
                                              secuencia




El proceso de compilación y ejecución     El proceso de compilación y ejecución
                                                       Compilación

                                          l   El árbol de secuencia se utiliza para crear un plan de ejecución
l   Parsing
                                          l   El módulo de optimización analiza el modo en el que la información
                                              puede ser recuperada de las tablas
l   Compilation                           l   Se busca el modo mas rápido y que menos recursos utiliza. Es dec ir
                                              se busca eficiencia en tiempo y recursos.

                                          l   Añade operaciones extras como son la verificación de restricciones,
l   Execution                                 los disparadores, comprobación de la seguridad, etc

                                          l   El resultado es una estructura llamada plan de ejecución

                                          l   TODAVÍA NO HEMOS EJECUTADO NADA
El proceso de compilación y ejecución                                          Reutilización de los planes de ejecución
               Ejecución

l   El plan de ejecución es almacenado en la cache de procedimiento y           l   Esta característica es lo que hace de los P.A. la
    AHORA SI, ahora ejecutamos
                                                                                    mejor solución que tener almacenadas las consultas
l   Pueden haber varios pasos en el plan de ejecución que se pueden
                                                                                    de mas uso.
    enviar a diferentes módulos:
     –   el gestor de DML,
     –   el gestor DDL,                                                         l   La misma consulta ejecutada N veces, requiere del
     –   el gestor de procedimientos,                                               gestor de BD realice los tres pasos de parsing,
     –   el gestor de transacciones                                                 compilación y ejecución.
     –   el gestor de utilidades

l   Los resultados son recogidos en la forma RESULTSET                          l   En los P.A. pasamos directamente al plan de
                                                                                    ejecución.
l   El RESULTSET es enviado al cliente




Reutilización de los planes de ejecución
          Autoparametrización                                                   Reutilización de los planes de ejecución
l   Sea la siguiente consulta

l   SELECT FirstName LastName Phone, Fax, Email, OrgUnitId, UserName
                       ,     ,
l   FROM Asset.dbo.Contact                                                      l   Los planes de ejecución se dividen en dos partes:
l   where ContactId = 3                                                             –   El propio código que se ejecutará
                                                                                    –   El contexto
l   Primero el SQL tratará de parametrizar la consulta de la siguiente forma,
    creando un plan de ejecución
                                                                                l   El código se puede compartir entre varios usuarios
l   SELECT FirstName LastName Phone, Fax, Email, OrgUnitId, UserName
                    ,        ,
l   FROM Asset.dbo.Contact
                                                                                l   El contexto es propio de cada usuario
l   whereContactId = @P1

l   Las consultas posteriores que coincidan con este plan, reutilizarán el
    esquema

l   SELECT FirstName LastName Phone, Fax, Email, OrgUnitId, UserName
                    ,        ,
l   FROM Asset.dbo.Contact
l   whereContactId = 11
Reutilización de los planes de ejecución                          Mantenimiento de la integridad de la
                                                                                 B.D
l   El plan de ejecución se elimina de la cache por el
    proceso Lazywriter                                            l   La tarea más importante de un administrador de base de datos
                                                                      es mantener la integridad de la misma.

l El P.E. se elimina cuando no ha sido utilizado por un           l   Si este administrador no es escrupuloso podremos encontrarnos
  tiempo.                                                             con casos como los siguientes:
l ó                                                                    – Canada aparecía con 109 provincias. Una de ellas era Francia
                                                                       – La dirección de correo de un cliente era. “Hoy hace un día soleado”
l El P.E. Se elimina cuando ocurre alguna de estas
                                                                       – Una misma impresora aparecía escrita de 10 formas distintas
  cinco cosas
    –   Los datos han cambiado significativamente.
                                                                  l   LA redundancia, redundancia, redundancia, hay que evitarla.
    –   Se han creado o eliminado índices.
    –   Las restricciones han cambiado o añadido o borrado.
    –   La distribución estadística de los índices han cambiado
    –   Se llama a sp_recompile




El papel de los P.A. En el desarrollo                                               Reglas complejas
 de aplicaciones de base de datos
                                                                  l   Esto es por el uso de aproximaciones procedimientales y no
l   Mantenimiento de la integridad de la B.D.                         procedimientales

l   Implementación consistentes de reglas de negocio y
    restricciones, todas ellas, complejas de implementar

l   Diseño modular

l   Mantenimiento

l   Reducción del tráfico de red

l   Ejecución mas rápida

l   Control de la seguridad
Reducción del tráfico de red
                   Diseño modular


l   Los P.A. Permiten a los programadores encapsular las          l   Una de las principales desventajas de una
    funcionalidades de negocio y facilitan a los usuarios             arquitectura de servidor de ficheros o una estructura
    (normalmente otros programas) una interfaz mas fácil.
                                                                      descentralizada es que existe un gran tráfico de
                                                                      datos entre el servidor y el cliente.
l   Los P.A. Se comportan como cajas negras.

l   Los usuarios no tienen porque saber como estan                l   Una buena construcción actual de B.D. Implica que
    implementados, sino qué es lo que hacen, qué parámetros hay       el cliente reciba solo aquello que necesita. Los datos
    que pasarles y qué resultado devuelven.                           intermedios no se pasan.
l   Las personas estan limitadas por la cantidad de información
    que son capaces de procesar. Los P.A. Facilitan esta labor




                    Mantenimiento                                             Ejecución mas rápida

                                                                  l   Los P.A. Tienen varias ventajas de rendimiento
l   El proceso de diseñar un sistema es cíclico.                      respecto a las consultas almacenadas

l   Los sistemas necesitan ser revisados y mejorados .            l   Los P.A. Se almacenan de forma compilada en la
                                                                      cache de P.A. => cuando se necesitan, no tenemos
l   Ocultando la estructura de la B.D. Los                            que realizar el parsing y la recompilación.
    administradores pueden reducir la necesidad de
    cambiar otros componentes (aplicaciones de                    l   Los P.A. ya estan optimizados
    clientes, componentes intermedios
Control de la seguridad


l   Una señal de un sistema de base de datos es que
    evita que los usuarios accedan directamente a las
    tablas y fuerzan a utilizar los P.A. Para funciones
    específicas.

l   Es más fácil gestionar los conjuntos de P.A. Por
    funcionalidad que gestionar una tabla a nivel de
    columnas.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (13)

11funciones 1231096290787715-2
11funciones 1231096290787715-211funciones 1231096290787715-2
11funciones 1231096290787715-2
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
Guía funciones
Guía funcionesGuía funciones
Guía funciones
 
Poo 1
Poo 1Poo 1
Poo 1
 
Introduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORMIntroduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORM
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.com
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
Clase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpooClase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpoo
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Capítulo 03 ambiente trabajo simio
Capítulo 03 ambiente trabajo simioCapítulo 03 ambiente trabajo simio
Capítulo 03 ambiente trabajo simio
 
Greenfoot 3
Greenfoot 3Greenfoot 3
Greenfoot 3
 

Similar a U0108985

Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANSWilliam Diaz S
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsVisual Engineering
 
Unidad 1 introduccion
Unidad 1 introduccionUnidad 1 introduccion
Unidad 1 introduccionKatyya20
 
P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2climancc
 
Practica 13 alice
Practica 13 alicePractica 13 alice
Practica 13 aliceAquino1912
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacionsandra gutierrez
 
Practica 13 de_alice(2)
Practica 13 de_alice(2)Practica 13 de_alice(2)
Practica 13 de_alice(2)ArmandoC42
 
Practica 13 de_alice(2)
Practica 13 de_alice(2)Practica 13 de_alice(2)
Practica 13 de_alice(2)dani t
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Javasantosisidrorivera
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2Carlos Posada
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2Juan Cardona
 

Similar a U0108985 (20)

Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
Tipos de Datos Abstractos (TDA)
Tipos de Datos Abstractos (TDA)Tipos de Datos Abstractos (TDA)
Tipos de Datos Abstractos (TDA)
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
 
Unidad 1 introduccion
Unidad 1 introduccionUnidad 1 introduccion
Unidad 1 introduccion
 
Resumen java
Resumen javaResumen java
Resumen java
 
C sharp intro1
C sharp intro1C sharp intro1
C sharp intro1
 
Funciones
FuncionesFunciones
Funciones
 
P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2
 
Arreglos en C++
Arreglos en C++Arreglos en C++
Arreglos en C++
 
Practica 13 alice
Practica 13 alicePractica 13 alice
Practica 13 alice
 
Practica 13
Practica 13Practica 13
Practica 13
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacion
 
Practica 13 de_alice(2)
Practica 13 de_alice(2)Practica 13 de_alice(2)
Practica 13 de_alice(2)
 
Practica 13 de_alice(2)
Practica 13 de_alice(2)Practica 13 de_alice(2)
Practica 13 de_alice(2)
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Java
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 

U0108985

  • 1. Procedimientos almacenados Composición de un P.A. - Cabecera (1ª Parte) l Una cabecera que define el nombre con el identificaremos a un P.A. Y lo diferenciaremos de otros. l Los parámetros de entrada y salida. l Opciones de procesamiento del P.A. Procedimientos almacenados Composición de un P.A. - Cuerpo l Los procedimientos almacenados son l El siguiente elemento es el cuerpo del P.A. Que contendrá una o mas sentencias SQL que se objetos de BD que encapsulan colecciones ejecutarán mas adelante de sentencias SQL transaccionales y que se almacenan para un uso posterior. l CREATE PROC[EDURE] procedure_name l [ {@parameter data_type} [= default] [OUTPUT] ] [,...n] l Podríamos decir que son como las l AS subrutinas y las funciones de otros lenguajes l sql_statement [...n] de programación
  • 2. Función de un P.A. Parámetros l Uno de los propósitos principales de un l Create procedure prGetEqId_2 procedimiento almacenado es el de devolver – @Make varchar(50), una serie de valores de una forma útil. – @Model varchar(50), – @EqId int Output l Existen tres formas de devolver un resultado: l as l 1-. Resultset – select @EqId = EquipmentId l 2-. Parámetros l from Equipment l where Make = @Make l 3-. Valores de retorno l and Model = @Model Resultset Parámetros l Para conseguir una lista de resultados, solo hemos de indicar l Declare @intEqId int una sentencia que devuelva una lista de valores (por ejemplo l Execute prGetEqId_2 ' Toshiba', ' Portege 7020CT', la clausula SELECT) @intEqId output l También podemos utilizar la llamada a otro P.A. Que devuelva una lista de valores. l Select @intEqId 'Equipment Identifier' l Es posible devolver varias listas diferentes de valores. Para ello ejecutamos varios select en este P.A. o llamando a otros l Este lote devolverá el parámetro de salidaEquipment P.A. Identifier l Algunos métodos de acceso a los datos como RDO pueden l -------------------- acceder a todas las listas de resultados que devuelve un P.A. l 1 Pero otros solo pueden recibir el primer conjunto o incluso devolver un error l (1 row(s) affected)
  • 3. Valores de retorno Combinación de salidas l Declare @intEqId int, l Create Procedure prGetEqId_ 3 l Create Procedure prGetEqId_3 @intStatusCode int l @Make varchar(50), l Execute @intStatusCode = prGetEqId_2 'Toshiba', l @Make varchar(50), l @Model varchar(50) 'Portege 7020CT', l @Model varchar(50) l as l as @intEqId output l Declare @intEqId int l Return (select EquipmentId l Select @intEqId result, @intStatusCode ErrorCode l Select @intEqId = EquipmentId l from Equipment l from Equipment l where Make = @Make l El resultado de ejecutar este lote de instrucciones seria l where Make = @Make l and Model = @Model) l and Model = @Model l result ErrorCode l ----------- ----------- Declare @intEqId int l 10 Execute @intEqId = prGetEqId_3 'Toshiba', 'Portege 7020CT' l (1 row(s) affected) Select @intEqId'Equipment Identifier' Combinación de salidas l Create Procedure prGetEqId _2 Parámetros opcionales l @Make varchar(50), l @Model varchar(50), l Create Procedure prGetEqId _4 l @EqId int output l @Make varchar(50) = '%', l As l select @EqId = EquipmentId l @Model varchar(50) = '%' l from Equipment l as l where Make = @Make l Select * l and Model = @Model l from Equipment l Return @@Error l where Make Like @Make l and Model Like @Model
  • 4. Parámetros opcionales Tipos de P.A. l Execute prGetEqId_4 'T%', 'Portege%‘ l Definido por el usuario (user-defined) l System l Execute prGetEqId_4 'T%' l Extended l Temporary l Paso de parámetros por nombre l Global temporary l Remote l Execute prGetEqId_4 @Model = 'T%' P.A. Con la opción WITH ENCRYPTION P.A. Definidos por el usuario l CREATE PROC[EDURE] procedure_name [; number] l [ l {@ parameter data_type} [VARYING] [= default] [OUTPUT] l Los que hemos visto hasta ahora. l ] l [,... n] l [WITH { RECOMPILE l | ENCRYPTION l | RECOMPILE, ENCRYPTION } l ] l [FOR REPLICATION] l AS l sql_statement [... n]
  • 5. El proceso de compilación y ejecución P.A. De sistema Parsing l El parsing es un proceso durante el cual MS SQL Server comprueba que la sintaxis del comando sea correcta. l Son procedimientos almacenados l Si no existe ningún error sistáctico se trocea la sentencia en unidades mas sencillas como las palabras claves, identificadores y operadores l Se almacenan en la B.D. Del sistema (master y msdb) l Ahora solo queda construir una estructura que describa la serie de pasos necesarios para realizar la operación que el cliente pide. l Tienen el prefijo sp_????? (System l Si el lote contiene una consulta, la estructura interna se llama Procedure) árbol de consulta y si contiene un procedimiento: árbol de secuencia El proceso de compilación y ejecución El proceso de compilación y ejecución Compilación l El árbol de secuencia se utiliza para crear un plan de ejecución l Parsing l El módulo de optimización analiza el modo en el que la información puede ser recuperada de las tablas l Compilation l Se busca el modo mas rápido y que menos recursos utiliza. Es dec ir se busca eficiencia en tiempo y recursos. l Añade operaciones extras como son la verificación de restricciones, l Execution los disparadores, comprobación de la seguridad, etc l El resultado es una estructura llamada plan de ejecución l TODAVÍA NO HEMOS EJECUTADO NADA
  • 6. El proceso de compilación y ejecución Reutilización de los planes de ejecución Ejecución l El plan de ejecución es almacenado en la cache de procedimiento y l Esta característica es lo que hace de los P.A. la AHORA SI, ahora ejecutamos mejor solución que tener almacenadas las consultas l Pueden haber varios pasos en el plan de ejecución que se pueden de mas uso. enviar a diferentes módulos: – el gestor de DML, – el gestor DDL, l La misma consulta ejecutada N veces, requiere del – el gestor de procedimientos, gestor de BD realice los tres pasos de parsing, – el gestor de transacciones compilación y ejecución. – el gestor de utilidades l Los resultados son recogidos en la forma RESULTSET l En los P.A. pasamos directamente al plan de ejecución. l El RESULTSET es enviado al cliente Reutilización de los planes de ejecución Autoparametrización Reutilización de los planes de ejecución l Sea la siguiente consulta l SELECT FirstName LastName Phone, Fax, Email, OrgUnitId, UserName , , l FROM Asset.dbo.Contact l Los planes de ejecución se dividen en dos partes: l where ContactId = 3 – El propio código que se ejecutará – El contexto l Primero el SQL tratará de parametrizar la consulta de la siguiente forma, creando un plan de ejecución l El código se puede compartir entre varios usuarios l SELECT FirstName LastName Phone, Fax, Email, OrgUnitId, UserName , , l FROM Asset.dbo.Contact l El contexto es propio de cada usuario l whereContactId = @P1 l Las consultas posteriores que coincidan con este plan, reutilizarán el esquema l SELECT FirstName LastName Phone, Fax, Email, OrgUnitId, UserName , , l FROM Asset.dbo.Contact l whereContactId = 11
  • 7. Reutilización de los planes de ejecución Mantenimiento de la integridad de la B.D l El plan de ejecución se elimina de la cache por el proceso Lazywriter l La tarea más importante de un administrador de base de datos es mantener la integridad de la misma. l El P.E. se elimina cuando no ha sido utilizado por un l Si este administrador no es escrupuloso podremos encontrarnos tiempo. con casos como los siguientes: l ó – Canada aparecía con 109 provincias. Una de ellas era Francia – La dirección de correo de un cliente era. “Hoy hace un día soleado” l El P.E. Se elimina cuando ocurre alguna de estas – Una misma impresora aparecía escrita de 10 formas distintas cinco cosas – Los datos han cambiado significativamente. l LA redundancia, redundancia, redundancia, hay que evitarla. – Se han creado o eliminado índices. – Las restricciones han cambiado o añadido o borrado. – La distribución estadística de los índices han cambiado – Se llama a sp_recompile El papel de los P.A. En el desarrollo Reglas complejas de aplicaciones de base de datos l Esto es por el uso de aproximaciones procedimientales y no l Mantenimiento de la integridad de la B.D. procedimientales l Implementación consistentes de reglas de negocio y restricciones, todas ellas, complejas de implementar l Diseño modular l Mantenimiento l Reducción del tráfico de red l Ejecución mas rápida l Control de la seguridad
  • 8. Reducción del tráfico de red Diseño modular l Los P.A. Permiten a los programadores encapsular las l Una de las principales desventajas de una funcionalidades de negocio y facilitan a los usuarios arquitectura de servidor de ficheros o una estructura (normalmente otros programas) una interfaz mas fácil. descentralizada es que existe un gran tráfico de datos entre el servidor y el cliente. l Los P.A. Se comportan como cajas negras. l Los usuarios no tienen porque saber como estan l Una buena construcción actual de B.D. Implica que implementados, sino qué es lo que hacen, qué parámetros hay el cliente reciba solo aquello que necesita. Los datos que pasarles y qué resultado devuelven. intermedios no se pasan. l Las personas estan limitadas por la cantidad de información que son capaces de procesar. Los P.A. Facilitan esta labor Mantenimiento Ejecución mas rápida l Los P.A. Tienen varias ventajas de rendimiento l El proceso de diseñar un sistema es cíclico. respecto a las consultas almacenadas l Los sistemas necesitan ser revisados y mejorados . l Los P.A. Se almacenan de forma compilada en la cache de P.A. => cuando se necesitan, no tenemos l Ocultando la estructura de la B.D. Los que realizar el parsing y la recompilación. administradores pueden reducir la necesidad de cambiar otros componentes (aplicaciones de l Los P.A. ya estan optimizados clientes, componentes intermedios
  • 9. Control de la seguridad l Una señal de un sistema de base de datos es que evita que los usuarios accedan directamente a las tablas y fuerzan a utilizar los P.A. Para funciones específicas. l Es más fácil gestionar los conjuntos de P.A. Por funcionalidad que gestionar una tabla a nivel de columnas.