SlideShare a Scribd company logo
1 of 27
Download to read offline
S
                          QL Server de Microsoft es un sistema gestor de bases de datos relacionales que se usa
                          desde en portátiles y ordenadores de sobremesa hasta en servidores corporativos, con una
                          versión compatible, basada en el sistema operativo PocketPC, disponible para dispositi-
                   vos de bolsillo, tales como PocketPCs y lectores de código de barras. SQL Server se, desarro-
                   lló originalmente en los años 80 en SyBase para sistemas UNIX y posteriormente pasado a sis-
                   temas Windows NT para Microsoft. Desde 1994 Microsoft ha lanzado versiones de SQL Server
                   desarrolladas independientemente     de Sybase, que dejó de utilizar el nombre SQL Server a fina-
                   les de IQSaños 90. La ultima.versión disponible es SQL Server 2000, disponible en ediciones
                   personales, para desarrolladores, estándar y-corporativa, y traducida a muchos lenguajes en todo
                   el mundo. En este capítulo el término SQL Server se refiere a todas estas ediciones de SQL Ser-
                   ver 2000.
                       SQL Server proporciona servicios de, réplica entre varias copias de SQL Server así como
                   con otros sistemas de bases de datos. Sus Analysis Services.tservicios      de análisis). una parte
                   integral del sistema, incluye dispositivos de procesamiento en conexión analítico (OLAP. Onli-
                   ne Analytical Processiñg) y recopilación de datos. SQLServer proporciona una gran colección
                   de herramientas gráficas y «asistentes» que guían a los administradores de las bases de datos
                   por tareas tales como establecer copias de seguridad regulares. réplica de datos entre servido-
                   res y ajuste-del rendimiento de una base de datos. Muchos entornos de desarrollo soportan SQL
                   Server, incluyendo Visual Studio de Microsoft y productos relacionados, en particular los pro-
                   ductos y servicios .NET.




SQL Server proporciona un conjunto de herramientas                 una herramienta de.consulta visual que permite 'al admi-
para gestionar todos los aspectos del desarrollo de SQL            nistrador de la base. de datos el uso de capacidades de
Server, consulta, ajaste, verificación y administración.           arrastrar y soltar para construir consultas visualmente.
La mayoría de estas herramientas se centran alrededor                  El diseñador de bases de datos es una herramienta
del Administrador corporativo de SQL Server, El admi-              visual que permite al administrador de la hase de datos
nistradof corporativo es un complemento accesorio de               crear tablas. columnas, claves. índices, relaciones y res-
Microsoft Management       Console (MMC), una herra-               tricciones. Con el diseñador de bases de datos, un usua-
mienta que proporciona una interfaz común para traba-              rio puede interactuar con los objetos de la: base-de datos
jar con varias aplicaciones del servidor en una red Win-           mediante diagramas de base de datos, los cuales mues-
dows.                                                              tran de fonna gráfica la estructura de la base de datos.
                                                                   El usuario puede crear y modificar objetos que son visi-
27.1.1.Desarrollo de bases de datos                                bles sobre diagramas (tablas, columnas, relaciones y
                                                                   claves) y algunos objetos que no son visibles en los dia-
       y herramientas visuales
                                                                   gramas (índices y restricciones). La Figura 27.1 mues-
Mientras -se diseña una base de datos, el administrador            tra el diagrama de una base de datos abierto con el Admi-
de la base de datos crea objetos de bases de datos tales           nistrador corporativo.
como tablas, coulmnas, claves. índices; relaciones, res-
rricciones y vistas. Para ayudar a crear estos objetos -el         27.1.2. Herramientas de consulta y ajuste
Administrador corporativo de SQL Server proporciona
                                                                           de las bases de datos
acceso a herramientas visuales de bases de datos. Estas
herramientas proporcionan tres mecanismos para.ayu-                SQL Server proporciona herramientas para ayudar al
dar al diseño de la base de datos: el diseñador de bases           proceso de desarrollo de aplicaciones. Se pueden desa-
de datos, el diseñador de tablas yel diseñador de vis-             rrollar y verificar inicialmente las consultas y procedi-
tas. Las herramientas visuales también proporcionan                mientos 'almacenados utilizando el Analizador de CQn-
                                                             645
FUNDAMENTOS   DE BASES    DE DATOS




   S,
  E:I Raíz
       El-'.
              de la consola
             Servidores Microsoft SQL Server
                 Grupo de SQL Server
             Él" PC-FERNAN,[Windows NT)
                 Él,·QBases de datos
                     rE", fi1 master
                     !±J lj model
                     ¡íJ", l] msdb
                     ~lj Northwind
                         '·~.ííW
                         ."~        Tablas
                         , fJó' Vistas
                         .....
                            ~., Procedmientos e
                         ."     Usuarios         ,
                         '.     Funciones;
                         , --: -:
                                Reglas
                         : .Q Valores predeterr
                         l·fb Tipos de datos d
                         ¡.s¡¡
                                                                              _.
                                                                              _.
                                                                            "',:'
                                Fu~ciones definí(,
                         :.tiI Catálogos de tex ,                             -
                                                                              --
                     fij
                     tfj
                            pubs
                               temodb
                                                                              -
                                                                              -
                                                                              -
FIGURA 27.1. Diagrama          que muestra   las opcíonesdel   diseñador de tablas para la tabla de empleados,



sultas de SQL Server, el cual proporciona herramientas                    y soltar objetes o nombros de tablas en la tabla. Tam-
básicas de consulta yajuste de las bases de datos. Se                     bien incluye.la herramienta de depuración de Transacr-
pueden realizar otros análisis utilizando el Analizador                   SQL. El depurador permite a un usuario depurar paso
de ~QL Server. Las recomendaciones del ajuste de índi-                    a paso cualquier procedimiento       almacenado, .exami-
ces vienen proporcionadas      por una tercera herramien-                 nando el comportamiento de los parámetros, las varia-
ta, -el Asistente de optimización de índices.                             bles locales y las funciones del sistema mientras se eje-o
                                                                          cutan estos pasos.
27.1.2.1. Analizador de consultas de SQL                                      Un administrador     o desarrollador    de la base de
                                                                          datos puede utilizar el Analizador de consultas de SQL
EL Analizador de consultas. de SQL proporciona una
                                                                          para:
interfaz de usuario sencilla y gráfica para ejecutar con-
sultas SQLy ver los resultados. Permite varias venta-
nas de fonna qu.e pueden existir conexiones de bases de                        Analizarconsultas:  el Analizador de consultas de
datos simultánea" (una o más instalaciones de SQL Ser-                         SQL Server puede mostrar un plan de ejecución
ver), Un desarrollador de consultas puede elegir tener                         gráfico o contextual para cualquier plan de con-
resultados de consulta mostrados en una ventana de tex-                        sultas, así como mostrar estadísticas relacionadas
 to o en una rejilla. El Analizador de consultas de SQL                        con el tiempo y recursos requeridos para ejecutar
 proporciona una representación gráfica de showplan,                           cualquier plan.
 los pasos elegidos por el optimizador para la ejecución                       Dar formato a las consultas SQL: el Analizador de
  de la consulta. También proporciona informes opcio-                          consultas permite la sangría y su eliminación en
  nales de los comandos reales procesados por SQL Ser-                         las líneas de código, cambio de la caja de las pala-
  ver (una traza en el cliente) y el trabajo realizado por el                  bras o secciones de código, comentar una única o
  cliente. El Analizador de consultas de SQL viene con                         varias líneas y mostrar las consultas ctih un códi-
  un explorador de objetos y permite. al usuario arrastrar                     go de color controlado por .el usuarió.
                                                                    646
