Mysql

838 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
838
En SlideShare
0
De insertados
0
Número de insertados
1
Acciones
Compartido
0
Descargas
9
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Mysql

  1. 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 deServer, 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 herramientadel Administrador corporativo de SQL Server, El admi- visual que permite al administrador de la hase de datosnistradof 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 datosjar 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 ajusteAdministrador corporativo de SQL Server proporciona de las bases de datosacceso a herramientas visuales de bases de datos. Estasherramientas proporcionan tres mecanismos para.ayu- SQL Server proporciona herramientas para ayudar aldar 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. 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 pasode ~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 SQLEL 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 dedatos simultánea" (una o más instalaciones de SQL Ser- SQL Server puede mostrar un plan de ejecuciónver), 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. 3. cAPlrULO21 S~QLSLlVER DE MJCROSCTr >»SELECT e. Le.ltName, 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 Employee~ 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. 4. FUNDAMENTOS DE BASES DE DATOSce 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 consultastraza en dos componentes, separados aunque conecta- interactivas. El Asistente para optimización de índicesdos. 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 vezrio del Analizador (IU). El Analizador muestra todo y fundamenta sus recomendaciones sobre una carga deevento ,que cumple el criterio del filtro mientras ocurre. trabajo que puede ser un archivo de eventos de trazaUna 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 lasmostrarlos 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 parares 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 unidadprincipal 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. 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).lerrin,-rs.a-Yterar,tos FIGURA 27.3. Ficha Eventos del Cuadro de diálogo Propiedades de traza.10-iasIUl-ue-lorarati-ges-a en,QL BRaíz<iolocomol. S.rvido M.iqosoll $QL.S.,v", El·e Grupo,,;" SQl Server, !"!lb PC-FERNAN [Window, NTIe no ~D Ba •• , de dOloso (es :E lJ maslo, ::E IJ modelor de Jll1mdb -_~ Base de datoslows ;fiJj Nor~ Propietario:emo- " tJ lIlI ~ ¡j 1erJ«b Fechd de <;reac:rón:or de m CJ , ••vicio. de tran.IÓlrna<:iacce- ·í CI A--;Iroción Tamaño: !±iU Duplicación ~,50ML,(2JX1J ±) CJ S"9-<idad Espacio disponible: if¡.:::J Se,.>:"" de co~,iOO. BJEJ ~eta D.laS""icei Opciones de la base de datos:laquecocer10 tra- adnll-ogurar Mantenimiento ,,:J.~--. ---- ,-__ o • _nerfaza 27.4. FIGURA27.4. Interfaz de! Administrador corporativo de SOL Server. 64.
  6. 6. FUNDAMENTOS DE BASESDE DATOSTransact-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 realespleto 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 Tab1ede entrada de la norma SQL-92 pero también soporta Table es un tipo que permite a una variableguardar unvarias características desde los niveles intermedios y conjunto de filas; Este tipo se utiliza principalmente parasuperiores. 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 la27.2.1. Tipos de datos función, procedimiento almacenado. o proceso por lotes en el cual se declara ..Dentro de este ámbito se puedeSQL Server proporciona un conjunto de tipos de datos utilizar una variable lable como una tabla nonna!. Seprimitivos que definen todos los tipos de datos que se puede aplicar en cualquier lugar donde se utiliza unapueden 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 21_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. 7. CAPITULO 21 SOL SUihR D~ MICROSOfT 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 ande 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 key0 miza toda la consulta como si se hubiera realizado sin check (IDClientebetween 66000 and5n 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 mismosce mejorar sustancialmente el rendimiento de las consultas nombre. La vista dividida distribuida para Servidorl sejue 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.PropictarioIabla. 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.Propietariostan referencia a la vista o sus tablas base. Las consultas exis- Tabla.Clientes_66o un tentes se pueden beneficiar de la eficiencia mejorada de union allmri- la recuperación de los datos directamente de la viS14inde- select :1< Irom Serverá.BasefteDatos.Propjetariobién xada sin tener que ser reescrita para hacer- referencia a la Tabla.Clientes_99ren- 651
  8. 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. 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. Tablas27.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 deUno 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 identificadordenominadas páginas. El sistema de asignación es res- fijo como identificador de fila (RlD, Row ldentifier) yponsable 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 setiempo, mantener el nivel de fragmentación de la base insertó originalmente, el registro se mueve a un lugarde 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 Inas 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. imediante varios mapas de bits. Estos mapas de bits per-miten al sistema de asignación encontrar una página oextensión para la asignación de una forma rápida. Estosmapas de bits también se utilizan cuando se ejecuta unatabla 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 Iusar mapas de bits basados en la asignación para la como una estructura de búsqueda para identificar unaexploració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 mejorasignificativamente 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 paracualquier objeto en ese grupo de archivos utilizando unalgoritmo 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 ¡ 1rellena con la proporción de la cantidad de espacio libre columnas de la tabla base. Permiten acceso eficiente deen 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. 10. FUNDAMENTOS DE BASES DE DATOSde 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 realmenteo í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 lanismo 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 ellatencia 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 optimizadorun entorno extensible que permite una rápida incorpora- aplica la exploración e implementación de reglasció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ásdatos en iteradores que se comunican entre sí utilizando bajo. Las reglas de exploración implementan lala 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 reglascoste de ejecución utilizando modelos detallados del com- de implementación introducen alternativas en laportamiento 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. EnServer 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. 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ónt 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 aplicanmOdlficaciones 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 EISi~ exploración del plan¡ el caso más simple es una reuniónj- 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 cons. 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 sex- 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 salarios11- 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 reutiliceje- 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 hacelis- subconjunto) de valores anteriores del parámetro. una copia de ellas en algún lugar temporal, después Se 655
  12. 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 procesamientovarios 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 de27.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 varianteproblema 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 encuentradocenas de tablas. Para solucionar esto, SQL Server uti- un nuevo valor distinto, en lugar de esperar a procesarliza 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 pocasrar 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ámetropara 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úsquedaLas 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 lasclases de optimización, en primer lugar enfatizando en filas de la cola y son utilizadas por Apply para ejecutarlas transformaciones inteligentes y posteriormente cam- E(i). La ejecución de E(t) no requiere que los datos yabiando a transformaciones sencillas, Se, preservan los estén listos en la memoria intermedia, pero tener buenasresultados óptimos en los subárboles. de forma que los operaciones de preextracción maximiza la utilizaciónestados posteriores se pueden beneficiar de los resulta- del hardware e incrementa el rendimiento. El tamaño dedos generados con anterioridad. Cada estado necesita la cola se determina dinámicamente como una funciónequilibrar 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. 13. cAPlrULO 21 SQL SC)1VCPDE 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 índices1 BD Base de datos FIGURA 27.5. Recursos bloqueables. 657
  14. 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úmero27.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 sistemadisponible. mizar el coste del bloqueo, SQL Server bloquea los recur- La Figura 27.6muestra 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. 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.)Sn-o,ilalo- 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 muchosas> aspectos en comi.ín con el algoritmo de recuperacióneos 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 lasible 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 deabla 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 iniciauando 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 basesos cos- archivosde registros históricos. Los registros históricos de datos en paralelo. La primera fase de la recuperacióntrabajo 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 lane 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 rehacerueos. 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 unafre(;uen- ejemplo)mientras que el sistema se está ejecutando y sin fase deshacer donde se retroceden todas las transaccio- 659

×