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