cAPlrULO21        S~QLSL'lVER DE MJCROSCTr




      >'»SELECT e. Le.l'tName, p. ProductName,  3um (d. Quantity          " d. UnitPrice)
        ~'FROMjor cer Detailsj    d
            JOIN OrClers o
               ON o.OrderID    ~ d.OrderID
            JOIN Products   p
               ON d.P~oduct~D       p.ProductID
            clOIN Emp'loyee~ e
               PN e.EmployeeID ~ o.EmployeeID
         GROUPBY' e.La~tName, p.ProductName



        Consulta 1: CO<lto de la consulta  (en relación   al .pr oceeo por rceee) :0,00 .•




                                                       •-,~ ~I__ '~'~
        Texto de la consulca:SELECT e.LastName,    p.PrQductName, 3Um(d.Quantity      ~ d.UnitPricel                     F



                                                                                            ,
          S~LEC.T
                                          ';

                         St>::eam1l.ggregat ...       Sort
                                                                   -,                       ..-,
                                                                        Hash Match! Inne .. .pr cduct s . Pr,oduc.
         Costo: o.•            Costo: 0%           cceec .    0'<
                                                                              Costo:   0'<                     c,~+-;
                                                                                                                  __


                                                                                                   Nested Loops/In .. Ne<
                                                                                                        COSto: O.•




FIGURA 27.2. Un plan de ejecución con showplan para una reunión de cuatro tablas con una agregación group by.




  • Utilizar plantilla'> para procedimientos almacena-                La Figura 27.2 muestra el Analizador de consultas mos-
    dos.funciones e instrucciones SQL básicas-el Ana-             trando el plan de ejecución gráfico para una consulta que
    lizador de consultes viene con docenas de plantillas          involucra una reunión de cuatrc tablas y una agregación.
    predefinidas para construir instrucciones LDD, y
    los usuarios pueden definir las suya.~ propias. Cuan-         27.1.2.2. Analizador de SQL
    do se ejecuta una plantilla los usuarios pueden pro-
                                                                   El Analizador de SQL es una utilidad gráfica que, per-
    porcionar valores específicos para los nombres de
                                                                   mite a los administradores de la base de datos supervi-
    objetos y columnas, tipos de datos y otra informa-
                                                                   sar y registrar la actividad de-la misma. El Analizador
    ción específica.
                                                                   de SQL puede mostrar toda la actividad del servidor en
    Arrastrar nombres de objetos desde el Explorador               tiempo real o puede crear filtros que se centren en las
    de objetos a la ventana Consulta: el Analizador de             acciones de usuarios particulares. aplicaciones o tipos
    consultas permite al desarrollador elegir la defini-           de órdenes. El Analizador de SQL puede mostrar cual-
    ción de un objeto o. para tablas y vistas. ver plan-          quier instrucción SQL o procedimiento         almacenado
    tillas para crear instrucciones insert, update, dele-         enviado a cualquier ejemplar de SQL Server (si los pri-
    te o select.                                                  -vilegios de seguridad 10 permiten] así como los datos
    Definir teclas de acceso directo y opciones de la             de rendimiento que indican cuánto tiempo la consulta
    barra de herramientas personales: el Analizador de            tardó en ejecutarse y cuánta: CPU y E/S rue necesaria y
    consultas permite definir teclas de acceso directo            el plan de ejecución que utilizó 1<J onsulta.
                                                                                                       c
    para una ejecución rápida de consultas comunes y                  EJ Analizador de SQL permite ahondar aun más en
    proporciona un control completo sobre los coman-              SQL Server para supervisarautomáticamente         teda ins-
    dos que están disponibles corno botones en la tabla           trucción ejecutada como parte de un procedimiento
    de herramientas y en qué posición aparecen los                almacenado, toda operación de modificación de datos.
    botones.                                                      todo bloqueo adquirido o liberado. o cada vez que; ere-
                                                            647
FUNDAMENTOS     DE BASES DE DATOS



ce un archivo de, base de datos. Hay docenas de even-          requiere un conocimiento completo de cómo SQL.Ser-
lOS distintos  que se pueden capturar y docenas de ele-        ver utiliza los índices y cómo el optimizador de con-
mentos de datos que se pueden capturar para cada even-         -sultas realiza sus decisiones sino cómo se utilizan real.
to. SQL Server realmente divide la funcionalidad        de      mente los datos por las aplicaciones        -Y consultas
traza en dos componentes, separados aunque conecta-             interactivas. El Asistente para optimización de índices
dos. El Analizador deSQL está en la traza del cliente.          de SQL Server es una herramienta poderosa parad dise-
Mediante el uso del Analizador de SQL un usuario pue-           ño de los mejores índices basados en la consulta obser-
de elegir guardar los datos capturados a un archivo o           vada y cargas de actualización.
una tabla, además de mostrarlos en la interfaz de usua-             El asistente ajusta una única base de datos cada vez
rio del Analizador (IU). El Analizador muestra todo             y fundamenta sus recomendaciones      sobre una carga de
evento ,que cumple el criterio del filtro mientras ocurre.      trabajo que puede ser un archivo de eventos de traza
Una vez que se han guardado los datos de la traza, el           capturados o un archivo con instrucciones SQL. El Ana-
Analizador de SQL puede leer los datos guardados para           lizador de SQL está diseñado para capturar todas las
mostrarlos o analizarlos.                                       instrucciones SQL enviadas portados los usuarios en
     En el lado del servidor está la traza de SQL, que          un cierto periodo de tiempo. Bl asistenre puede enton-
gestiona las colas de eventos generados por producto-           ces examinar los patrones de acceso a los datos para
res de eventos. Una hebra consumidora        lee los even-      todos los usuarios.aplicaciones y tablas, y realizar rece-
tos desde las colasy los filtra antes de enviarlos al pro-      mcndaciones razonables.
ceso que las solicitó. Los eventos son la unidad
principal dé actividad en lo que se refiere a la traza, y          27.1.3. Administrador ccrporotívc
 un evento' puede ser cualquier cosa que suceda dentro                     de SQL Server
 de SQL Servcr o entre SQL Server y un cliente. Por
 ejemplo, la creación o eliminación de un objeto, la eje-          Además de proporcionar acceso a las herramientas de
 cución de un procedimiento       almacenado, la adquisi-          diseño y visuales de bases de datos, el Administrador
 ción o liberación de un bloqueo, y el envío. de un archi-         corporativo de SQL, de-fácil uso, soporta administración
 vo de proceso por lotes Transact-SQL desde el cliente             centralizada de todos los aspectos de vanas instalacio-
 a SQL Server son eventos. Hay un conjunte de proce-               nes de SQL Server, incluyendo la 'seguridad, eventos,
 dimientos almacenados      del-sistema para definir qué           alertas, programación, copias de seguridad, configura-
 eventos se deberían seguir, qué datos-son interesantes            ción delservidor, ajuste, búsqueda de texto completo y
 para cada evento o dónde .guardar la información reco-            réplicas. EL Administrador corporativo de SQL Server
 gida por los eventos. Los filtros aplicados a los even-           permite aun administrador de la base de datos crear,
 tos pueden reducir la cantidad de información recogi-             modificar y copiar esquemas y objetos de la base de datos
 da: -Yalmacenada. La Figura 27.3 muestra la ficha de              SQL Server tales.corno tablas, vistas y desencadenado-
 eventos desde el cuadro de diálogo de definición de               res. Debido a que se pueden organizaren grupos varias
 traza del Analizador dc SQL.          -                           instilaciones de SQLServer y ser tratadas como una uni-
     SQL Server proporciona más de 100 eventos pre-                dad, el Administrador corporativo de SQLServer pue-
 definidos y ua usuario puede configurar 10 eventos adi-           de gestionar cientos de servidores simultáneamente.
 cionales, Las trazas en el lado del servidor se ejecutan               Aunque se puede ejecutar .en la misma computadora
 deuna fonna invisible y se puede iniciar una traza de             que el motor de SQL Server, el Administrador corporati-
 una forma automática cada vez que se inicia SQL Ser-              vo de SQL Server ofrece las misma s capacidades de ges-
 ver. Esto garantiza que siempre se recogerá cierta infor-         tión cuando se ejecuta en cualquier máquina basada. en
 mación crítica y se puede utilizarcorno    un mecanismo           Wmdows NTnooo. El Administrador corporativo de SQL
 útil de auditoria. SQL Server esta certificado para un            Server también se ejecuta sobre Windows 98 aunque no
 nivel C2 de seguridad y muchos de los eventos que pue-            están disponibles algunas capacidades en este entorno (es
 den ser objeto dé traza están disponibles exclusiva-              de mención la capacidad de utilizar el Administrador de
 mente para soportar requisitos C2 de certificación.               control de servicios, una característica de windows
                                                                   NT !2()(X),para iniciar y parar SQL Server de forma remo-
                                                                   ta). Además, la arquitectura eficiente cliente/servidor de
 27.1.2.3. Asistente paro la optimización                           SQL Server hace práctico el uso de capacidades de acce-
           de índices                                               so remoto (acceso telefónico a redes) de-Wmdows NT J2(XXl
 Con todas las posibles técnicas de procesamiento de la             así como Windows 98 para la administración y gestión.
 consulta disponibles el optimizador de consultas puede                 El Administrador corporativo de SQL Server evita que
 determinar un plan de consulta razonablemente efecti-              el Administrador- de la base de datos tenga que conocer
 vo incluso en ausencia de índices bien planeados. Sin              los pasos específicos y la sintaxis para completar un tra-
 embargo. esto no significa que una base de datos bien              bajo. Proporciona más de 20 asistentes para guiar-al admi-
 ajustada no se beneficie de buenos índices. El diseño de           nistrador de la base de datos 'en el proceso de configurar
  los mejores índices posibles para las tablas en una base          y mantener una instalación de SQL Server. La interfaz
  de datos grande es una tarea compleja, no solamente               del Administrador corporativo.aparece.en    la Figura 27.4.

                                                             648
cAPlrULO   27     SOl. SCRVEn m: MICROSOPT




                                                                                                                 El t7-uditoría de seguridad
                                                                                                                         -Audit Login
                                                                                                                         Audit Logout                      _
                                                                                                                    Procedimientos      nlmllcenadc]:;
                                                                                                                       RPC:Completed,                      _.
                                                                                                                    Sesiones                           A~
                                                                                                                                                       ~f
                                                                                                                       Exisf ngConnection              -'o,>'
                                                                                                                 E TSQL
                                                                                                                         .~¡¡tu).



le
rr
in
,-
rs.
a-
'Y
ter
ar,
tos
          FIGURA 27.3. Ficha Eventos del Cuadro de diálogo Propiedades de traza.
10-
ias
IUl-

ue-

lora
rati-
ges-
a en
,QL
                           B'Raíz'<iolocomol.
                                S.rvido'''' M.iqosoll $QL.S.,v",
                             El·e   Grupo,,';" SQl Server,
                                !"!lb PC-FERNAN [Window,           NTI
e no                               ~D Ba •• , de dOlos
o (es                                 :E lJ maslo,
                                        ::E IJ   model
or de                                   'J'll1m'db                         -_~
                                                                                 Base de datos
lows                                    ';fiJj Nor~
                                                                                 Propietario:
emo-                                    " tJ lIlI
                                        ~ ¡j' 1erJ«b                            Fechd de <;reac:rón:
or de                               m CJ    , ••vicio. de tran.IÓlrna<:i

acce-                               ·í CI   A--';'Iroción                        Tamaño:
                                    !±iU    Duplicación                                                                                    ~,50ML',
(2JX1J                              '±) CJ S"9-<idad                             Espacio disponible:
                                    if¡.:::J Se,.>:"" de   co~,
iOO.                                BJ'EJ   ~eta D.laS""icei                     Opciones       de la base   de datos:
laque
cocer
10 tra-
 adnll-
ogurar                                                                             Mantenimiento
                                                                           ,,:J.~--. ---- ,-__
                                                                                            o         •      _




nerfaz
a 27.4.   FIGURA27.4. Interfaz de! Administrador                   corporativo de SOL Server.

                                                                                         64.
FUNDAMENTOS   DE BASES'DE   DATOS




Transact-SQl, es el lenguaje de bases de datos soporta-         nas sql_variant. La función del sistema sqlvariam.pro-
do por SQL Server. Transact-SQL es un lenguaje com-             perty puede devolver detalles sobre los datos reales
pleto de programación de bases de datos que incluye             almacenados en una columna de tipo sql_variant, inclu-
instrucciones de definición y manipulación de datos.            yendo el tipo base e información del tamaño.
instrucciones iterativas y condicionales, variables, pro-
cedimientos y funciones. Transact-SQL cumple el nivel            27.2.1.2. Tipo Tab1e
de entrada de la norma SQL-92 pero también soporta               Table es un tipo que permite a una variableguardar un
varias características desde los niveles intermedios y           conjunto de filas; Este tipo se utiliza principalmente para
superiores. Transact-SQL también soporta extensiones             especificar el tipo devuelto por las funciones que devuel-
a la norma SQL-92.                                               ven tabla. Una variable table se comporta como una
                                                                 variable local. Tiene un ámbito bien definido, que es la
27.2.1. Tipos de datos                                           función, procedimiento almacenado. o proceso por lotes
                                                                 en el cual se declara ..Dentro de este ámbito se puede
SQL Server proporciona un conjunto de tipos de datos             utilizar una variable lable como una tabla nonna!. Se
primitivos que definen todos los tipos de datos que se           puede aplicar en cualquier lugar donde se utiliza una
pueden utilizar con SQL Server. El conjunto de tipos de,         tabla o expresión de tabla en instrucciones select.Insert,
datos primitivos incluyen:                                       update y,delete.
                                                                     Las variables table se limpian automáticamente al
    • Un conjunto completo de tipos de enteros con sig-
                                                                 final de la función, procedimiento almacenado o pro-
       no con 1,2,4 Y8 bytes de precisión (tinyint. sma-
                                                                 ceso por lotes en el cual se definen. Además, las varia-
       llint. int y bigint) .
                                                                 bles table utilizadas en procedimientos almacenados
    • Un tipo de datos bit con valoresO 0,_ I (bit)              resultan en menos recompilaciones de 'estos procedi-
    • Tipo decimal con 38 dígitos de precisión (decimal,         mientos que cuando se utilizan las tablas temporales.
       nunieric)                                                  Las transacciones que involucran las variables table
       Tipos de moneda con precisión de 1/l 000 de la            duran solamente en la actualización de la variable table
       unidad monetaria (money.smallmoney)                       por lo que las variables rable requieren menos: recursos
                                                                  de bloqueos y de registro histórico.
    • Tiposde fecha-y hora con una precisión de hasta
        3.33 milisegundos (datetime, small-datetime)
                                                                 27.2.2. Funciones definidas por el usuario
    • Tipos en coma flotante de precisión sencilla y doble
        (real, ñoat)                                             Las funciones definidas por el usuario permite a los mis-
        Tipos, de cadenas de caracteres de tamaño fijo y         mos definir sus propias funciones Transact-SQL median-
        variable de hasta 2'°_1 caracteres, Unicode y no         te el uso de la instrucción create function. SQL Servcr
        Unicode (char/nchar, varchar/nvarchar, text/ntext)       soporta las funciones que devuelven un tipo escalar o
    • Cadenas de bytes de tamaño fijo y variable de has-         una tabla. Las funciones escalares se pueden utilizar en
        ta 2'1_1 bytes (binary, varbinaiy, image)                cualquier expresión escalar dentro de una instrucción
                                                                 LMD o LDD de SQL. Las funciones que devuelven
        Un tipo cursor que pennite referencias a un obje-        tablas se pueden utilizar en cualquier lugar donde se
        to cursor (cursor)                                       permita una tabla el] una instrucción select. Las fun-
     • Tipos de datos de identificadores únicos globales         cienes que devuelven una tabla cuyo cuerpo contiene
       'y para la base de datos                                  una única instrucción SQL select se tratan como una
                                                                 vista (entre líneas expandida) en la consulta que hace
    Además. SQL Server soporta los tipos sql_variant      y      referencia a la función. Puesto, que las funciones que
 table descritos 'en los apartados 27.2.1.1 y 27.2.1.2.          devuelven una tabla permiten la introducción de argu-
                                                                 mentos, las funciones entre líneas que devuelven tablas
 27.2.1.1. TIpo Variant                                          se pueden considerar vistas paramctrizadas.
 Sql_variant es un tipo de datos escalar que permite a
 una columna de una fila, variable o argumento de fun-               27.2.3. Vistas
 ción contener valores de cualquier tipo escalar SQL
 (excepto text, ntext, image, rowversion y sql_variant).             Una vista es una tabla virtual cuyos contenidos están
 Es utilizado por aplicaciones que necesitan almacenar               definidos por una instrucción select. Las vistas son un
  datos-cuyo tipo no se puede conocer cuando se definen              poderoso mecanismo de modelado de datos y seguri-
  los datos. Internamente el sistema guarda el tipo origi-           dad. Las vistas indexadas (Apartado 27.2.3.1) también
  nal de datos. Es posible filtrar, reunir y. ordenar colum-         pueden proporcionar un beneficio sustancial en el ren-
                                                               .so
CAPITULO 21   SOL SUi'hR D~ MICRO'SOfT



       ctimiento. Las tablas referenciadas por la definición de              vista. Las instrucciones de actualización de las tablas base
       la vista se conocen como tablas base. En el ejemplo que               se propagan autométicamente a los índices de la vista .
       sigue, vtstauuúos es una vista que selecciona los datos
       desde tres tablas base: título, auiortiudo y títulos. Es41s           27.2.3.2. Vistas divididas
       tablas son parte de la base de datos ejemplo pubs inclui-
       da con SQL Server.                                                    Las vistas divididas se, utilizan para dividir los datos
                                                                             entre varias tablas, bases de datos o ejemplares de SQL
       create view vistatítulos as                                           Server con el fin de distribuir la carga de trabajo. Si los
           select título, auord, au_nombre,       precio, ventas,            datos se dividen entre varios servidores, se pueden pro-
           ideditorial                                                       porcionar los mismos beneficios en el rendimiento que
           from autores as a joln autonítulo      as al 00 (a.au_id          un agrupamiento de servidores y se puede utilizar para
           = at.au_id)                                                       soportar las necesidades de procesamiento de los mayo-
               join títulos as t 00 (t.títulojd   e   at.títulojd)           res sitios Web o centros de datos corporativos. Una tabla
                                                                             base se puede dividir-en varias tablas miembro, cada
           Se puede hacer referencia a la vista vistatiudas en               una de las cuales tiene un subconjunto de filas de la tabla.
       instrucciones de la misma forma a corno se haría con                  original. Cada servidor debe tener definición de la tabla.
       una tabla base:                                                       dividida. Una vista dividida utiliza el operador unión
                                                                             para combinar todas las divisiones en las tablas base en
                         select '"                                           un único conjunto de resultados que se comporta exac-
                         Irom visrantulos                                    tamente como una copia de la tabla original completa.
                         where precio >= 30                                  Por ejemplo, una tabla de clientes se puede dividir entre
                                                                             tres servidores. Cada servidor debe tener una división
           Una vista puede hacer referencia a otras vistas. Por              de la tabla base disjunta como sigue:
       ejemplo vístautulos presenta información que es útil
       para administradores, pero las empresas normalmente                      • En Servidor 1:
       revelan sus datos de venta sólo en los informes trimes-                       create rabie Cliente_33     e
       trales o anuales. Se puede construir una vista que selec-                         IDCliente integer primary key
       cione todas las columnas de vistatítulos excepto au_ord                               check (IDCliente     between          1 and
e      y ventas. Esta nueva vista puede ser utilizada por los                                32999),
e      clientes para obtener listas de los libros disponibles sin                       Otras definiciones de columna)
       ver la información financiera:                                             En Servidor2:
                                                                                     create table Cliente_66.(
           create vlew Cust vistatítulos as                                               IDCliente integer primary key
           select título. aunombre.precio,  id_editorial                                       check (IDCliente between 33000 and
           from vistatítulos                                                                   .65999),
s-
                                                                                          ... Otras definiciones de columna)
o-         Las consultas que emplean las vistas se optimizan
                                                                                • En Servidor3:
"
o
       expandiendo la definición de la vista en la consulta (en
       otras palabras. el optimizador basado en el coste opti-
                                                                                     create reble Cliente_99 (
                                                                                          IDCliente integer primary key
'0     miza toda la consulta como si se hubiera realizado sin
                                                                                               check (IDClientebetween    66000 and
5n     el uso de vistas).
en                                                                                             99999),
se                                                                                        ... Otras definiciones de columna)
       27.2.,3.1. Vistas indexadas
               .
m-
       Además de las vistas tradicionales como se definieron en                 Después de crear las tablas miembro, el administra-
:ne
       la norma ANSI de SQL. SQL Server soporta las vistas                   dor de la base de datos define una vista dividida distri-
m'     indexadas (materializadas). Las vistas indexadas pueden               buida en cada servidor, cada vista teniendo el mismo
sce
       mejorar sustancialmente el rendimiento de las consultas               nombre. La vista dividida distribuida para Servidorl se
jue
       complejas de ayuda a la toma de decisiones que recupe-                definiría como sigue:
gu-
       Tan un gran número de filas y agregan grandes cantida-
ilas
       des de información en sumas recuentos y medias. SQL                      create view Clientes as
       Server soporta la creación de índices agrupados en una                   select :1< Irom Baseüeüatos.Propictario'Iabla.
       vista y subsecuentemente       cualquier número de índices               Clientes_33
       no agrupados. Una vez que se indexa una vista, el opti-                  union all
       mizador puede utilizar sus índices en consultas que hacen                select :1< from Server2.BaseDeDatos.Propietario
stan
        referencia a la vista o sus tablas base. Las consultas exis-            Tabla.Clientes_66
o un
        tentes se pueden beneficiar de la eficiencia mejorada de                union all
mri-
        la recuperación de los datos directamente de la viS14inde-              select :1< Irom Serverá.BasefteDatos.Propjetario
bién
        xada sin tener que ser reescrita para hacer- referencia a la            Tabla.Clientes_99
ren-
                                                                       651
FUNDAMENTOS   DE BASES   DE DATOS




     Sobre-Serverz y Server3 se definirían vistas similares.           un desencadenador   instead (Apartado 27.2.4) definido
         El hecho de tener la vista definida sobre cada servi-         para la operación. Los desencadenadores insert para las
     dor permite a las consultas que hacen referencia al nom-          operaciones ínsert, update o delete se pueden definir
     bre de la vista dividida y distribuida ejecutarse en cada         en una vista para especifiear las actualizaciones que se
     uno delos servidores miembro. El sistema opera como               deben ejecutar en las tablas base para implementar las
     si en cada servidor miembro hubiera una copia com-                modificaciones correspondientes    en la vista.
     pleta de la tabla original, aunque cada servidor tenga
     solamente una tabla miembro local y. una vista dividi-            27.2.4. Desencadenadores             (disparadores)
     da y distribuida que referencia a la tabla local y las dos
     tablas remotas. La ubicación de los datos es transpa-             Los desencadenadores        son procedimientos       Transact-
     rente a la aplicación. Con estas tres vistas, cualquier ins-      SQL que se ejecutan automáticamente cuando se envía
     trucción Transact-Sfjl.   sobre cualquiera de los tres ser-       una instrucción update, insert o delete a una tabla base
     -vidores que haga referencia a Clientes verá los mismos           o vista. Los desencadenadores       son un mecanismo que
     resultados que desde la tabla original. Se puede acce-            posibilita la aplicación de la lógica del negocio de for-
     der a las vistas divididas no solamente mediante, ins-            ma automátiea cuando. se modifican los datos. Los
     trucciones select sino también mediante instrucciones             desencadenadores      pueden extender la lógica de verifi-
     insert. update y delete, incluyendo instrucciones que             cación de la integridad de restricciones         declarativas,
     afectan a varias divisiones e incluso aquellas que requie-        predeterminadas y reglas" aunque las restricciones decla-
     ren trasladar filas de una división a otra.                       rativas se deberían utilizar preferentemente siempre que
                                                                       se satisfagan las necesidades.
     27.2.3.3. Vistas actualizables                                        Hay dos clases generales de desencadenadores            que
                                                                       difieren en el tiempo con respecto a la instrucción de
     Generalmente las vistas puede ser el objetivo de las ins-
                                                                       desencadenamiento,      bajo la que se realiza la acción. Los
     trucciones update, delete o insert si la modificación de
                                                                       desencadenadores      after se ejecutan después de la ins-
     los datos se aplica a solamente una de las tablas base
     de la vista. Las actualizaciones  de las vistas divididas
                                                                       trucción de desencadenamiento         y se aplican posterio-
                                                                       res restricciones   declarativas. Los desencadenadores
     se pueden propagar a varias tablas base. Por ejemplo,
                                                                       instead se ejecutan en lugar de la acción de desenca-
     la siguiente instrucción update incrementará los-pre-
                                                                       denamiento. Los desencadenadores           instead son simi-
     cios pata el editor «0736>:· en un 10 por ciento.
                                                                       lares a los desencadenadores       befure, pero realmente
                    update vistatítulos                                reemplazan la acción de desencadenamiento.            En SQL
                    set precio = precio * 1.10                         Server los deseñcadenadores        añer se pueden definir
                    where ideditorial   = '0736'                       solamente sobre, tablas base mientras que los desenca-
                                                                       denadores instead se pueden definir sobre tablas base
•
1,      Para las modificaciones    de los datos que afectan a          o vistas. Los desencadenadores        lnstead permiten que
     más de una tabla base, la vista se puede actualizar si hay        se pueda actualizar prácticamente cualquier vista.




     En SQL Server una base de datos se refiere a una coleo-               vos conocido corno el grupo de archivos primario. Este
     ción de archivos que contienen datos y que son soporta-               grupo de archivos contiene todos Los metadatosde         la
     dos por un único registro histórico de transacciones. La              base de datos en tablas del sistema. El grupo de archi-
     base de datos es la unidad principal de administración en             vos primario también puede contener datos de usuario.
     SQL Server y también proporeiona un contenedor para                       Si se crean grupos de archivos definidos por el usua-
     estructuras físicas tales Como tablas e índices y para                rio adicionales, un usuario puede controlar de forma
     estructuras lógicas tales como restricciones, vistas, etc.            explícita la ubicación de las tablas individuales, índices
                                                                           o las columnas de objetos grandes de una tabla ubicán-
                                                                           dolas en un grupo de archivos. Por ejemplo, el usuario
      27.3.1. Grupos de archivos
                                                                           puede elegir almacenar una tabla en el grupodearchi-
      Con el fin de gestionar el espacio en una base de datos              vosA, su índice no agrupado en grupodearchivosb       y las
      de forma efectiva" el coqjuruo de archivos, en una base              eolumnas de objetos grandes de la tabla en grupodear-
      de datos se divide en grupos denominados grupos de                   chivase. La ubicación de estás tablas e índices en dis-
      archivos (filegroups). Cada grupo de archivos contiene               tintos grupos de archivos permite al usuario controlar
      uno o más archivos del sistema operativo'.                           el uso de los recursos de hardware (esto es, discos y el
          Toda base de datos tiene-al menos un grupo de archi-             subsistema E/S). Uh grupo de archivos en concreto se
                                                                    652,
CAPiTULO 27   SOL SERVER DE MICROS9FT



 considera siempre el grupo de archivos predetermina-                mite a los archivos disminuir. Con el fin de disminuir un
.do; inicialmente, el grupo de archivos predeterminado               archivo de datos, SQL Server traslada 1:0005los datos des-
 es el grupo de archivos primario, pero se' puede dar a:             de el fin físico del archivo a un punto más cercano al ini-
 cualquier grupo de archivos definido por el usuario la              cio del archivo y entonces realmente reduce el archivo,
 propiedad de.determínado. Si una tabla o índice no está             devolviendo el espacio al sistema operativo;
 ubicada específicamente     en un grupo de archivos, se
 crea en el grupo de 'archivos predeterminado.
                                                                     27.3.3. Tablas

27.3.2. Administración       del espacio en grupos                    SQL Server soporta dos organizaciones diferentes para
                                                                      las tablas: montículos e índices agrupados. En una tabla
        de archivos
                                                                      organizada en montículos la ubicación de cada fila de
Uno de los muchos propósitos principales es permitir                  la tabla se determina completamente mediante el siste-
una gestión de espacio efectiva. Todos los archivos de                ma y. no es especificada de ninguna forma por el usua-
datos se dividen en unidades de 8 Kbytes de espacio fijo              rio. Las filas de un. montículo tienen un identificador
denominadas páginas. El sistema de asignación es res-                 fijo como identificador de fila (RlD, Row ldentifier) y
ponsable de asignar estas páginas a tablas e Jndices. El              su valor nunca cambia a no ser que se reduzca el archi-
objetivo del sisterna de asignación es minimizar la can-             vo y la fila se traslade. Si la fila se torna lo suficiente-
tidad de espacio malgastado mientras que, al mismo                    mente grande para no caber en la página en la que se
tiempo, mantener el nivel de fragmentación de la base                 insertó originalmente, el registro se mueve a un lugar
de datos en el mínimo pata as<:;gurar un buen rendi-                  distinto, pero se deja un resguardo en la ubicación ori-
miento de exploración. Con el fin de lograr este objeti-              ginal de forma que el registro todavía se puede encon-
vo el administrador de asignación normalmente asigna                  trar utilizando su RID original.
y desasigna todas las páginas en unidades de ocho pági-                   En una organización agrupada por índices para una         I
nas contiguas denominadas' extensiones.
    El sistema de asignación gestiona estas extensiones
                                                                      tabla, las filas de la tabla se almacenan en un árbol B+
                                                                     ordenado mediante la clave de agrupamiento del índice.
                                                                                                                                    i
mediante varios mapas de bits. Estos mapas de bits per-
miten al sistema de asignación encontrar una página o
extensión para la asignación de una forma rápida. Estos
mapas de bits también se utilizan cuando se ejecuta una
tabla completa o exploración de 'índices. La ventaja de
                                                                     La clave de índice agrupado también sirve coma el iden-
                                                                      tificador único para cada fila. La clave para un índice
                                                                     agrupado se puede definir como no único, en cuyo caso
                                                                     SQL Server agrega una columna oculta adicional para
                                                                     hacer la clave única. El índice agrupado también sirve
                                                                                                                                    I
usar mapas de bits basados en la asignación para la                  como una estructura de búsqueda para identificar una
exploración es que permiten recorridos en e1 orden del               fila de la tabla en una clave particular o explorar un con-
disco de todas las extensiones que pertenecen a una tabla            junto de filas de la tabla con claves con un cierto' rango.
o en el nivel de las hojas de los índices, lo que mejora
significativamente el rendimiento de la exploración.
    Si hay más de un archivo en un grupo de archivos,
el sistema de asignación proporciona extensiones para
cualquier objeto en ese grupo de archivos utilizando un
algoritmo de «relleno proporcional». Cada archivo se
                                                                     27.3.4. índices
                                                                     La forma más común 'de indexación son los índices no,
                                                                     agrupados, que también se conocen como índices secun-
                                                                     darios. Estos índices son árboles B+ sobre una o más
                                                                                                                                    ¡
                                                                                                                                    1
rellena con la proporción de la cantidad de espacio libre            columnas de la tabla base. Permiten acceso eficiente de
en ese archivo comparado con otros archivos. Esto lle-               una fila de una tabla base basada en un criterio de bús-
 na todos los archivos de un grupo de archivos aproxi-               queda sobre las columnas indexadas. Además, las con-
 madamente con el mismo factor y permite al sistema                  sultas que se refieren solamente a la'>columnas que, están
 utilizar todos los archivos en un grupo de archivos de              disponibles mediante índices secundarios se procesan
 forma equitativa. Durante una exploración que utiliza               mediante la recuperación de las páginas desde el nivel
 los mapas de bits de asignación, el algoritmo de explo-             hoja de los índices sin tener que.recuperar los datos del
 ración aprovecha los distintos archivos enviando E/S                índice agrupado o montículo.
 separadas a cada uno de los archivos.                                   SQL Server soporta la adición de columnas calcula-
     Una de las mayores decisiones al configurar una base            das a una tabla. Una columna calculada es una colum-
 de datos es determinar su tamaño. SQL Server permité.a              na cuyo valor es una expresión, normalmerue basada en
 los archivos de datos cambiar su tamaño después de crear            el valor de otras columnas en esa fila. SQL Server per-
 la base de datos. El usuario puede incluso elegir hacer             mite al usuario construiríndices secundarios sobre co-
 que el archivo de datos crezca automáticamente si la base           lumnas calculadas.
 de datos se queda sin espacio. Parella, el usuario puede
 configurar la base, de datos a una aproximación razona-
                                                                     27.3.5. Explonrcíones     y lectura anticipada
 ble del tamaño esperado, pero hace que los archivos de
 la base de datos crezcan y se ajust.en al patrón de uso, si         La ejecución de las consultas en SQL Server pueden
 la aproximación inicial no es correcta. SQL Server per-                                                                            .¡
                                                                     involucrar una 'serie de distintos modos de exploración
                                                               653
FUNDAMENTOS   DE BASES DE DATOS



de las tablas e índices subyacentes. Éstos incluyen explo-         co. El algoritmo de lectura anticipada de SQL Server uti-
raciones ordenadas y desordenadas,       exploraciones en          liza el conocimiento del plan de ejecución de la consul-
serie y paralelas, unidireccionales     y bidireccionales,         ta con el fin de. conducir la lectura anticipada y asegu-
hacia delante-y hacia arras, y exploración de toda la tabla        rarse de que solamente se leen los datos que son realmente
o índice y-exploraciones de rango o filtradas.                     necesarios. Además, la cantidad de lectura anticipada se
    Cada uno de los modos de exploración tiene un meca-            dimensiona de forma automática según el tamaño de la
nismo de lectura anticipada que intenta anticiparse a las          memoria intermedia. la cantidad de E/S que el subsiste-
necesidades del plan de ejecución con el fin de-reducir la         ma del disco puede sostener y la velocidad a la que el
latencia y gastos y utilizar el tiempo sin trabajo del dis-        plan de ejecución puede consumir los datos.




El procesador de consultas de SQL Server está basado en                     Optimización    basada en el coste. El optimizador
un entorno extensible que permite una rápida incorpora-                     aplica la exploración e implementación      de reglas
ción de nuevas técnicas de ejecución y optimización. La                     para generar alternativas, estimar el coste de la eje-
ejecución encapsula los algoritmos de procesamiento de                      cución y elegir el plan con el coste anticipado más
datos en iteradores que se comunican entre sí utilizando                    bajo. Las reglas de 'exploración implementan la
la interfaz Getlcextkowü.    La optimización genera alter-                  reordenación de operadores, incluyendo reorde-
nativas utilizando transformaciones en árbol y estima el                    nación de la reunión y de la agregación. Las reglas
coste de ejecución utilizando modelos detallados del com-                   de implementación      introducen alternativas en la
portamiento de las selectividades e iteradores.                             ejecución tales como reuniones por mezcla y reu-
                                                                            mones por asociación.
27.4.1. Visión general de los procesos                                    • Preparación   del plan. El optimizador crea estruc-
        de optimizaCión                                                     turas del plan de ejecución para el plan seleccio-
                                                                            nado.
-Las consultas complejas presentan oportunidades signi-
 ficativas de optimización que requieren la ordenación de                  La optimización basada en el coste no se divide en
 los bloques de consulta, con selección del pla-n basado               fases que optimizandistintos     aspectos de la consulta de
 en el coste estimado. SQL Server utiliza unenromo pura-               forma independiente y no está restringida a una única
 mente algebraico. El entorno de optimización de SQL                   dimensión tal como la enumeración de reuniones. En
Server se basa en el prototipo de optimizador Cascades.                su lugar una colección de reglas de transformación defi-
 Una instrucción SQL se compila como sigue:                            ne el espacio de: interés y la estimación del coste se uti-
                                                                       liza uniformemente para seleccionar un plan eficiente.
      Análisis/vinculación.     El optimizador analiza la
      instrucción    y resuelve los nombres de tablas y
                                                                       27.4.2. Simplificación     de la' consulta
      columnas mediante el uso de catálogos. Resuelve
      e incorpora vistas para generar un árbol de opera-           Durante la simplificación, el optimizador envía las selec-
      dores. Verifica la caché del procedimiento para ver          ciones del árbol de operadores tan abajo como sea posi-
      si ya hay un plan para la consulta, en cuyo caso se          ble. Verifica los predicados en busca de contradiccio-
      evita la optimización. El árbol de operadores uti-           nes teniendo en cuenta las restricciones        declaradas.
      liza un álgebra relacional extendida donde no hay             Utiliza las contradicciones   para identificar subexpre-
      noción de bloque de consulta o tabla derivada sino           -siones vacías, que se eliminan del árbol. Un escenario
      simplemente una combinación arbitraria de ope-               común es la eliminación de ramas union que recuperan
      radores relacionales.                                         les datos de las tablas con distintas restricciones .
    • SimplifiCación/normalización.     El optimizador apli-            Una serie de reglas de simplificación       son depen-
      ca reglas de simplificación sobre.el árbol de opera-         dientes del contexto, es decir, la sustitución solamente
      dores para obtener un formulario normal y simpli-            es válida en el contexto de la utilización de la subex-
      ficado. Estas reglas implementan transformaciones            presión. Por ejemplo.una reunión externa se puede sim-
      tales como enviar las selecciones hacia abajo y la            plificar en una reunión interna si una operación de fil-
      simplificación de reuniones extemasen reuniones.              trado posterior elimina reglas no coincidentes que se
       Durante la simplificación. el optimizador detenni-           rellenaron con null. Otro ejemplo es la eliminación de
       na y carga las estadísticas     requeridas para la           reuniones sobre claves externas que no se necesitan eje-
       estimación de la cardinalidad. Si-se pierden las esta-       cutar si no hay uso posterior de las columnas desde la
       dísticas requeridas, el optimizador las crea auto-           tabla referenciada. Un tercer ejemplo es el contexto de
       máticamente antes de continuar la optimización.              independencia de duplicados, que especifica que la dis-

                                                                '654
CAPITULO 27   SOL SERVER DE MICROSOFT


        tribución de una o más copias de una fila no afecta al                  Algunas aplicaciones seleccionan filas según el resul-
        resultado de la consulta. Las subexpresiones bajo semi-             tado de algún agregado para su grupo. Por ejemplo
        rreuniones y bajo distinct son independientes de dupli-             «Hallar los clientes cuyo saldo es mayor que el doble de
        cados, lo que permite cambiar union a union all.                    la media para su segmento de mercado». La formulación
            Para agrupar una agregación se utiliza el operador              SQL requiere una autorreunién. Durante la exploración
       GbAgg, que crea grupos y opcionalmente aplica una fun-              se detecta este patrón y se considera la ejecución por seg-
       ción de agregado sobre cada grupo. La eliminación de                mentos como una alternativa a la autorreunión. La utili-
       duplicados, expresado en SQL mediante la palabra cla-               zación de la vista materializada también se considera
       ve distinct es sencillamente unDhAgg sin funciones de               durante la optimización basada en el coste. El encaje de
       agregado a calcular. Durante la simplificación. la infor-           vistas interactúa con la ordenación de operadores, en la
       mación sobre las claves y dependencias. funcionales se              que el uso puede que no sea aparente hasta que se reali-
       utiliza para reducir el agrupamiento de columnas.                   ce otra reordenación, Cuando se encuentra que una vista
           Las subconsultas se normalizan eliminando especi-               se ajusta a alguna subexpresión, la tabla que contiene el
       ficaciones de consulta correlacionadas y utilizando algu-           resultado; de la vista se agrega como alternativa a la expre-
       nas variantes dé la reunión en su lugar. La eliminación             sión correspondiente. Dependiendo de la distribución de
       de correlaciones no es una «estrategia de ejecución de              datos e índices disponibles puede ser mejor o no que la
       subconsultas» sino simplemente un paso de normaliza-                expresión original (la selección se realizará basándose
       ción. Se consideran entonces una serie de estrategias de           en la estimación del coste).
       ejecución consideradas durante la optimización basada                   Para estimar el coste d~ ejecución del plan, el mode-
       en el coste.                                                       lo tiene en cuenta el número de filas que se esperan pro-
                                                                          cesar, denominado el objetivo filas, así como el núme-
       27.4.3. Reordenación       y optimización      basada              ro de veces que se ejecuta-una subexpresión. El objetivo
               en el coste                                                filas puede ser menor que la estimación de la cardina-
                                                                          lidad en casos tales como Apptytsemijoin. Appíytsemi-
        En SQL Server las transformaciones        se integran com-       join devuelve la fila t de Ttan pronto como E(t) produ-
        pletamente en la generación basada en el coste y selec-          'ce una única fila (es decir. comprueba E(t)). Por tanto,
        ción de planes de ejecución. Además dé la reordenación           el objetivo filas de la salida de ECO es 1, y los objetivos
        de la reunión interna; el optimizador de consultas emplea         filas de los subárboles de E(t) se calculan para E(t) para
        transformaciones de reordenación para los operadores             esre objetivo y se usan para la estimación del coste.
        reunión externa, semirreunión y antisemirreuníon del
,       álgebra relacional estándar (con duplicados, para' SQL).
        GbAgg se reordena también. trasladándolo debajo de               27.4.4. Planes de actualización
t
        las reuniones siempre que sea posible. La agregación              Los planes de actualizaoíón optimizan el mantenimien-
        parcial. esto es. la introducción de un nuevo "GhAgg con          to de índices, verifican las restricciones. aplican accio-
        agrupación sobre un superconjunto de las columnas de              nes en cascada y mantienen las vistas materializadas.
        un GhAgg que se encuentre más arriba. se considera                Para el mantenimiento de los índices, en lugar de tomar
       'debajo de las reuniones y union all y también en pia-             cada fila y mantener todos sus índices los planes de actua-
        nes paralelos. Véanse las referencias dadas en las notas          lización aplicanmOdlfic'aciones por índice, ordenamiento
        bibliográficas para más detalles.                                 de filas y aplican la operación de actualización según el
;-
           La ejecución correlacionada se considera durante la            orden de la clave. Esto minimiza las operaciones EIS
i~     exploración del plan¡ el caso más simple es una reunión
j-
                                                                         aleatorias. especialmente cuando el número de filas a
       de búsqueda en el índice. SQL Server modela.esto utili-           optimizar es grande. Las restricciones se manejan con
s.     zando Apply, que opera sobre una tabla T y una expre-             un operador assert, que ejecutan un predicado y envían
       sión relacional parametrizada E(t). APp/y ejecuta E pata          un 'error si el resultado es false. Las restricciones de inte-
io     cada fila de T, que proporciona los valores de los pará-
m                                                                        gridad referencial se definen mediante predicados exlst.
       metros. La ejecución correlacionada se considera como             los cuales se convierten en semirreuniones y se optimi-
       una alternativa a la ejecución. sin considerar el uso de las      zan considerando todos los algoritmos de ejecución.
n-     subconsultas en la,formulacíónSrjt, original. Es una estra-
ue                                                                           El problema Halloween se soluciona utilizando elec-
       tegia muy eficiente cuando latabla T es muy pequeña y             ciones basadas en el coste. El problema Halloween se
x-     los índices soportan la ejecución parametrizada eficien-
n-                                                                       refiere a la siguiente anormalídad: supongamos que se
       te de,E(t). Además se considera la reducción del núme-           lee en orden ascendente un índice sueldo y los salarios
11-    ro de ejecuciones de E(tJ donde hay valores de paráme-
se                                                                      se suben un 10 por ciento. Como resultado de la actuali-
       tros duplicados mediante dos técnicas: ordenar T según           zación, las filas se moverán hacia arriba en el índice y se
 de    los valores de los parámetros de forma que se reutilice
je-                                                                     volverán a encontrar y actualizar de nuevo, llevándonos
       unúnico resultado de E(t) mientras que el valor del pará-        a un bucle infinito. Una forma de solventar este proble-
da     metro no Cambia, o también utilizar .una tabla de asocia-
 de                                                                     ma es separar el procesamiento de dos fases: en primer
       ción que siga la pista del resultado de E(t) para (algún         lugar se leen todas las tilas que Se actualizarán y se hace
lis-   subconjunto) de valores anteriores del parámetro.                una copia de ellas en algún lugar temporal, después Se
                                                                  655
¡
FUNDAMENTOS   DE BASES   DE DATOS
                                                                                                                                       ¡
 leen de este lugar y se.aplican todas las actualizaciones.            mitido agregar nuevas heurísticas fácilmente a lo largo
 Otra alternativa es leer desde un 'índice distinto donde las          del tiempo, sin comprometer la selección basada en el
 filas no se trasladarán. como resultado de la actualización.          coste de los planes o la exploración exhaustiva del espa-
 Algunos planes de ejecución proporcionan la separación                cio de búsqueda, cuando es apropiado.
 de las fases de forma automática, si se ordena o constru-
 ye una tabla de asociación en las filas a actualizar. En el           27.4.6. Ejecución de la consulta
 optimizador de SQL Server la protección Halloween se
 modela como una propiedad de los planes. Se generan                   Los algoritmos de ejecución soportan el procesamiento
'varios planes que proporcionan la propiedad requerida y               basado en la ordenación y basado en la asociación, y sus
 se selecciona uno según el coste de ejecución estimado.               estructuras de datos se diseñan para optimizar el uso de
                                                                       la caché del procesador. Las operaciones de asociación
                                                                       soportan agregación y reunión básica, con una serie de
27.4.5. Búsqueda         parcial y heurísticas
                                                                       optimizaciones, extensiones y ajuste dinámico del ses-
Los optimizadores basados en el coste se enfrentan al                  go de datos. La operaciónjiuw-distinctes        una variante
problema de la explosión del espacio de búsqueda pues-                 de asociación con valores distintos (hash distinct). don-
to que.las aplicaciones emiten consultas que involucran                de las filas se devuelven tan pronto como se encuentra
docenas de tablas. Para solucionar esto, SQL Server uti-               un nuevo valor distinto, en lugar de esperar a procesar
liza varios estados de optimización, cada uno de los cua-              toda la entrada. Este.operador es efectivo para consul-
les utiliza transformaciones      de la consulta para explo-           tas que utilizan distinct Y solicita solamente unas pocas
rar regiones sucesivamente         mayores del espacio de,             filas. como con la constructora top n. Los planes corre-
búsqueda.                                                              lacionados la ejecución de E(t)"a menudo incluyendo
    Hay transformaciones simples y completas diseñadas                 varias búsquedas en el índice. basadas en el parámetro
para la optimización exhaustiva, así como transforma-                  para cada fila I de la tabla: T. La preextracción asíncro-
ciones inteligentes que implementan varias heurísticas.                na permite la:emisión de varias solicitudes de búsqueda
Las transformaciones      inteligentes generan planes que              en el índice al motor de almacenamiento. Se implemen-
están muy lejos en el espacio de búsqueda, mientras que                ta de la siguiente forma: se hace una solicitud de bús-
las transformaciones sencillas exploran' las cercanías. Los            queda en el índice sin bloqueo para una filas de T, enton-
estados de, optimización aplican una mezcla de ambas                   ces 1 se sitúa en una cola de preextracción. Se sacan las
clases de optimización, en primer lugar enfatizando en                 filas de la cola y son utilizadas por Apply para ejecutar
las transformaciones inteligentes y posteriormente cam-                E(i). La ejecución de E(t) no requiere que los datos ya
biando a transformaciones        sencillas, Se, preservan' los         estén listos en la memoria intermedia, pero tener buenas
resultados óptimos en los subárboles. de forma que los                 operaciones de preextracción maximiza la utilización
estados posteriores se pueden beneficiar de los resulta-               del hardware e incrementa el rendimiento. El tamaño de
dos generados con anterioridad. Cada estado necesita                   la cola se determina dinámicamente como una función
equilibrar técnicas de generación de planes opuestas:                  de aciertos en caché. Si no se requiere ninguna ordena-
                                                                       ción.dc las filas de salida de Apply; las, filas de esta cola
    • 'Generación      exhaustiva    de alternativas:  para            se pueden descartar para minimizar la espera en la E/S.
      generar el espacio completo el optimizador debe-                      La ejecución en paralelo se implementa mediante el
       ría utilizar transformaciones    completas; locales,            operador Iixchange, que gestiona varias hebras, parti-
       no redundantes (una regla de transformación equi-               ciones o datos de difusión y alimenta los datos a varios
       valente a una secuencia de más transformaciones                 proceses. El optimizador de consultas decide la ubica-
       primitivas solamente introduce costes adiciona-                 ción dé Exchange según el coste estimado. El grado de
       les).                                                           paralelismo se determina dinámicamente en tiempo de
    • Generación    heurfstica de candidatos:   una serie              ejecución, según la utilización actual del sistema .
      de candidatos interesantes (seleccionados según el                    Los planes de índices están formados de' los trozos
      coste estimado) probablemente están lejos en tér-                descritos anteriormente.     Por ejemplo, se considera el
      minos de reglas de transformación primitivas. Aquí               uso de una reunión de índices para resolver las conjun-
      las transformaciones    deseadas son incompletas,                ciones de predicados (o unión de índices para las dis-
      globales y redundantes.                                           yunciones), basándose en el coste. Dicha reunión se pue-
                                                                        de realizar en paralelo, utilizando cualquiera de los
     La optimización se puede terminar en cualquier pun-                algoritmos de reunión del servidor. También se consi-
 to después de que el primer plan se haya generado. Tal                 deran reuniones de índices para el único propósito de
 terminación se basa en el coste estimado del mejor plan                ensamblar una fila con el conjunto de columnas nece-
 encontrado y el tiempo gastado ya-en la optimización.                  sario en una consulta, que es algunas veces más rápido
  Por ejemplo, si una consulta requiere solamente mirar                 que explorar una tabla base. Tomar identificadores de
  unas pocas filas en algunos índices, se producirá rápi-               registros de un índice secundario y localizar la fila
  damente un plan muy barato en los primeros estados,                   correspondiente de la tabla base es efectivamente equi-
  terminando la optimización. Este enfoque nos ha per-                  valente a ejecutar una reunión de búsqueda en índice.

                                                                 656
cAPlrULO   21   SQL SC)1VCP'DE MIC;;EOSOFT



    Para ello se usan las técnicas genéricas de-ejecución                tas distribuidas y remotas, que, las maneja directamen-
    correlacionada como la preextracción asfncrcna.                      te el procesador de consultas. Los proveedores de datos
        La comunicación con el motor de almacenamiento                   se clasifican según el rango de funcionalidad que pro-
    se realiza mediante OLE-DR, lo que permite acceder a                 porcionan, desde simples proveedores de conjuntos de
    otros proveedores de datos que implementan esta inter-               filas sin capacidades de indexación a proveedores con
    faz. OLE-OB es un mecanismo utilizado para consul-                   soporte completo de SQL.




    Los subsistemas de transacciones,    registro histórico,              instrucción falla.se puede retroceder sin tener que retro-
    bloqueos y recuperación aseguran las propiedades AClD                ceder loda la transacción. Un punto de almacenamien-
    esperadas de un sistema de bases de datos.                           to con nombre es· una instrucción save transaction
                                                                         enviada por una aplicación que etiqueta un punto en la
    27.5.1.Transacciones                                                 transacción. Se puede enviar una instrucción rollback
                                                                         posterior para retroceder 'hasta el punto con nombre.
    En SQL Server todas las instrucciones son atómicas y                 Un retroceso a un punto de almacenamiento        no libera
    las-aplicaciones   pueden especificar varios niveles de              bloqueos y no se puede utilizar en transacciones dis-
    aislamiento ,para cada instrucción. Las.transacciones    se          tribuidas.
    utilizan para encuadrar una secuencia de instrucciones"
    haciendo el conjunto completo atómico y controlando                  27.5.1.2. Opciones de concurrencia
    su aislamiento desde otras transacciones. Una única tran-                     para cctuctrscctcnes
    sacción puede incluir instrucciones que no solamente
                                                                         SQLServer ofrece control de concurrencia optimista y
    seleccionan, insertan, borrar o actualizan registros, sino
                                                                         pesimista para las operaciones de actualización.
    que también crean o eliminan tablas, construyen índi-
                                                                             El COntrol de concurrencia optimista funciona bajo
    ces y realizan importaciones masivas de datos. Las tran-
                                                                         la suposición de que los conflictos de recursos entre
    sacciones pueden abarcar bases de datos en servidores
                                                                         varios usuarios son poco probables (aunque no imposi-
    remotos. Cuando las transacciones        se extienden por
                                                                         bles) y permite a las transacciones ejecutarse sin blo-
    varios servidores, SQL Server utiliza un servicio del sis-
                                                                         quear ningún recurso. Solamente cuando se intentan
    tema operativo windows, denominado coordinador de
                                                                         cambiar los datos se verifican los recursos para deter-
    transacciones distribuidas (Microsoft Distributed Tran-
                                                                         minar si han ocurrido conflictos. Si sucede un conflic-
    saction Ccordinator, MS DTC) para ejecutar un proce-
                                                                         to, la aplicación debe leer los datos e intentar el cambio
    samiento de compromiso de dos fases. MS PTC sopor-
                                                                         de nuevo. Las aplicaciones pueden elegir si se detectan
    ta el protocolo de transacción XA y, junto con OLE-OB,
                                                                         los cambios comparando los valores o verificando la
    proporciona el fundamento para transacciones ACID
                                                                         columna especial rowversion de una fila. El control de
    entre sistemas heterogéneos.
                                                                         concurrencia optimista requiere el uso de cursores.
                                                                             El control de concurrencia     pesimista bloquea los
    27.5.1.1.Puntos de almacenamiento                                    recursos cuando se requieren durante la duración de una
    SQL Server soporta dos tipos de puntos de almacena-                  transacción. A no ser que ocurran interbloqueos se ase-
    miento: de instrucciones y con nombre. Los puntos de                 gura la finalización satisfactoria de una transacción. El
    almacenamiento de instrucciones son puntos tomados                   control de concurrencia pesimista es el predeterminado
    al comienzo de una: instrucción de fO(01a que, si una                para SQL Server.



                                                                                                                             I
                   RID                 Identificador   de fila, usado para bloquear   una única fila de una tabla

                   Clave               Bloqueo de fila en un índice; protege     tos rangos de clave en teensecciones
                                       secuencíablee
                   Página              Página de tabla o indice de 8 Kbyte
                   Extensión           Grupo contiguo     de ocho páginas de datos o de índice

                   Tabla               Tabla completa,    incluyendo   todos los datos a índices

1                  BD                  Base de datos

    FIGURA 27.5.   Recursos bloqueables.


                                                                   657
FUNDAMENTOS   DE BASES DE DATOS


                                                               guracién (frecuentemenle estáticos) para gestionar cuán-
27.5.1-.3. Niveles de aislamiento
                                                               ta memoria dedicar a la administración del bloqueo.
SQL~92 define los siguientes niveles de aislamiento,                En SQL Server la granularidad del bloqueo se opti-
todos ellos soportados por SQL Server:                         m-iza automáticamente para un rendimiento y concu-
                                                               rrencia óptimos para cada índice de una consulta. Ade-
   • Lectura no comprometida (nivel inferior donde las
                                                               más, la memoria dedicada al administrador de bloqueos
     transacciones se aislan solamente para asegurar
                                                               se ajusta dinámicamente segun la realimentación des-
     que no se leen físicamente datos corruptos).
                                                               de otras partes del sistema, incluyendo otras aplicacio-
   • Lectura comprometida (Nivel pre9-et~rminado de             nes de la máquina.
      SQL Server)                                                   La granularidad del bloqueo se optimiza antes de la
   • Lectura repetible                                          ejecución de la consulta para cada tabla e fndice utiliza-
      Secuenciable (nivel' superior, .donde las transac-        do en la consulta. El proceso de optimización del blo-
      ciones están completamente aisladas entre sí)             queo tiene en cuenta el nivel de aislamiento (esto es.
                                                                cuánto tiempo se mantienen los bloqueos), el tipo de
                                                                exploración (rango, prueba o toda la tabla), el número
27.5.2. Bloqueos                                                estimado de filas a explorar, la selectividad (porcentaje
 SQL Server proporciona bloqueos de varias granulari-           de filas visitadas que son resultado de la consulta), den-
 dades que permiten que una transacción bloquee distin-         sidad de filas (número de filas por página); tipo de ope-
 tos recursos (véase la Figura 27.5, donde los recursos se,     ración '(exploración, actualización). limites del usuario
 listan en orden creciente de granularidad). Para mini-          sobre la granularidad y memoria del sistema'disponible.
 mizar el coste del bloqueo, SQL Server bloquea los recur-           La Figura 27.6'muestra una consulta ejemplo donde
 sos automáticamente a una granularidad apropiada para           las filas resultado se identifican mediante una explora-
  la tarea. El bloqueo a una granularidad menor, tal como        ción de rango de un índice y después se recuperan las
  ñlas, aumenta la concurrencia, pero tiene un coste mayor,      filas desde la tabla base. Aquí se utilizan los bloqueos
  puesto que se deben realizar más bloqueos si se bloquean       de página sobre el índice, puesto que con un rango den-
  muchas filas. El bloqueo a una granularidad mayor, tal         so de filas del índice se requieren solamente unos pocos
  como tablas, es costoso en términos de concurrencia            bloqueos de página. Sin embargo, las filas de la tabla
  puesto que el bloqueo de,una tabla completa restringe a        base están dispersas por toda la tabla y por ello el blo-
  otras transacciones el bloqueo a cualquier parte de la         queo en un nivel de fila proporciona una concurrencia
  tabla, pero tiene unos costes de CPU y memoria meno-           mucho mayor. En general, la optimización del bloqueo
  res, ya que se adquieren menos bloqueos.                        favorece la concurrencia en sus decisiones. Una vez se
       Los modos de bloqueos disponibles son compartido           ejecuta una consulta, la granularidad de bloqueo se
   (S, shared), de actualización (U. update) y exclusivo (X,      dimensionaautomáticamenté hasta el nivel de tabla si
   exclusive). Los bloqueos de actualización se utilizan          el sistema adquiere significativamente más bloqueos
   para evitar que ocurra una forma común de interblo-            que los esperados por el optimizador o si la cantidad de
   queo cuando varias sesiones están leyendo, bloquean-           memoria disponible cae y no se pueden soportar el
   do y potencialmente actualizando recursos más tarde.           número de bloqueos requeridos.
   Otros modos de bloqueo adicionales (denominados blo-
   queos de rango de clave) se adoptan solamente en-el           27.5.2.2. Detección de interbloqueos,
   nivel de aislamiento secuenciable 'para bloquear el ran-      SQL Server detecta de forma automática los interblo-
   go entre dos filas y un índice.                               queos que involucran bloqueos y otros recursos. Por
   , Los bloqueos de varias granularidades requieren que         ejemplo si la transacción A está manteniendo un blo-
    se adquieran los. bloqueos en una jerarquía estricta de      queo en Tabla} y está esperando memoria disponible y
    mayor a menor granularidad. La jerarquía es la base de       la transacción Btiene algo de memoria que no puede
    datos, tabla, página y fila. Cuando se intenta bloquear      compartir hasta que adquiera un bloqueo sobre Tablal,
    en un nivel superior al compartido, de actualización y       la transacción presentará un interbloqqeo.l:as hebras y
    exclusivo se usan bloqueos intencionales.                    las memorias intermedias de comunicación también pue-
                                                                 den estar involucradas en los interbloqueos. Cuando,
  27.5.2.1. Bloqueo dinámico                                     SQL Server detecta un interbloqueo, elige como la víc-
  El bloqueo de granularidad fina puede mejorar la con-           tima del interbloqueo la transacción que es menos cos-
  currencia con el coste de ciclos de CPU y memoria extra         tosa de retroceder. considerando la cantidad de trabajo
  para-adquirir y mantener muchos bloqueos. P~ muchas             que la transacción ya ha realizado.
  consultas una granularidad de bloqueo más burda pro-                Frecuentemente la detección puede perjudicar al ren-
  porciona mejor rendimiento sin pérdida de concurren-            dimiento del sistema. SQL Server automáticamente ajus-
   cia.(o mínima). Los sistemas de base de datos han reque-       ta la frecuencia de la detección de interbloqueos a la fre-
   rido tradicionalmente sugerencias de consulta y opciones       cueneia a la que están ocurriendo los interbloqueos. Si
   de tabla a las aplicaciones para especificar la granula-        los interbloqueos no son frecuentes, el algoritmo de
   ridad del bloqueo. Además, hay parámetros de confi-             detección se ejecuta cada 5 segundos. Si son frecuen-
                                                               .ss
CAPitULO   21   SQL SERVE,RDE ~J¡CR9S0fT




                                                   Indica sobre Ie
                                               columna e de la tabla T




)



e
,-                                               P.áginas de la tabla T.
as           FIGURA 27.6. Granularidad de los bloqueos.
)S

n-
o,
ila
lo-          tes se comenzará a verificar cada vez que una transac-              bloquear ninguna operación y todos los registros histó-
da           ción espera un bloqueo.                                             ricos se tratan como si fueran un archivo continuo.
reo
; se         27;5.3.Registros históricos y recuperación                          27.5.3.2. Recuperación      de caídas
"e           SQL Server está diseñado para recuperarse de fallos del
                                                                                 El sistema de recuperación de SQL Server tiene muchos
as>                                                                              aspectos en comi.ín con el algoritmo de recuperación
eos          sistema y de los medios, y el sistema de recuperación               ARIE:S (véase el Apartado 17.9.6), y en este apartado
á de         sepuede dimensionar a máquinas con memorias inter-                  se muestran algunas de las diferencias clave.
rr el        medias muy grandes (100 Gbytes) y miles de unidades                     SQL Server posee una opción de configuración deno-
             de disco.                                                           minada intervalo de recuperación, que permite a un
                                                                                 administrador limitar eJ tiempo que SQL Server debe-
             27.5.3.1. Registros históricos                                      ría tardar en recuperarse después de una caída. El ser-
rolo-        El registro histórico de la transacción registra todos los          vidor ajusta dinámicamente la frecuencia en los puntos
 . por       cambios realizados sobre la base de datos y almacena                de comprobación para reducir el tiempo de recupera-
l blo-       suficiente información para permitir deshacer cualquier             ción. Los puntos de comprobación eliminan todas las
ible y       cambio (retroceso) o rehacer en el caso de un fallo del             páginas desfasadas de Ia memoria intermedia, y se ajus-
~uede,       sistema o solicitud de retroceso.                                   tan a las capacidades del sistema E/S y a su carga de
abla l ,        El registro histórico es, desde un punto de vista logi-          trabajo para eliminar de forma efectiva cualquier impac-
brasy        co, un flujo potencialmente infinito-de registros históri-          to en las transacciones que se ejecutan.
npue-        cos identificado por números de secuencia del registro                  En el inicio. después de una caída. el sistema inicia
uando        histónco.d.og Sequence Number, LSN). Desde un pun-                  varias hebras (dimensionadas aurométícamente al núme-
la vÍC'-     to de vista físico; una porción del flujo se almacena en            ro de UCP) para iniciar la recuperación de varias bases
os cos-      archivosde registros históricos. Los registros históricos           de datos en paralelo. La primera fase de la recuperación
trabajo      se guardari en los archivos de registros históricos hasta           es un paso de análisis en el registro histórico. que cons-
             quese realiza una copia de seguridad y no hay necesidad             truye una tabla de páginas desfasadas y una lista dc tran-
r al ren-    porparte del sistema de retroceso o réplica. Los archivos           sacciones activas. La siguiente fase es un inicio de la
ne ajus-     deregístro histórico crecen y disminuyen en tamaño para             fase rehacer desde el último punto de comprobación y
 a la fre-   acomodarse a los registros que se tienen que almacenar.             realizar todas las operaciones. Durante la fase rehacer
ueos. Si     Adicionahnente los archivos de registro histórico se pue-           se utiliza la tabla de páginas desfasadas para leer anti-
i!mo de      denagregar a una base de datos (en nuevos discos, por               cipadamentc las páginas de datos. La fase final es una
fre(;uen-    ejemplo)mientras que el sistema se está ejecutando y sin            fase deshacer donde se retroceden todas las transaccio-
                                                                           659
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server
Herramientas SQL Server

More Related Content

What's hot

Curso sql server 2012 clase 1
Curso sql server 2012 clase 1Curso sql server 2012 clase 1
Curso sql server 2012 clase 1josealopezpastor
 
Base de datos laboratorio
Base de datos laboratorioBase de datos laboratorio
Base de datos laboratoriofreddy Fred
 
HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...
HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...
HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...Sergio E. Sánchez
 
Curso sql server 2012 clase 3
Curso sql server 2012 clase 3Curso sql server 2012 clase 3
Curso sql server 2012 clase 3josealopezpastor
 
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlF004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlMiguel Amgo
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Byron Quisquinay
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql serverIsabel_Samir
 
Curso sql server 2012 clase 2
Curso sql server 2012 clase 2Curso sql server 2012 clase 2
Curso sql server 2012 clase 2josealopezpastor
 

What's hot (19)

Herramientas de control,monitoreoy estadistica de bd
Herramientas de control,monitoreoy estadistica de bdHerramientas de control,monitoreoy estadistica de bd
Herramientas de control,monitoreoy estadistica de bd
 
Curso sql server 2012 clase 1
Curso sql server 2012 clase 1Curso sql server 2012 clase 1
Curso sql server 2012 clase 1
 
Base de datos laboratorio
Base de datos laboratorioBase de datos laboratorio
Base de datos laboratorio
 
Taller de Base de Datos - Unidad 2 lenguage DDL
Taller de Base de Datos - Unidad 2 lenguage DDLTaller de Base de Datos - Unidad 2 lenguage DDL
Taller de Base de Datos - Unidad 2 lenguage DDL
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Base de datos en sql
Base de datos en sqlBase de datos en sql
Base de datos en sql
 
HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...
HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...
HERRAMIENTAS DE CONTROL DE MONITOREO Y ESTADISTICAS DE ACCESO A BASE DE DATOS...
 
Modulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddlModulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddl
 
Curso sql server 2012 clase 3
Curso sql server 2012 clase 3Curso sql server 2012 clase 3
Curso sql server 2012 clase 3
 
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlF004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
 
Base datos sql
Base datos sqlBase datos sql
Base datos sql
 
Curso sql server 2012 clase 2
Curso sql server 2012 clase 2Curso sql server 2012 clase 2
Curso sql server 2012 clase 2
 
Practica sql i,ii
Practica sql i,iiPractica sql i,ii
Practica sql i,ii
 
Tarea1 1
Tarea1 1Tarea1 1
Tarea1 1
 
Sql server 7.0
Sql server 7.0Sql server 7.0
Sql server 7.0
 
LENGUAJE TRANSACT SQL
 LENGUAJE TRANSACT SQL LENGUAJE TRANSACT SQL
LENGUAJE TRANSACT SQL
 

Similar to Herramientas SQL Server

Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro ComparativoMartha
 
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos SqlHerramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos SqlOlaya Molina
 
Un vistazo a sql server
Un vistazo a sql serverUn vistazo a sql server
Un vistazo a sql serverLalo Pérez
 
Base de Datos Grupo Los Informaticos
Base de Datos Grupo Los InformaticosBase de Datos Grupo Los Informaticos
Base de Datos Grupo Los InformaticosPedroJunior178
 
Programación con sql server
Programación con sql serverProgramación con sql server
Programación con sql serverMarco Molina
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDBliras loca
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Antonio Ortiz
 
Application and multi instances
Application and multi instancesApplication and multi instances
Application and multi instancesLuis Vázquez
 
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008Edwin Arias
 
Tutorial Sql Server 7
Tutorial Sql Server 7Tutorial Sql Server 7
Tutorial Sql Server 7semuvi
 

Similar to Herramientas SQL Server (20)

Mysql
MysqlMysql
Mysql
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos SqlHerramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
 
Un vistazo a sql server
Un vistazo a sql serverUn vistazo a sql server
Un vistazo a sql server
 
Caracteristicas de dbms_SQL SERVER 2008
Caracteristicas de dbms_SQL SERVER 2008Caracteristicas de dbms_SQL SERVER 2008
Caracteristicas de dbms_SQL SERVER 2008
 
Oracle
OracleOracle
Oracle
 
Base de Datos Grupo Los Informaticos
Base de Datos Grupo Los InformaticosBase de Datos Grupo Los Informaticos
Base de Datos Grupo Los Informaticos
 
Actividad4cosdac
Actividad4cosdacActividad4cosdac
Actividad4cosdac
 
Exposicion_Terabyte.pptx
Exposicion_Terabyte.pptxExposicion_Terabyte.pptx
Exposicion_Terabyte.pptx
 
Sql Server
Sql ServerSql Server
Sql Server
 
Sql sever 2008
Sql sever 2008Sql sever 2008
Sql sever 2008
 
sesion 01_sql basico.pdf
sesion 01_sql basico.pdfsesion 01_sql basico.pdf
sesion 01_sql basico.pdf
 
Programación con sql server
Programación con sql serverProgramación con sql server
Programación con sql server
 
Estudiante
EstudianteEstudiante
Estudiante
 
Tarea 1 bd
Tarea 1 bdTarea 1 bd
Tarea 1 bd
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012
 
Application and multi instances
Application and multi instancesApplication and multi instances
Application and multi instances
 
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
 
Tutorial Sql Server 7
Tutorial Sql Server 7Tutorial Sql Server 7
Tutorial Sql Server 7
 

More from Carlos Arturo

Ejercicios De Sql BD
Ejercicios De Sql BDEjercicios De Sql BD
Ejercicios De Sql BDCarlos Arturo
 
Arquitectura De Aplicaciones
Arquitectura De AplicacionesArquitectura De Aplicaciones
Arquitectura De AplicacionesCarlos Arturo
 
Creación de una base de datos
Creación de una base de datosCreación de una base de datos
Creación de una base de datosCarlos Arturo
 
Usuarios Y Administradores
Usuarios Y AdministradoresUsuarios Y Administradores
Usuarios Y AdministradoresCarlos Arturo
 
Historia de los sistemas de bd
Historia de los sistemas de bdHistoria de los sistemas de bd
Historia de los sistemas de bdCarlos Arturo
 
Sistemas de gestión de base de datos
Sistemas de gestión de base de datosSistemas de gestión de base de datos
Sistemas de gestión de base de datosCarlos Arturo
 
Instalación de SQL 2005 & SQL Management Studio
Instalación de SQL 2005 & SQL Management StudioInstalación de SQL 2005 & SQL Management Studio
Instalación de SQL 2005 & SQL Management StudioCarlos Arturo
 
Sitios Web Recomendados
Sitios Web RecomendadosSitios Web Recomendados
Sitios Web RecomendadosCarlos Arturo
 
Check list para el diseño de bd
Check list para el diseño de bdCheck list para el diseño de bd
Check list para el diseño de bdCarlos Arturo
 
1.7 Gestiòn de transacciones
1.7 Gestiòn de transacciones1.7 Gestiòn de transacciones
1.7 Gestiòn de transaccionesCarlos Arturo
 
1.8 Estructura De Un Sistema De Base De Datos
1.8 Estructura De Un Sistema De Base De Datos1.8 Estructura De Un Sistema De Base De Datos
1.8 Estructura De Un Sistema De Base De DatosCarlos Arturo
 
Calendario De 2010(2)1
Calendario De 2010(2)1Calendario De 2010(2)1
Calendario De 2010(2)1Carlos Arturo
 
Programa de estudios SIO
Programa de estudios SIOPrograma de estudios SIO
Programa de estudios SIOCarlos Arturo
 
Criterios De Operaciòn
Criterios De OperaciònCriterios De Operaciòn
Criterios De OperaciònCarlos Arturo
 
Criterios De OperacióN Catg
Criterios De OperacióN CatgCriterios De OperacióN Catg
Criterios De OperacióN CatgCarlos Arturo
 
Ejemplo ReseñA Brasil
Ejemplo ReseñA BrasilEjemplo ReseñA Brasil
Ejemplo ReseñA BrasilCarlos Arturo
 
Ejemplo ReseñA Libro Grudnitski
Ejemplo ReseñA Libro GrudnitskiEjemplo ReseñA Libro Grudnitski
Ejemplo ReseñA Libro GrudnitskiCarlos Arturo
 
Informe Lectura Y ReseñA
Informe Lectura Y ReseñAInforme Lectura Y ReseñA
Informe Lectura Y ReseñACarlos Arturo
 

More from Carlos Arturo (20)

Ejercicios De Sql BD
Ejercicios De Sql BDEjercicios De Sql BD
Ejercicios De Sql BD
 
Arquitectura De Aplicaciones
Arquitectura De AplicacionesArquitectura De Aplicaciones
Arquitectura De Aplicaciones
 
Creación de una base de datos
Creación de una base de datosCreación de una base de datos
Creación de una base de datos
 
Usuarios Y Administradores
Usuarios Y AdministradoresUsuarios Y Administradores
Usuarios Y Administradores
 
Historia de los sistemas de bd
Historia de los sistemas de bdHistoria de los sistemas de bd
Historia de los sistemas de bd
 
Sistemas de gestión de base de datos
Sistemas de gestión de base de datosSistemas de gestión de base de datos
Sistemas de gestión de base de datos
 
Instalación de SQL 2005 & SQL Management Studio
Instalación de SQL 2005 & SQL Management StudioInstalación de SQL 2005 & SQL Management Studio
Instalación de SQL 2005 & SQL Management Studio
 
Sitios Web Recomendados
Sitios Web RecomendadosSitios Web Recomendados
Sitios Web Recomendados
 
Check list para el diseño de bd
Check list para el diseño de bdCheck list para el diseño de bd
Check list para el diseño de bd
 
1.7 Gestiòn de transacciones
1.7 Gestiòn de transacciones1.7 Gestiòn de transacciones
1.7 Gestiòn de transacciones
 
1.8 Estructura De Un Sistema De Base De Datos
1.8 Estructura De Un Sistema De Base De Datos1.8 Estructura De Un Sistema De Base De Datos
1.8 Estructura De Un Sistema De Base De Datos
 
Calendario De 2010(2)1
Calendario De 2010(2)1Calendario De 2010(2)1
Calendario De 2010(2)1
 
DB2
DB2DB2
DB2
 
Programa de estudios SIO
Programa de estudios SIOPrograma de estudios SIO
Programa de estudios SIO
 
Criterios De Operaciòn
Criterios De OperaciònCriterios De Operaciòn
Criterios De Operaciòn
 
Criterios De OperacióN Catg
Criterios De OperacióN CatgCriterios De OperacióN Catg
Criterios De OperacióN Catg
 
Ejemplo ReseñA Brasil
Ejemplo ReseñA BrasilEjemplo ReseñA Brasil
Ejemplo ReseñA Brasil
 
Resena
ResenaResena
Resena
 
Ejemplo ReseñA Libro Grudnitski
Ejemplo ReseñA Libro GrudnitskiEjemplo ReseñA Libro Grudnitski
Ejemplo ReseñA Libro Grudnitski
 
Informe Lectura Y ReseñA
Informe Lectura Y ReseñAInforme Lectura Y ReseñA
Informe Lectura Y ReseñA
 

Recently uploaded

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Recently uploaded (20)

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

Herramientas SQL Server

  • 1. S QL Server de Microsoft es un sistema gestor de bases de datos relacionales que se usa desde en portátiles y ordenadores de sobremesa hasta en servidores corporativos, con una versión compatible, basada en el sistema operativo PocketPC, disponible para dispositi- vos de bolsillo, tales como PocketPCs y lectores de código de barras. SQL Server se, desarro- lló originalmente en los años 80 en SyBase para sistemas UNIX y posteriormente pasado a sis- temas Windows NT para Microsoft. Desde 1994 Microsoft ha lanzado versiones de SQL Server desarrolladas independientemente de Sybase, que dejó de utilizar el nombre SQL Server a fina- les de IQSaños 90. La ultima.versión disponible es SQL Server 2000, disponible en ediciones personales, para desarrolladores, estándar y-corporativa, y traducida a muchos lenguajes en todo el mundo. En este capítulo el término SQL Server se refiere a todas estas ediciones de SQL Ser- ver 2000. SQL Server proporciona servicios de, réplica entre varias copias de SQL Server así como con otros sistemas de bases de datos. Sus Analysis Services.tservicios de análisis). una parte integral del sistema, incluye dispositivos de procesamiento en conexión analítico (OLAP. Onli- ne Analytical Processiñg) y recopilación de datos. SQLServer proporciona una gran colección de herramientas gráficas y «asistentes» que guían a los administradores de las bases de datos por tareas tales como establecer copias de seguridad regulares. réplica de datos entre servido- res y ajuste-del rendimiento de una base de datos. Muchos entornos de desarrollo soportan SQL Server, incluyendo Visual Studio de Microsoft y productos relacionados, en particular los pro- ductos y servicios .NET. SQL Server proporciona un conjunto de herramientas una herramienta de.consulta visual que permite 'al admi- para gestionar todos los aspectos del desarrollo de SQL nistrador de la base. de datos el uso de capacidades de Server, consulta, ajaste, verificación y administración. arrastrar y soltar para construir consultas visualmente. La mayoría de estas herramientas se centran alrededor El diseñador de bases de datos es una herramienta del Administrador corporativo de SQL Server, El admi- visual que permite al administrador de la hase de datos nistradof corporativo es un complemento accesorio de crear tablas. columnas, claves. índices, relaciones y res- Microsoft Management Console (MMC), una herra- tricciones. Con el diseñador de bases de datos, un usua- mienta que proporciona una interfaz común para traba- rio puede interactuar con los objetos de la: base-de datos jar con varias aplicaciones del servidor en una red Win- mediante diagramas de base de datos, los cuales mues- dows. tran de fonna gráfica la estructura de la base de datos. El usuario puede crear y modificar objetos que son visi- 27.1.1.Desarrollo de bases de datos bles sobre diagramas (tablas, columnas, relaciones y claves) y algunos objetos que no son visibles en los dia- y herramientas visuales gramas (índices y restricciones). La Figura 27.1 mues- Mientras -se diseña una base de datos, el administrador tra el diagrama de una base de datos abierto con el Admi- de la base de datos crea objetos de bases de datos tales nistrador corporativo. como tablas, coulmnas, claves. índices; relaciones, res- rricciones y vistas. Para ayudar a crear estos objetos -el 27.1.2. Herramientas de consulta y ajuste Administrador corporativo de SQL Server proporciona de las bases de datos acceso a herramientas visuales de bases de datos. Estas herramientas proporcionan tres mecanismos para.ayu- SQL Server proporciona herramientas para ayudar al dar al diseño de la base de datos: el diseñador de bases proceso de desarrollo de aplicaciones. Se pueden desa- de datos, el diseñador de tablas yel diseñador de vis- rrollar y verificar inicialmente las consultas y procedi- tas. Las herramientas visuales también proporcionan mientos 'almacenados utilizando el Analizador de CQn- 645
  • 2. FUNDAMENTOS DE BASES DE DATOS S, E:I Raíz El-'. de la consola Servidores Microsoft SQL Server Grupo de SQL Server Él" PC-FERNAN,[Windows NT) Él,·QBases de datos rE", fi1 master !±J lj model ¡íJ", l] msdb ~lj Northwind '·~.ííW ."~ Tablas , fJó' Vistas ..... ~., Procedmientos e ." Usuarios , '. Funciones; , --: -: Reglas : .Q Valores predeterr l·fb Tipos de datos d ¡.s¡¡ _. _. "',:' Fu~ciones definí(, :.tiI Catálogos de tex , - -- fij tfj pubs temodb - - - FIGURA 27.1. Diagrama que muestra las opcíonesdel diseñador de tablas para la tabla de empleados, sultas de SQL Server, el cual proporciona herramientas y soltar objetes o nombros de tablas en la tabla. Tam- básicas de consulta yajuste de las bases de datos. Se bien incluye.la herramienta de depuración de Transacr- pueden realizar otros análisis utilizando el Analizador SQL. El depurador permite a un usuario depurar paso de ~QL Server. Las recomendaciones del ajuste de índi- a paso cualquier procedimiento almacenado, .exami- ces vienen proporcionadas por una tercera herramien- nando el comportamiento de los parámetros, las varia- ta, -el Asistente de optimización de índices. bles locales y las funciones del sistema mientras se eje-o cutan estos pasos. 27.1.2.1. Analizador de consultas de SQL Un administrador o desarrollador de la base de datos puede utilizar el Analizador de consultas de SQL EL Analizador de consultas. de SQL proporciona una para: interfaz de usuario sencilla y gráfica para ejecutar con- sultas SQLy ver los resultados. Permite varias venta- nas de fonna qu.e pueden existir conexiones de bases de Analizarconsultas: el Analizador de consultas de datos simultánea" (una o más instalaciones de SQL Ser- SQL Server puede mostrar un plan de ejecución ver), Un desarrollador de consultas puede elegir tener gráfico o contextual para cualquier plan de con- resultados de consulta mostrados en una ventana de tex- sultas, así como mostrar estadísticas relacionadas to o en una rejilla. El Analizador de consultas de SQL con el tiempo y recursos requeridos para ejecutar proporciona una representación gráfica de showplan, cualquier plan. los pasos elegidos por el optimizador para la ejecución Dar formato a las consultas SQL: el Analizador de de la consulta. También proporciona informes opcio- consultas permite la sangría y su eliminación en nales de los comandos reales procesados por SQL Ser- las líneas de código, cambio de la caja de las pala- ver (una traza en el cliente) y el trabajo realizado por el bras o secciones de código, comentar una única o cliente. El Analizador de consultas de SQL viene con varias líneas y mostrar las consultas ctih un códi- un explorador de objetos y permite. al usuario arrastrar go de color controlado por .el usuarió. 646
  • 3. cAPlrULO21 S~QLSL'lVER DE MJCROSCTr >'»SELECT e. Le.l'tName, p. ProductName, 3um (d. Quantity " d. UnitPrice) ~'FROMjor cer Detailsj d JOIN OrClers o ON o.OrderID ~ d.OrderID JOIN Products p ON d.P~oduct~D p.ProductID clOIN Emp'loyee~ e PN e.EmployeeID ~ o.EmployeeID GROUPBY' e.La~tName, p.ProductName Consulta 1: CO<lto de la consulta (en relación al .pr oceeo por rceee) :0,00 .• •-,~ ~I__ '~'~ Texto de la consulca:SELECT e.LastName, p.PrQductName, 3Um(d.Quantity ~ d.UnitPricel F , S~LEC.T '; St>::eam1l.ggregat ... Sort -, ..-, Hash Match! Inne .. .pr cduct s . Pr,oduc. Costo: o.• Costo: 0% cceec . 0'< Costo: 0'< c,~+-; __ Nested Loops/In .. Ne< COSto: O.• FIGURA 27.2. Un plan de ejecución con showplan para una reunión de cuatro tablas con una agregación group by. • Utilizar plantilla'> para procedimientos almacena- La Figura 27.2 muestra el Analizador de consultas mos- dos.funciones e instrucciones SQL básicas-el Ana- trando el plan de ejecución gráfico para una consulta que lizador de consultes viene con docenas de plantillas involucra una reunión de cuatrc tablas y una agregación. predefinidas para construir instrucciones LDD, y los usuarios pueden definir las suya.~ propias. Cuan- 27.1.2.2. Analizador de SQL do se ejecuta una plantilla los usuarios pueden pro- El Analizador de SQL es una utilidad gráfica que, per- porcionar valores específicos para los nombres de mite a los administradores de la base de datos supervi- objetos y columnas, tipos de datos y otra informa- sar y registrar la actividad de-la misma. El Analizador ción específica. de SQL puede mostrar toda la actividad del servidor en Arrastrar nombres de objetos desde el Explorador tiempo real o puede crear filtros que se centren en las de objetos a la ventana Consulta: el Analizador de acciones de usuarios particulares. aplicaciones o tipos consultas permite al desarrollador elegir la defini- de órdenes. El Analizador de SQL puede mostrar cual- ción de un objeto o. para tablas y vistas. ver plan- quier instrucción SQL o procedimiento almacenado tillas para crear instrucciones insert, update, dele- enviado a cualquier ejemplar de SQL Server (si los pri- te o select. -vilegios de seguridad 10 permiten] así como los datos Definir teclas de acceso directo y opciones de la de rendimiento que indican cuánto tiempo la consulta barra de herramientas personales: el Analizador de tardó en ejecutarse y cuánta: CPU y E/S rue necesaria y consultas permite definir teclas de acceso directo el plan de ejecución que utilizó 1<J onsulta. c para una ejecución rápida de consultas comunes y EJ Analizador de SQL permite ahondar aun más en proporciona un control completo sobre los coman- SQL Server para supervisarautomáticamente teda ins- dos que están disponibles corno botones en la tabla trucción ejecutada como parte de un procedimiento de herramientas y en qué posición aparecen los almacenado, toda operación de modificación de datos. botones. todo bloqueo adquirido o liberado. o cada vez que; ere- 647
  • 4. FUNDAMENTOS DE BASES DE DATOS ce un archivo de, base de datos. Hay docenas de even- requiere un conocimiento completo de cómo SQL.Ser- lOS distintos que se pueden capturar y docenas de ele- ver utiliza los índices y cómo el optimizador de con- mentos de datos que se pueden capturar para cada even- -sultas realiza sus decisiones sino cómo se utilizan real. to. SQL Server realmente divide la funcionalidad de mente los datos por las aplicaciones -Y consultas traza en dos componentes, separados aunque conecta- interactivas. El Asistente para optimización de índices dos. El Analizador deSQL está en la traza del cliente. de SQL Server es una herramienta poderosa parad dise- Mediante el uso del Analizador de SQL un usuario pue- ño de los mejores índices basados en la consulta obser- de elegir guardar los datos capturados a un archivo o vada y cargas de actualización. una tabla, además de mostrarlos en la interfaz de usua- El asistente ajusta una única base de datos cada vez rio del Analizador (IU). El Analizador muestra todo y fundamenta sus recomendaciones sobre una carga de evento ,que cumple el criterio del filtro mientras ocurre. trabajo que puede ser un archivo de eventos de traza Una vez que se han guardado los datos de la traza, el capturados o un archivo con instrucciones SQL. El Ana- Analizador de SQL puede leer los datos guardados para lizador de SQL está diseñado para capturar todas las mostrarlos o analizarlos. instrucciones SQL enviadas portados los usuarios en En el lado del servidor está la traza de SQL, que un cierto periodo de tiempo. Bl asistenre puede enton- gestiona las colas de eventos generados por producto- ces examinar los patrones de acceso a los datos para res de eventos. Una hebra consumidora lee los even- todos los usuarios.aplicaciones y tablas, y realizar rece- tos desde las colasy los filtra antes de enviarlos al pro- mcndaciones razonables. ceso que las solicitó. Los eventos son la unidad principal dé actividad en lo que se refiere a la traza, y 27.1.3. Administrador ccrporotívc un evento' puede ser cualquier cosa que suceda dentro de SQL Server de SQL Servcr o entre SQL Server y un cliente. Por ejemplo, la creación o eliminación de un objeto, la eje- Además de proporcionar acceso a las herramientas de cución de un procedimiento almacenado, la adquisi- diseño y visuales de bases de datos, el Administrador ción o liberación de un bloqueo, y el envío. de un archi- corporativo de SQL, de-fácil uso, soporta administración vo de proceso por lotes Transact-SQL desde el cliente centralizada de todos los aspectos de vanas instalacio- a SQL Server son eventos. Hay un conjunte de proce- nes de SQL Server, incluyendo la 'seguridad, eventos, dimientos almacenados del-sistema para definir qué alertas, programación, copias de seguridad, configura- eventos se deberían seguir, qué datos-son interesantes ción delservidor, ajuste, búsqueda de texto completo y para cada evento o dónde .guardar la información reco- réplicas. EL Administrador corporativo de SQL Server gida por los eventos. Los filtros aplicados a los even- permite aun administrador de la base de datos crear, tos pueden reducir la cantidad de información recogi- modificar y copiar esquemas y objetos de la base de datos da: -Yalmacenada. La Figura 27.3 muestra la ficha de SQL Server tales.corno tablas, vistas y desencadenado- eventos desde el cuadro de diálogo de definición de res. Debido a que se pueden organizaren grupos varias traza del Analizador dc SQL. - instilaciones de SQLServer y ser tratadas como una uni- SQL Server proporciona más de 100 eventos pre- dad, el Administrador corporativo de SQLServer pue- definidos y ua usuario puede configurar 10 eventos adi- de gestionar cientos de servidores simultáneamente. cionales, Las trazas en el lado del servidor se ejecutan Aunque se puede ejecutar .en la misma computadora deuna fonna invisible y se puede iniciar una traza de que el motor de SQL Server, el Administrador corporati- una forma automática cada vez que se inicia SQL Ser- vo de SQL Server ofrece las misma s capacidades de ges- ver. Esto garantiza que siempre se recogerá cierta infor- tión cuando se ejecuta en cualquier máquina basada. en mación crítica y se puede utilizarcorno un mecanismo Wmdows NTnooo. El Administrador corporativo de SQL útil de auditoria. SQL Server esta certificado para un Server también se ejecuta sobre Windows 98 aunque no nivel C2 de seguridad y muchos de los eventos que pue- están disponibles algunas capacidades en este entorno (es den ser objeto dé traza están disponibles exclusiva- de mención la capacidad de utilizar el Administrador de mente para soportar requisitos C2 de certificación. control de servicios, una característica de windows NT !2()(X),para iniciar y parar SQL Server de forma remo- ta). Además, la arquitectura eficiente cliente/servidor de 27.1.2.3. Asistente paro la optimización SQL Server hace práctico el uso de capacidades de acce- de índices so remoto (acceso telefónico a redes) de-Wmdows NT J2(XXl Con todas las posibles técnicas de procesamiento de la así como Windows 98 para la administración y gestión. consulta disponibles el optimizador de consultas puede El Administrador corporativo de SQL Server evita que determinar un plan de consulta razonablemente efecti- el Administrador- de la base de datos tenga que conocer vo incluso en ausencia de índices bien planeados. Sin los pasos específicos y la sintaxis para completar un tra- embargo. esto no significa que una base de datos bien bajo. Proporciona más de 20 asistentes para guiar-al admi- ajustada no se beneficie de buenos índices. El diseño de nistrador de la base de datos 'en el proceso de configurar los mejores índices posibles para las tablas en una base y mantener una instalación de SQL Server. La interfaz de datos grande es una tarea compleja, no solamente del Administrador corporativo.aparece.en la Figura 27.4. 648
  • 5. cAPlrULO 27 SOl. SCRVEn m: MICROSOPT El t7-uditoría de seguridad -Audit Login Audit Logout _ Procedimientos nlmllcenadc]:; RPC:Completed, _. Sesiones A~ ~f Exisf ngConnection -'o,>' E TSQL .~¡¡tu). le rr in ,- rs. a- 'Y ter ar, tos FIGURA 27.3. Ficha Eventos del Cuadro de diálogo Propiedades de traza. 10- ias IUl- ue- lora rati- ges- a en ,QL B'Raíz'<iolocomol. S.rvido'''' M.iqosoll $QL.S.,v", El·e Grupo,,';" SQl Server, !"!lb PC-FERNAN [Window, NTI e no ~D Ba •• , de dOlos o (es :E lJ maslo, ::E IJ model or de 'J'll1m'db -_~ Base de datos lows ';fiJj Nor~ Propietario: emo- " tJ lIlI ~ ¡j' 1erJ«b Fechd de <;reac:rón: or de m CJ , ••vicio. de tran.IÓlrna<:i acce- ·í CI A--';'Iroción Tamaño: !±iU Duplicación ~,50ML', (2JX1J '±) CJ S"9-<idad Espacio disponible: if¡.:::J Se,.>:"" de co~, iOO. BJ'EJ ~eta D.laS""icei Opciones de la base de datos: laque cocer 10 tra- adnll- ogurar Mantenimiento ,,:J.~--. ---- ,-__ o • _ nerfaz a 27.4. FIGURA27.4. Interfaz de! Administrador corporativo de SOL Server. 64.
  • 6. FUNDAMENTOS DE BASES'DE DATOS Transact-SQl, es el lenguaje de bases de datos soporta- nas sql_variant. La función del sistema sqlvariam.pro- do por SQL Server. Transact-SQL es un lenguaje com- perty puede devolver detalles sobre los datos reales pleto de programación de bases de datos que incluye almacenados en una columna de tipo sql_variant, inclu- instrucciones de definición y manipulación de datos. yendo el tipo base e información del tamaño. instrucciones iterativas y condicionales, variables, pro- cedimientos y funciones. Transact-SQL cumple el nivel 27.2.1.2. Tipo Tab1e de entrada de la norma SQL-92 pero también soporta Table es un tipo que permite a una variableguardar un varias características desde los niveles intermedios y conjunto de filas; Este tipo se utiliza principalmente para superiores. Transact-SQL también soporta extensiones especificar el tipo devuelto por las funciones que devuel- a la norma SQL-92. ven tabla. Una variable table se comporta como una variable local. Tiene un ámbito bien definido, que es la 27.2.1. Tipos de datos función, procedimiento almacenado. o proceso por lotes en el cual se declara ..Dentro de este ámbito se puede SQL Server proporciona un conjunto de tipos de datos utilizar una variable lable como una tabla nonna!. Se primitivos que definen todos los tipos de datos que se puede aplicar en cualquier lugar donde se utiliza una pueden utilizar con SQL Server. El conjunto de tipos de, tabla o expresión de tabla en instrucciones select.Insert, datos primitivos incluyen: update y,delete. Las variables table se limpian automáticamente al • Un conjunto completo de tipos de enteros con sig- final de la función, procedimiento almacenado o pro- no con 1,2,4 Y8 bytes de precisión (tinyint. sma- ceso por lotes en el cual se definen. Además, las varia- llint. int y bigint) . bles table utilizadas en procedimientos almacenados • Un tipo de datos bit con valoresO 0,_ I (bit) resultan en menos recompilaciones de 'estos procedi- • Tipo decimal con 38 dígitos de precisión (decimal, mientos que cuando se utilizan las tablas temporales. nunieric) Las transacciones que involucran las variables table Tipos de moneda con precisión de 1/l 000 de la duran solamente en la actualización de la variable table unidad monetaria (money.smallmoney) por lo que las variables rable requieren menos: recursos de bloqueos y de registro histórico. • Tiposde fecha-y hora con una precisión de hasta 3.33 milisegundos (datetime, small-datetime) 27.2.2. Funciones definidas por el usuario • Tipos en coma flotante de precisión sencilla y doble (real, ñoat) Las funciones definidas por el usuario permite a los mis- Tipos, de cadenas de caracteres de tamaño fijo y mos definir sus propias funciones Transact-SQL median- variable de hasta 2'°_1 caracteres, Unicode y no te el uso de la instrucción create function. SQL Servcr Unicode (char/nchar, varchar/nvarchar, text/ntext) soporta las funciones que devuelven un tipo escalar o • Cadenas de bytes de tamaño fijo y variable de has- una tabla. Las funciones escalares se pueden utilizar en ta 2'1_1 bytes (binary, varbinaiy, image) cualquier expresión escalar dentro de una instrucción LMD o LDD de SQL. Las funciones que devuelven Un tipo cursor que pennite referencias a un obje- tablas se pueden utilizar en cualquier lugar donde se to cursor (cursor) permita una tabla el] una instrucción select. Las fun- • Tipos de datos de identificadores únicos globales cienes que devuelven una tabla cuyo cuerpo contiene 'y para la base de datos una única instrucción SQL select se tratan como una vista (entre líneas expandida) en la consulta que hace Además. SQL Server soporta los tipos sql_variant y referencia a la función. Puesto, que las funciones que table descritos 'en los apartados 27.2.1.1 y 27.2.1.2. devuelven una tabla permiten la introducción de argu- mentos, las funciones entre líneas que devuelven tablas 27.2.1.1. TIpo Variant se pueden considerar vistas paramctrizadas. Sql_variant es un tipo de datos escalar que permite a una columna de una fila, variable o argumento de fun- 27.2.3. Vistas ción contener valores de cualquier tipo escalar SQL (excepto text, ntext, image, rowversion y sql_variant). Una vista es una tabla virtual cuyos contenidos están Es utilizado por aplicaciones que necesitan almacenar definidos por una instrucción select. Las vistas son un datos-cuyo tipo no se puede conocer cuando se definen poderoso mecanismo de modelado de datos y seguri- los datos. Internamente el sistema guarda el tipo origi- dad. Las vistas indexadas (Apartado 27.2.3.1) también nal de datos. Es posible filtrar, reunir y. ordenar colum- pueden proporcionar un beneficio sustancial en el ren- .so
  • 7. CAPITULO 21 SOL SUi'hR D~ MICRO'SOfT ctimiento. Las tablas referenciadas por la definición de vista. Las instrucciones de actualización de las tablas base la vista se conocen como tablas base. En el ejemplo que se propagan autométicamente a los índices de la vista . sigue, vtstauuúos es una vista que selecciona los datos desde tres tablas base: título, auiortiudo y títulos. Es41s 27.2.3.2. Vistas divididas tablas son parte de la base de datos ejemplo pubs inclui- da con SQL Server. Las vistas divididas se, utilizan para dividir los datos entre varias tablas, bases de datos o ejemplares de SQL create view vistatítulos as Server con el fin de distribuir la carga de trabajo. Si los select título, auord, au_nombre, precio, ventas, datos se dividen entre varios servidores, se pueden pro- ideditorial porcionar los mismos beneficios en el rendimiento que from autores as a joln autonítulo as al 00 (a.au_id un agrupamiento de servidores y se puede utilizar para = at.au_id) soportar las necesidades de procesamiento de los mayo- join títulos as t 00 (t.títulojd e at.títulojd) res sitios Web o centros de datos corporativos. Una tabla base se puede dividir-en varias tablas miembro, cada Se puede hacer referencia a la vista vistatiudas en una de las cuales tiene un subconjunto de filas de la tabla. instrucciones de la misma forma a corno se haría con original. Cada servidor debe tener definición de la tabla. una tabla base: dividida. Una vista dividida utiliza el operador unión para combinar todas las divisiones en las tablas base en select '" un único conjunto de resultados que se comporta exac- Irom visrantulos tamente como una copia de la tabla original completa. where precio >= 30 Por ejemplo, una tabla de clientes se puede dividir entre tres servidores. Cada servidor debe tener una división Una vista puede hacer referencia a otras vistas. Por de la tabla base disjunta como sigue: ejemplo vístautulos presenta información que es útil para administradores, pero las empresas normalmente • En Servidor 1: revelan sus datos de venta sólo en los informes trimes- create rabie Cliente_33 e trales o anuales. Se puede construir una vista que selec- IDCliente integer primary key cione todas las columnas de vistatítulos excepto au_ord check (IDCliente between 1 and e y ventas. Esta nueva vista puede ser utilizada por los 32999), e clientes para obtener listas de los libros disponibles sin Otras definiciones de columna) ver la información financiera: En Servidor2: create table Cliente_66.( create vlew Cust vistatítulos as IDCliente integer primary key select título. aunombre.precio, id_editorial check (IDCliente between 33000 and from vistatítulos .65999), s- ... Otras definiciones de columna) o- Las consultas que emplean las vistas se optimizan • En Servidor3: " o expandiendo la definición de la vista en la consulta (en otras palabras. el optimizador basado en el coste opti- create reble Cliente_99 ( IDCliente integer primary key '0 miza toda la consulta como si se hubiera realizado sin check (IDClientebetween 66000 and 5n el uso de vistas). en 99999), se ... Otras definiciones de columna) 27.2.,3.1. Vistas indexadas . m- Además de las vistas tradicionales como se definieron en Después de crear las tablas miembro, el administra- :ne la norma ANSI de SQL. SQL Server soporta las vistas dor de la base de datos define una vista dividida distri- m' indexadas (materializadas). Las vistas indexadas pueden buida en cada servidor, cada vista teniendo el mismo sce mejorar sustancialmente el rendimiento de las consultas nombre. La vista dividida distribuida para Servidorl se jue complejas de ayuda a la toma de decisiones que recupe- definiría como sigue: gu- Tan un gran número de filas y agregan grandes cantida- ilas des de información en sumas recuentos y medias. SQL create view Clientes as Server soporta la creación de índices agrupados en una select :1< Irom Baseüeüatos.Propictario'Iabla. vista y subsecuentemente cualquier número de índices Clientes_33 no agrupados. Una vez que se indexa una vista, el opti- union all mizador puede utilizar sus índices en consultas que hacen select :1< from Server2.BaseDeDatos.Propietario stan referencia a la vista o sus tablas base. Las consultas exis- Tabla.Clientes_66 o un tentes se pueden beneficiar de la eficiencia mejorada de union all mri- la recuperación de los datos directamente de la viS14inde- select :1< Irom Serverá.BasefteDatos.Propjetario bién xada sin tener que ser reescrita para hacer- referencia a la Tabla.Clientes_99 ren- 651
  • 8. FUNDAMENTOS DE BASES DE DATOS Sobre-Serverz y Server3 se definirían vistas similares. un desencadenador instead (Apartado 27.2.4) definido El hecho de tener la vista definida sobre cada servi- para la operación. Los desencadenadores insert para las dor permite a las consultas que hacen referencia al nom- operaciones ínsert, update o delete se pueden definir bre de la vista dividida y distribuida ejecutarse en cada en una vista para especifiear las actualizaciones que se uno delos servidores miembro. El sistema opera como deben ejecutar en las tablas base para implementar las si en cada servidor miembro hubiera una copia com- modificaciones correspondientes en la vista. pleta de la tabla original, aunque cada servidor tenga solamente una tabla miembro local y. una vista dividi- 27.2.4. Desencadenadores (disparadores) da y distribuida que referencia a la tabla local y las dos tablas remotas. La ubicación de los datos es transpa- Los desencadenadores son procedimientos Transact- rente a la aplicación. Con estas tres vistas, cualquier ins- SQL que se ejecutan automáticamente cuando se envía trucción Transact-Sfjl. sobre cualquiera de los tres ser- una instrucción update, insert o delete a una tabla base -vidores que haga referencia a Clientes verá los mismos o vista. Los desencadenadores son un mecanismo que resultados que desde la tabla original. Se puede acce- posibilita la aplicación de la lógica del negocio de for- der a las vistas divididas no solamente mediante, ins- ma automátiea cuando. se modifican los datos. Los trucciones select sino también mediante instrucciones desencadenadores pueden extender la lógica de verifi- insert. update y delete, incluyendo instrucciones que cación de la integridad de restricciones declarativas, afectan a varias divisiones e incluso aquellas que requie- predeterminadas y reglas" aunque las restricciones decla- ren trasladar filas de una división a otra. rativas se deberían utilizar preferentemente siempre que se satisfagan las necesidades. 27.2.3.3. Vistas actualizables Hay dos clases generales de desencadenadores que difieren en el tiempo con respecto a la instrucción de Generalmente las vistas puede ser el objetivo de las ins- desencadenamiento, bajo la que se realiza la acción. Los trucciones update, delete o insert si la modificación de desencadenadores after se ejecutan después de la ins- los datos se aplica a solamente una de las tablas base de la vista. Las actualizaciones de las vistas divididas trucción de desencadenamiento y se aplican posterio- res restricciones declarativas. Los desencadenadores se pueden propagar a varias tablas base. Por ejemplo, instead se ejecutan en lugar de la acción de desenca- la siguiente instrucción update incrementará los-pre- denamiento. Los desencadenadores instead son simi- cios pata el editor «0736>:· en un 10 por ciento. lares a los desencadenadores befure, pero realmente update vistatítulos reemplazan la acción de desencadenamiento. En SQL set precio = precio * 1.10 Server los deseñcadenadores añer se pueden definir where ideditorial = '0736' solamente sobre, tablas base mientras que los desenca- denadores instead se pueden definir sobre tablas base • 1, Para las modificaciones de los datos que afectan a o vistas. Los desencadenadores lnstead permiten que más de una tabla base, la vista se puede actualizar si hay se pueda actualizar prácticamente cualquier vista. En SQL Server una base de datos se refiere a una coleo- vos conocido corno el grupo de archivos primario. Este ción de archivos que contienen datos y que son soporta- grupo de archivos contiene todos Los metadatosde la dos por un único registro histórico de transacciones. La base de datos en tablas del sistema. El grupo de archi- base de datos es la unidad principal de administración en vos primario también puede contener datos de usuario. SQL Server y también proporeiona un contenedor para Si se crean grupos de archivos definidos por el usua- estructuras físicas tales Como tablas e índices y para rio adicionales, un usuario puede controlar de forma estructuras lógicas tales como restricciones, vistas, etc. explícita la ubicación de las tablas individuales, índices o las columnas de objetos grandes de una tabla ubicán- dolas en un grupo de archivos. Por ejemplo, el usuario 27.3.1. Grupos de archivos puede elegir almacenar una tabla en el grupodearchi- Con el fin de gestionar el espacio en una base de datos vosA, su índice no agrupado en grupodearchivosb y las de forma efectiva" el coqjuruo de archivos, en una base eolumnas de objetos grandes de la tabla en grupodear- de datos se divide en grupos denominados grupos de chivase. La ubicación de estás tablas e índices en dis- archivos (filegroups). Cada grupo de archivos contiene tintos grupos de archivos permite al usuario controlar uno o más archivos del sistema operativo'. el uso de los recursos de hardware (esto es, discos y el Toda base de datos tiene-al menos un grupo de archi- subsistema E/S). Uh grupo de archivos en concreto se 652,
  • 9. CAPiTULO 27 SOL SERVER DE MICROS9FT considera siempre el grupo de archivos predetermina- mite a los archivos disminuir. Con el fin de disminuir un .do; inicialmente, el grupo de archivos predeterminado archivo de datos, SQL Server traslada 1:0005los datos des- es el grupo de archivos primario, pero se' puede dar a: de el fin físico del archivo a un punto más cercano al ini- cualquier grupo de archivos definido por el usuario la cio del archivo y entonces realmente reduce el archivo, propiedad de.determínado. Si una tabla o índice no está devolviendo el espacio al sistema operativo; ubicada específicamente en un grupo de archivos, se crea en el grupo de 'archivos predeterminado. 27.3.3. Tablas 27.3.2. Administración del espacio en grupos SQL Server soporta dos organizaciones diferentes para las tablas: montículos e índices agrupados. En una tabla de archivos organizada en montículos la ubicación de cada fila de Uno de los muchos propósitos principales es permitir la tabla se determina completamente mediante el siste- una gestión de espacio efectiva. Todos los archivos de ma y. no es especificada de ninguna forma por el usua- datos se dividen en unidades de 8 Kbytes de espacio fijo rio. Las filas de un. montículo tienen un identificador denominadas páginas. El sistema de asignación es res- fijo como identificador de fila (RlD, Row ldentifier) y ponsable de asignar estas páginas a tablas e Jndices. El su valor nunca cambia a no ser que se reduzca el archi- objetivo del sisterna de asignación es minimizar la can- vo y la fila se traslade. Si la fila se torna lo suficiente- tidad de espacio malgastado mientras que, al mismo mente grande para no caber en la página en la que se tiempo, mantener el nivel de fragmentación de la base insertó originalmente, el registro se mueve a un lugar de datos en el mínimo pata as<:;gurar un buen rendi- distinto, pero se deja un resguardo en la ubicación ori- miento de exploración. Con el fin de lograr este objeti- ginal de forma que el registro todavía se puede encon- vo el administrador de asignación normalmente asigna trar utilizando su RID original. y desasigna todas las páginas en unidades de ocho pági- En una organización agrupada por índices para una I nas contiguas denominadas' extensiones. El sistema de asignación gestiona estas extensiones tabla, las filas de la tabla se almacenan en un árbol B+ ordenado mediante la clave de agrupamiento del índice. i mediante varios mapas de bits. Estos mapas de bits per- miten al sistema de asignación encontrar una página o extensión para la asignación de una forma rápida. Estos mapas de bits también se utilizan cuando se ejecuta una tabla completa o exploración de 'índices. La ventaja de La clave de índice agrupado también sirve coma el iden- tificador único para cada fila. La clave para un índice agrupado se puede definir como no único, en cuyo caso SQL Server agrega una columna oculta adicional para hacer la clave única. El índice agrupado también sirve I usar mapas de bits basados en la asignación para la como una estructura de búsqueda para identificar una exploración es que permiten recorridos en e1 orden del fila de la tabla en una clave particular o explorar un con- disco de todas las extensiones que pertenecen a una tabla junto de filas de la tabla con claves con un cierto' rango. o en el nivel de las hojas de los índices, lo que mejora significativamente el rendimiento de la exploración. Si hay más de un archivo en un grupo de archivos, el sistema de asignación proporciona extensiones para cualquier objeto en ese grupo de archivos utilizando un algoritmo de «relleno proporcional». Cada archivo se 27.3.4. índices La forma más común 'de indexación son los índices no, agrupados, que también se conocen como índices secun- darios. Estos índices son árboles B+ sobre una o más ¡ 1 rellena con la proporción de la cantidad de espacio libre columnas de la tabla base. Permiten acceso eficiente de en ese archivo comparado con otros archivos. Esto lle- una fila de una tabla base basada en un criterio de bús- na todos los archivos de un grupo de archivos aproxi- queda sobre las columnas indexadas. Además, las con- madamente con el mismo factor y permite al sistema sultas que se refieren solamente a la'>columnas que, están utilizar todos los archivos en un grupo de archivos de disponibles mediante índices secundarios se procesan forma equitativa. Durante una exploración que utiliza mediante la recuperación de las páginas desde el nivel los mapas de bits de asignación, el algoritmo de explo- hoja de los índices sin tener que.recuperar los datos del ración aprovecha los distintos archivos enviando E/S índice agrupado o montículo. separadas a cada uno de los archivos. SQL Server soporta la adición de columnas calcula- Una de las mayores decisiones al configurar una base das a una tabla. Una columna calculada es una colum- de datos es determinar su tamaño. SQL Server permité.a na cuyo valor es una expresión, normalmerue basada en los archivos de datos cambiar su tamaño después de crear el valor de otras columnas en esa fila. SQL Server per- la base de datos. El usuario puede incluso elegir hacer mite al usuario construiríndices secundarios sobre co- que el archivo de datos crezca automáticamente si la base lumnas calculadas. de datos se queda sin espacio. Parella, el usuario puede configurar la base, de datos a una aproximación razona- 27.3.5. Explonrcíones y lectura anticipada ble del tamaño esperado, pero hace que los archivos de la base de datos crezcan y se ajust.en al patrón de uso, si La ejecución de las consultas en SQL Server pueden la aproximación inicial no es correcta. SQL Server per- .¡ involucrar una 'serie de distintos modos de exploración 653
  • 10. FUNDAMENTOS DE BASES DE DATOS de las tablas e índices subyacentes. Éstos incluyen explo- co. El algoritmo de lectura anticipada de SQL Server uti- raciones ordenadas y desordenadas, exploraciones en liza el conocimiento del plan de ejecución de la consul- serie y paralelas, unidireccionales y bidireccionales, ta con el fin de. conducir la lectura anticipada y asegu- hacia delante-y hacia arras, y exploración de toda la tabla rarse de que solamente se leen los datos que son realmente o índice y-exploraciones de rango o filtradas. necesarios. Además, la cantidad de lectura anticipada se Cada uno de los modos de exploración tiene un meca- dimensiona de forma automática según el tamaño de la nismo de lectura anticipada que intenta anticiparse a las memoria intermedia. la cantidad de E/S que el subsiste- necesidades del plan de ejecución con el fin de-reducir la ma del disco puede sostener y la velocidad a la que el latencia y gastos y utilizar el tiempo sin trabajo del dis- plan de ejecución puede consumir los datos. El procesador de consultas de SQL Server está basado en Optimización basada en el coste. El optimizador un entorno extensible que permite una rápida incorpora- aplica la exploración e implementación de reglas ción de nuevas técnicas de ejecución y optimización. La para generar alternativas, estimar el coste de la eje- ejecución encapsula los algoritmos de procesamiento de cución y elegir el plan con el coste anticipado más datos en iteradores que se comunican entre sí utilizando bajo. Las reglas de 'exploración implementan la la interfaz Getlcextkowü. La optimización genera alter- reordenación de operadores, incluyendo reorde- nativas utilizando transformaciones en árbol y estima el nación de la reunión y de la agregación. Las reglas coste de ejecución utilizando modelos detallados del com- de implementación introducen alternativas en la portamiento de las selectividades e iteradores. ejecución tales como reuniones por mezcla y reu- mones por asociación. 27.4.1. Visión general de los procesos • Preparación del plan. El optimizador crea estruc- de optimizaCión turas del plan de ejecución para el plan seleccio- nado. -Las consultas complejas presentan oportunidades signi- ficativas de optimización que requieren la ordenación de La optimización basada en el coste no se divide en los bloques de consulta, con selección del pla-n basado fases que optimizandistintos aspectos de la consulta de en el coste estimado. SQL Server utiliza unenromo pura- forma independiente y no está restringida a una única mente algebraico. El entorno de optimización de SQL dimensión tal como la enumeración de reuniones. En Server se basa en el prototipo de optimizador Cascades. su lugar una colección de reglas de transformación defi- Una instrucción SQL se compila como sigue: ne el espacio de: interés y la estimación del coste se uti- liza uniformemente para seleccionar un plan eficiente. Análisis/vinculación. El optimizador analiza la instrucción y resuelve los nombres de tablas y 27.4.2. Simplificación de la' consulta columnas mediante el uso de catálogos. Resuelve e incorpora vistas para generar un árbol de opera- Durante la simplificación, el optimizador envía las selec- dores. Verifica la caché del procedimiento para ver ciones del árbol de operadores tan abajo como sea posi- si ya hay un plan para la consulta, en cuyo caso se ble. Verifica los predicados en busca de contradiccio- evita la optimización. El árbol de operadores uti- nes teniendo en cuenta las restricciones declaradas. liza un álgebra relacional extendida donde no hay Utiliza las contradicciones para identificar subexpre- noción de bloque de consulta o tabla derivada sino -siones vacías, que se eliminan del árbol. Un escenario simplemente una combinación arbitraria de ope- común es la eliminación de ramas union que recuperan radores relacionales. les datos de las tablas con distintas restricciones . • SimplifiCación/normalización. El optimizador apli- Una serie de reglas de simplificación son depen- ca reglas de simplificación sobre.el árbol de opera- dientes del contexto, es decir, la sustitución solamente dores para obtener un formulario normal y simpli- es válida en el contexto de la utilización de la subex- ficado. Estas reglas implementan transformaciones presión. Por ejemplo.una reunión externa se puede sim- tales como enviar las selecciones hacia abajo y la plificar en una reunión interna si una operación de fil- simplificación de reuniones extemasen reuniones. trado posterior elimina reglas no coincidentes que se Durante la simplificación. el optimizador detenni- rellenaron con null. Otro ejemplo es la eliminación de na y carga las estadísticas requeridas para la reuniones sobre claves externas que no se necesitan eje- estimación de la cardinalidad. Si-se pierden las esta- cutar si no hay uso posterior de las columnas desde la dísticas requeridas, el optimizador las crea auto- tabla referenciada. Un tercer ejemplo es el contexto de máticamente antes de continuar la optimización. independencia de duplicados, que especifica que la dis- '654
  • 11. CAPITULO 27 SOL SERVER DE MICROSOFT tribución de una o más copias de una fila no afecta al Algunas aplicaciones seleccionan filas según el resul- resultado de la consulta. Las subexpresiones bajo semi- tado de algún agregado para su grupo. Por ejemplo rreuniones y bajo distinct son independientes de dupli- «Hallar los clientes cuyo saldo es mayor que el doble de cados, lo que permite cambiar union a union all. la media para su segmento de mercado». La formulación Para agrupar una agregación se utiliza el operador SQL requiere una autorreunién. Durante la exploración GbAgg, que crea grupos y opcionalmente aplica una fun- se detecta este patrón y se considera la ejecución por seg- ción de agregado sobre cada grupo. La eliminación de mentos como una alternativa a la autorreunión. La utili- duplicados, expresado en SQL mediante la palabra cla- zación de la vista materializada también se considera ve distinct es sencillamente unDhAgg sin funciones de durante la optimización basada en el coste. El encaje de agregado a calcular. Durante la simplificación. la infor- vistas interactúa con la ordenación de operadores, en la mación sobre las claves y dependencias. funcionales se que el uso puede que no sea aparente hasta que se reali- utiliza para reducir el agrupamiento de columnas. ce otra reordenación, Cuando se encuentra que una vista Las subconsultas se normalizan eliminando especi- se ajusta a alguna subexpresión, la tabla que contiene el ficaciones de consulta correlacionadas y utilizando algu- resultado; de la vista se agrega como alternativa a la expre- nas variantes dé la reunión en su lugar. La eliminación sión correspondiente. Dependiendo de la distribución de de correlaciones no es una «estrategia de ejecución de datos e índices disponibles puede ser mejor o no que la subconsultas» sino simplemente un paso de normaliza- expresión original (la selección se realizará basándose ción. Se consideran entonces una serie de estrategias de en la estimación del coste). ejecución consideradas durante la optimización basada Para estimar el coste d~ ejecución del plan, el mode- en el coste. lo tiene en cuenta el número de filas que se esperan pro- cesar, denominado el objetivo filas, así como el núme- 27.4.3. Reordenación y optimización basada ro de veces que se ejecuta-una subexpresión. El objetivo en el coste filas puede ser menor que la estimación de la cardina- lidad en casos tales como Apptytsemijoin. Appíytsemi- En SQL Server las transformaciones se integran com- join devuelve la fila t de Ttan pronto como E(t) produ- pletamente en la generación basada en el coste y selec- 'ce una única fila (es decir. comprueba E(t)). Por tanto, ción de planes de ejecución. Además dé la reordenación el objetivo filas de la salida de ECO es 1, y los objetivos de la reunión interna; el optimizador de consultas emplea filas de los subárboles de E(t) se calculan para E(t) para transformaciones de reordenación para los operadores esre objetivo y se usan para la estimación del coste. reunión externa, semirreunión y antisemirreuníon del , álgebra relacional estándar (con duplicados, para' SQL). GbAgg se reordena también. trasladándolo debajo de 27.4.4. Planes de actualización t las reuniones siempre que sea posible. La agregación Los planes de actualizaoíón optimizan el mantenimien- parcial. esto es. la introducción de un nuevo "GhAgg con to de índices, verifican las restricciones. aplican accio- agrupación sobre un superconjunto de las columnas de nes en cascada y mantienen las vistas materializadas. un GhAgg que se encuentre más arriba. se considera Para el mantenimiento de los índices, en lugar de tomar 'debajo de las reuniones y union all y también en pia- cada fila y mantener todos sus índices los planes de actua- nes paralelos. Véanse las referencias dadas en las notas lización aplicanmOdlfic'aciones por índice, ordenamiento bibliográficas para más detalles. de filas y aplican la operación de actualización según el ;- La ejecución correlacionada se considera durante la orden de la clave. Esto minimiza las operaciones EIS i~ exploración del plan¡ el caso más simple es una reunión j- aleatorias. especialmente cuando el número de filas a de búsqueda en el índice. SQL Server modela.esto utili- optimizar es grande. Las restricciones se manejan con s. zando Apply, que opera sobre una tabla T y una expre- un operador assert, que ejecutan un predicado y envían sión relacional parametrizada E(t). APp/y ejecuta E pata un 'error si el resultado es false. Las restricciones de inte- io cada fila de T, que proporciona los valores de los pará- m gridad referencial se definen mediante predicados exlst. metros. La ejecución correlacionada se considera como los cuales se convierten en semirreuniones y se optimi- una alternativa a la ejecución. sin considerar el uso de las zan considerando todos los algoritmos de ejecución. n- subconsultas en la,formulacíónSrjt, original. Es una estra- ue El problema Halloween se soluciona utilizando elec- tegia muy eficiente cuando latabla T es muy pequeña y ciones basadas en el coste. El problema Halloween se x- los índices soportan la ejecución parametrizada eficien- n- refiere a la siguiente anormalídad: supongamos que se te de,E(t). Además se considera la reducción del núme- lee en orden ascendente un índice sueldo y los salarios 11- ro de ejecuciones de E(tJ donde hay valores de paráme- se se suben un 10 por ciento. Como resultado de la actuali- tros duplicados mediante dos técnicas: ordenar T según zación, las filas se moverán hacia arriba en el índice y se de los valores de los parámetros de forma que se reutilice je- volverán a encontrar y actualizar de nuevo, llevándonos unúnico resultado de E(t) mientras que el valor del pará- a un bucle infinito. Una forma de solventar este proble- da metro no Cambia, o también utilizar .una tabla de asocia- de ma es separar el procesamiento de dos fases: en primer ción que siga la pista del resultado de E(t) para (algún lugar se leen todas las tilas que Se actualizarán y se hace lis- subconjunto) de valores anteriores del parámetro. una copia de ellas en algún lugar temporal, después Se 655
  • 12. ¡ FUNDAMENTOS DE BASES DE DATOS ¡ leen de este lugar y se.aplican todas las actualizaciones. mitido agregar nuevas heurísticas fácilmente a lo largo Otra alternativa es leer desde un 'índice distinto donde las del tiempo, sin comprometer la selección basada en el filas no se trasladarán. como resultado de la actualización. coste de los planes o la exploración exhaustiva del espa- Algunos planes de ejecución proporcionan la separación cio de búsqueda, cuando es apropiado. de las fases de forma automática, si se ordena o constru- ye una tabla de asociación en las filas a actualizar. En el 27.4.6. Ejecución de la consulta optimizador de SQL Server la protección Halloween se modela como una propiedad de los planes. Se generan Los algoritmos de ejecución soportan el procesamiento 'varios planes que proporcionan la propiedad requerida y basado en la ordenación y basado en la asociación, y sus se selecciona uno según el coste de ejecución estimado. estructuras de datos se diseñan para optimizar el uso de la caché del procesador. Las operaciones de asociación soportan agregación y reunión básica, con una serie de 27.4.5. Búsqueda parcial y heurísticas optimizaciones, extensiones y ajuste dinámico del ses- Los optimizadores basados en el coste se enfrentan al go de datos. La operaciónjiuw-distinctes una variante problema de la explosión del espacio de búsqueda pues- de asociación con valores distintos (hash distinct). don- to que.las aplicaciones emiten consultas que involucran de las filas se devuelven tan pronto como se encuentra docenas de tablas. Para solucionar esto, SQL Server uti- un nuevo valor distinto, en lugar de esperar a procesar liza varios estados de optimización, cada uno de los cua- toda la entrada. Este.operador es efectivo para consul- les utiliza transformaciones de la consulta para explo- tas que utilizan distinct Y solicita solamente unas pocas rar regiones sucesivamente mayores del espacio de, filas. como con la constructora top n. Los planes corre- búsqueda. lacionados la ejecución de E(t)"a menudo incluyendo Hay transformaciones simples y completas diseñadas varias búsquedas en el índice. basadas en el parámetro para la optimización exhaustiva, así como transforma- para cada fila I de la tabla: T. La preextracción asíncro- ciones inteligentes que implementan varias heurísticas. na permite la:emisión de varias solicitudes de búsqueda Las transformaciones inteligentes generan planes que en el índice al motor de almacenamiento. Se implemen- están muy lejos en el espacio de búsqueda, mientras que ta de la siguiente forma: se hace una solicitud de bús- las transformaciones sencillas exploran' las cercanías. Los queda en el índice sin bloqueo para una filas de T, enton- estados de, optimización aplican una mezcla de ambas ces 1 se sitúa en una cola de preextracción. Se sacan las clases de optimización, en primer lugar enfatizando en filas de la cola y son utilizadas por Apply para ejecutar las transformaciones inteligentes y posteriormente cam- E(i). La ejecución de E(t) no requiere que los datos ya biando a transformaciones sencillas, Se, preservan' los estén listos en la memoria intermedia, pero tener buenas resultados óptimos en los subárboles. de forma que los operaciones de preextracción maximiza la utilización estados posteriores se pueden beneficiar de los resulta- del hardware e incrementa el rendimiento. El tamaño de dos generados con anterioridad. Cada estado necesita la cola se determina dinámicamente como una función equilibrar técnicas de generación de planes opuestas: de aciertos en caché. Si no se requiere ninguna ordena- ción.dc las filas de salida de Apply; las, filas de esta cola • 'Generación exhaustiva de alternativas: para se pueden descartar para minimizar la espera en la E/S. generar el espacio completo el optimizador debe- La ejecución en paralelo se implementa mediante el ría utilizar transformaciones completas; locales, operador Iixchange, que gestiona varias hebras, parti- no redundantes (una regla de transformación equi- ciones o datos de difusión y alimenta los datos a varios valente a una secuencia de más transformaciones proceses. El optimizador de consultas decide la ubica- primitivas solamente introduce costes adiciona- ción dé Exchange según el coste estimado. El grado de les). paralelismo se determina dinámicamente en tiempo de • Generación heurfstica de candidatos: una serie ejecución, según la utilización actual del sistema . de candidatos interesantes (seleccionados según el Los planes de índices están formados de' los trozos coste estimado) probablemente están lejos en tér- descritos anteriormente. Por ejemplo, se considera el minos de reglas de transformación primitivas. Aquí uso de una reunión de índices para resolver las conjun- las transformaciones deseadas son incompletas, ciones de predicados (o unión de índices para las dis- globales y redundantes. yunciones), basándose en el coste. Dicha reunión se pue- de realizar en paralelo, utilizando cualquiera de los La optimización se puede terminar en cualquier pun- algoritmos de reunión del servidor. También se consi- to después de que el primer plan se haya generado. Tal deran reuniones de índices para el único propósito de terminación se basa en el coste estimado del mejor plan ensamblar una fila con el conjunto de columnas nece- encontrado y el tiempo gastado ya-en la optimización. sario en una consulta, que es algunas veces más rápido Por ejemplo, si una consulta requiere solamente mirar que explorar una tabla base. Tomar identificadores de unas pocas filas en algunos índices, se producirá rápi- registros de un índice secundario y localizar la fila damente un plan muy barato en los primeros estados, correspondiente de la tabla base es efectivamente equi- terminando la optimización. Este enfoque nos ha per- valente a ejecutar una reunión de búsqueda en índice. 656
  • 13. cAPlrULO 21 SQL SC)1VCP'DE MIC;;EOSOFT Para ello se usan las técnicas genéricas de-ejecución tas distribuidas y remotas, que, las maneja directamen- correlacionada como la preextracción asfncrcna. te el procesador de consultas. Los proveedores de datos La comunicación con el motor de almacenamiento se clasifican según el rango de funcionalidad que pro- se realiza mediante OLE-DR, lo que permite acceder a porcionan, desde simples proveedores de conjuntos de otros proveedores de datos que implementan esta inter- filas sin capacidades de indexación a proveedores con faz. OLE-OB es un mecanismo utilizado para consul- soporte completo de SQL. Los subsistemas de transacciones, registro histórico, instrucción falla.se puede retroceder sin tener que retro- bloqueos y recuperación aseguran las propiedades AClD ceder loda la transacción. Un punto de almacenamien- esperadas de un sistema de bases de datos. to con nombre es· una instrucción save transaction enviada por una aplicación que etiqueta un punto en la 27.5.1.Transacciones transacción. Se puede enviar una instrucción rollback posterior para retroceder 'hasta el punto con nombre. En SQL Server todas las instrucciones son atómicas y Un retroceso a un punto de almacenamiento no libera las-aplicaciones pueden especificar varios niveles de bloqueos y no se puede utilizar en transacciones dis- aislamiento ,para cada instrucción. Las.transacciones se tribuidas. utilizan para encuadrar una secuencia de instrucciones" haciendo el conjunto completo atómico y controlando 27.5.1.2. Opciones de concurrencia su aislamiento desde otras transacciones. Una única tran- para cctuctrscctcnes sacción puede incluir instrucciones que no solamente SQLServer ofrece control de concurrencia optimista y seleccionan, insertan, borrar o actualizan registros, sino pesimista para las operaciones de actualización. que también crean o eliminan tablas, construyen índi- El COntrol de concurrencia optimista funciona bajo ces y realizan importaciones masivas de datos. Las tran- la suposición de que los conflictos de recursos entre sacciones pueden abarcar bases de datos en servidores varios usuarios son poco probables (aunque no imposi- remotos. Cuando las transacciones se extienden por bles) y permite a las transacciones ejecutarse sin blo- varios servidores, SQL Server utiliza un servicio del sis- quear ningún recurso. Solamente cuando se intentan tema operativo windows, denominado coordinador de cambiar los datos se verifican los recursos para deter- transacciones distribuidas (Microsoft Distributed Tran- minar si han ocurrido conflictos. Si sucede un conflic- saction Ccordinator, MS DTC) para ejecutar un proce- to, la aplicación debe leer los datos e intentar el cambio samiento de compromiso de dos fases. MS PTC sopor- de nuevo. Las aplicaciones pueden elegir si se detectan ta el protocolo de transacción XA y, junto con OLE-OB, los cambios comparando los valores o verificando la proporciona el fundamento para transacciones ACID columna especial rowversion de una fila. El control de entre sistemas heterogéneos. concurrencia optimista requiere el uso de cursores. El control de concurrencia pesimista bloquea los 27.5.1.1.Puntos de almacenamiento recursos cuando se requieren durante la duración de una SQL Server soporta dos tipos de puntos de almacena- transacción. A no ser que ocurran interbloqueos se ase- miento: de instrucciones y con nombre. Los puntos de gura la finalización satisfactoria de una transacción. El almacenamiento de instrucciones son puntos tomados control de concurrencia pesimista es el predeterminado al comienzo de una: instrucción de fO(01a que, si una para SQL Server. I RID Identificador de fila, usado para bloquear una única fila de una tabla Clave Bloqueo de fila en un índice; protege tos rangos de clave en teensecciones secuencíablee Página Página de tabla o indice de 8 Kbyte Extensión Grupo contiguo de ocho páginas de datos o de índice Tabla Tabla completa, incluyendo todos los datos a índices 1 BD Base de datos FIGURA 27.5. Recursos bloqueables. 657
  • 14. FUNDAMENTOS DE BASES DE DATOS guracién (frecuentemenle estáticos) para gestionar cuán- 27.5.1-.3. Niveles de aislamiento ta memoria dedicar a la administración del bloqueo. SQL~92 define los siguientes niveles de aislamiento, En SQL Server la granularidad del bloqueo se opti- todos ellos soportados por SQL Server: m-iza automáticamente para un rendimiento y concu- rrencia óptimos para cada índice de una consulta. Ade- • Lectura no comprometida (nivel inferior donde las más, la memoria dedicada al administrador de bloqueos transacciones se aislan solamente para asegurar se ajusta dinámicamente segun la realimentación des- que no se leen físicamente datos corruptos). de otras partes del sistema, incluyendo otras aplicacio- • Lectura comprometida (Nivel pre9-et~rminado de nes de la máquina. SQL Server) La granularidad del bloqueo se optimiza antes de la • Lectura repetible ejecución de la consulta para cada tabla e fndice utiliza- Secuenciable (nivel' superior, .donde las transac- do en la consulta. El proceso de optimización del blo- ciones están completamente aisladas entre sí) queo tiene en cuenta el nivel de aislamiento (esto es. cuánto tiempo se mantienen los bloqueos), el tipo de exploración (rango, prueba o toda la tabla), el número 27.5.2. Bloqueos estimado de filas a explorar, la selectividad (porcentaje SQL Server proporciona bloqueos de varias granulari- de filas visitadas que son resultado de la consulta), den- dades que permiten que una transacción bloquee distin- sidad de filas (número de filas por página); tipo de ope- tos recursos (véase la Figura 27.5, donde los recursos se, ración '(exploración, actualización). limites del usuario listan en orden creciente de granularidad). Para mini- sobre la granularidad y memoria del sistema'disponible. mizar el coste del bloqueo, SQL Server bloquea los recur- La Figura 27.6'muestra una consulta ejemplo donde sos automáticamente a una granularidad apropiada para las filas resultado se identifican mediante una explora- la tarea. El bloqueo a una granularidad menor, tal como ción de rango de un índice y después se recuperan las ñlas, aumenta la concurrencia, pero tiene un coste mayor, filas desde la tabla base. Aquí se utilizan los bloqueos puesto que se deben realizar más bloqueos si se bloquean de página sobre el índice, puesto que con un rango den- muchas filas. El bloqueo a una granularidad mayor, tal so de filas del índice se requieren solamente unos pocos como tablas, es costoso en términos de concurrencia bloqueos de página. Sin embargo, las filas de la tabla puesto que el bloqueo de,una tabla completa restringe a base están dispersas por toda la tabla y por ello el blo- otras transacciones el bloqueo a cualquier parte de la queo en un nivel de fila proporciona una concurrencia tabla, pero tiene unos costes de CPU y memoria meno- mucho mayor. En general, la optimización del bloqueo res, ya que se adquieren menos bloqueos. favorece la concurrencia en sus decisiones. Una vez se Los modos de bloqueos disponibles son compartido ejecuta una consulta, la granularidad de bloqueo se (S, shared), de actualización (U. update) y exclusivo (X, dimensionaautomáticamenté hasta el nivel de tabla si exclusive). Los bloqueos de actualización se utilizan el sistema adquiere significativamente más bloqueos para evitar que ocurra una forma común de interblo- que los esperados por el optimizador o si la cantidad de queo cuando varias sesiones están leyendo, bloquean- memoria disponible cae y no se pueden soportar el do y potencialmente actualizando recursos más tarde. número de bloqueos requeridos. Otros modos de bloqueo adicionales (denominados blo- queos de rango de clave) se adoptan solamente en-el 27.5.2.2. Detección de interbloqueos, nivel de aislamiento secuenciable 'para bloquear el ran- SQL Server detecta de forma automática los interblo- go entre dos filas y un índice. queos que involucran bloqueos y otros recursos. Por , Los bloqueos de varias granularidades requieren que ejemplo si la transacción A está manteniendo un blo- se adquieran los. bloqueos en una jerarquía estricta de queo en Tabla} y está esperando memoria disponible y mayor a menor granularidad. La jerarquía es la base de la transacción Btiene algo de memoria que no puede datos, tabla, página y fila. Cuando se intenta bloquear compartir hasta que adquiera un bloqueo sobre Tablal, en un nivel superior al compartido, de actualización y la transacción presentará un interbloqqeo.l:as hebras y exclusivo se usan bloqueos intencionales. las memorias intermedias de comunicación también pue- den estar involucradas en los interbloqueos. Cuando, 27.5.2.1. Bloqueo dinámico SQL Server detecta un interbloqueo, elige como la víc- El bloqueo de granularidad fina puede mejorar la con- tima del interbloqueo la transacción que es menos cos- currencia con el coste de ciclos de CPU y memoria extra tosa de retroceder. considerando la cantidad de trabajo para-adquirir y mantener muchos bloqueos. P~ muchas que la transacción ya ha realizado. consultas una granularidad de bloqueo más burda pro- Frecuentemente la detección puede perjudicar al ren- porciona mejor rendimiento sin pérdida de concurren- dimiento del sistema. SQL Server automáticamente ajus- cia.(o mínima). Los sistemas de base de datos han reque- ta la frecuencia de la detección de interbloqueos a la fre- rido tradicionalmente sugerencias de consulta y opciones cueneia a la que están ocurriendo los interbloqueos. Si de tabla a las aplicaciones para especificar la granula- los interbloqueos no son frecuentes, el algoritmo de ridad del bloqueo. Además, hay parámetros de confi- detección se ejecuta cada 5 segundos. Si son frecuen- .ss
  • 15. CAPitULO 21 SQL SERVE,RDE ~J¡CR9S0fT Indica sobre Ie columna e de la tabla T ) e ,- P.áginas de la tabla T. as FIGURA 27.6. Granularidad de los bloqueos. )S n- o, ila lo- tes se comenzará a verificar cada vez que una transac- bloquear ninguna operación y todos los registros histó- da ción espera un bloqueo. ricos se tratan como si fueran un archivo continuo. reo ; se 27;5.3.Registros históricos y recuperación 27.5.3.2. Recuperación de caídas "e SQL Server está diseñado para recuperarse de fallos del El sistema de recuperación de SQL Server tiene muchos as> aspectos en comi.ín con el algoritmo de recuperación eos sistema y de los medios, y el sistema de recuperación ARIE:S (véase el Apartado 17.9.6), y en este apartado á de sepuede dimensionar a máquinas con memorias inter- se muestran algunas de las diferencias clave. rr el medias muy grandes (100 Gbytes) y miles de unidades SQL Server posee una opción de configuración deno- de disco. minada intervalo de recuperación, que permite a un administrador limitar eJ tiempo que SQL Server debe- 27.5.3.1. Registros históricos ría tardar en recuperarse después de una caída. El ser- rolo- El registro histórico de la transacción registra todos los vidor ajusta dinámicamente la frecuencia en los puntos . por cambios realizados sobre la base de datos y almacena de comprobación para reducir el tiempo de recupera- l blo- suficiente información para permitir deshacer cualquier ción. Los puntos de comprobación eliminan todas las ible y cambio (retroceso) o rehacer en el caso de un fallo del páginas desfasadas de Ia memoria intermedia, y se ajus- ~uede, sistema o solicitud de retroceso. tan a las capacidades del sistema E/S y a su carga de abla l , El registro histórico es, desde un punto de vista logi- trabajo para eliminar de forma efectiva cualquier impac- brasy co, un flujo potencialmente infinito-de registros históri- to en las transacciones que se ejecutan. npue- cos identificado por números de secuencia del registro En el inicio. después de una caída. el sistema inicia uando histónco.d.og Sequence Number, LSN). Desde un pun- varias hebras (dimensionadas aurométícamente al núme- la vÍC'- to de vista físico; una porción del flujo se almacena en ro de UCP) para iniciar la recuperación de varias bases os cos- archivosde registros históricos. Los registros históricos de datos en paralelo. La primera fase de la recuperación trabajo se guardari en los archivos de registros históricos hasta es un paso de análisis en el registro histórico. que cons- quese realiza una copia de seguridad y no hay necesidad truye una tabla de páginas desfasadas y una lista dc tran- r al ren- porparte del sistema de retroceso o réplica. Los archivos sacciones activas. La siguiente fase es un inicio de la ne ajus- deregístro histórico crecen y disminuyen en tamaño para fase rehacer desde el último punto de comprobación y a la fre- acomodarse a los registros que se tienen que almacenar. realizar todas las operaciones. Durante la fase rehacer ueos. Si Adicionahnente los archivos de registro histórico se pue- se utiliza la tabla de páginas desfasadas para leer anti- i!mo de denagregar a una base de datos (en nuevos discos, por cipadamentc las páginas de datos. La fase final es una fre(;uen- ejemplo)mientras que el sistema se está ejecutando y sin fase deshacer donde se retroceden todas las transaccio- 659