Professional Documents
Culture Documents
Podemos medir
Arquitectura rendimiento y
performance Tuning del motor Tiempo
Uso de recursos
relacional del SQL Server Memoria
Cpu
Ing. J os e M ariano A lvarez Disco
j o s e . m a r i a n o . a l va r e z @g m a i l . c o m
Recursos requeridos para crear la solucin
ww w . s q l t o t a l c o n s u l t i n g . c o m
Programadores
Puestos de trabajo
2
Para pensar
Si tenemos un tiempo promedio de respuesta de 1
segundo en nuestro servidor
Algunos detalles
SQL Server corre como un programa ms de Windows
Fue diseado para Windows y por ello aprovecha todas las
caractersticas que tiene
No existe una API especial APIs que solo el SQL Server puede
usar
Solo usa funciones documentadas de Windows
1
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Protocolos Protocolos
F ormatea los paquetes TD S
Memoria compartida Local y no soporta MDAC2.8
S ervidor
Protocol layer
Named pipes Local o remoto
Es parte del motor relacional
Puede usar multiples protocolos al mismo tiempo
C liente TCP-IP Local o remoto, Es el ms recomendable
Son parte del SQL Native Client
Virtual Interface
Solo puede comunicarse por un solo protocolo Solo funciona con hardware via
Adapter (VIA)
Un endpoint adicional se crea para el conexin dedicada de sino mediante las libreras de red
administracion (DAC), que puede ser utilizado los miembros del rol
sysadmin.
12
2
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
13 14
Parser Optimizer Manager Traduce a la sintaxis interna del motor conocida como
rbol de consultas
Database Query Emite los errores de sintaxis
Manager Executor
16
Optimizador Optimizador
Toma rbol de la consulta desde el analizador
Optimizacin est basada en costos
Elige el plan de costo mnimo sobre la base de
Compila la totalidad del batch en una forma interna
La estimacin de las necesidades de memoria,
Determina la mejor forma de resolverla si es optimizable La utilizacin de la CPU,
El nmero necesario de I/O.
Verifica la seguridad.
18
3
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
22
4
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Operaciones de asignacion de
Tipos de paginas
paginas
Cada base de datos es una coleccin de paginas en disco Pginas de datos Datos de los usuarios
de 8 KB que se distribuyen en uno o ms archivos fsicos.
Gestiona una coleccin de pginas como un bases de Pginas LOB Datos de los usuarios
datos y mantiene un registro de:
que pginas en la base de datos ya han sido utilizados
Datos de los ndices Paginas de ndices
con qu fin se han utilizado
cunto espacio est disponible en cada pgina PFS: Realizar un seguimiento de las pginas de una base de
Page Free Space datos que estn disponibles para almacenar nuevos datos
5
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Bulk Changed Map BCM:Se la usa para hacer el bakup y restore mas eficiente
Snapshot isolation
Online index builds (crear indices en lnea)
Triggers
Differential Changed Map DCM: Se la usa para hacer el bakup y restore mas eficiente
Otras operaciones que requieran versiones de filas
Isolation Aislamiento. Una operacin no puede afectar a otras Escritura asincrnica (W2K+) en las pginas de datos
Microsoft Distributed Transaction Coordinator (MS DTC) versiones las anteriores anteriores pueden eliminarse del
usando RPC version store.
35
6
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
SQL Server 2000 o anterior. Los escritores todava bloquean a otro escritores
Serializable
7
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Non-Uniform Memory
Problemas de memoria en SMP
Access/Architecture (NUMA)
Todos los accesos a memoria comparten el mismo bus en Es un diseo de memoria utilizado en multiprocesadores
entornos SMP donde la memoria se accede en posiciones relativas de
otro procesador o memoria compartida entre
Funciona bien para pocas CPU
procesadores.
Aparece competencia en el BUS para muchas CPU
Bajo NUMA, un procesador puede acceder a su propia
Se agregan ms BUSes para satisfacer pocas CPU cada memoria local de forma ms rpida que a la memoria no
uno local (memoria local de otro procesador o memoria
compartida entre procesadores ).
NUMA Soft-NUMA
Antes de SQL Server 7.0 el planificador estaba basado en Para poder usar fibers
el sistema operativo Minimizar los cambios de context en modo kernel
A partir de SQL Server 7.0 se diseo un scheduler interno Corre en modo usuario y no en modo kernel
En 7.0 y 2000 se llamo User Mode Scheduler (UMS) SQL Server scheduler se ejecuta en modo cooperativo
En 2005 el SOS Scheduler es parte del SQLOS
8
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Cada CPU tiene un scheduler creado cuando SQL Server Puede ser un thread o una fibra que esta bounded a un
arranca aunque no la use (affinity mask). scheduler.
Limitado por Max Worker Threads y el nmero de schedulers
ONLINE
El scheduler se lo utiliza
No se puede mover un worker de un scheduler a otro
Son creados cuando el scheduler recibe un pedido y no hay idle
OFFLINE
workers.
El scheduler no se lo utiliza en la planificacin
Puede ser destruido si ha estado idle por al menos 15 minutes o
Cada scheduler es responsable de crear o destruir los SQL Server esta bajo presin de memoria.
workers segun precise Cada worker utiliza memoria (stack)
9
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
NUMA y Schedulers
El modo de fibra es slo para situaciones especiales Cada nodo tiene algn subconjunto de los procesadores de la
mquina y el mismo nmero de Schedulers
en las que el SQL Server llega a un lmite en la Cuando un SPID es creado, es asignado a los nodos en usando
escalabilidad, debido demasiado tiempo de round-robin.
conmutacin entre hilos o demasiados cambios entre El monitor del scheduler asigna el SPID al scheduler menos
cargado de ese nodo.
el modo de usuario y el modo kernel. Un nico procesador o maquina SMP es tratado como un nico
AP LICACIN D EL MODO FIBER nodo NUMA.
Cada scheduler queda fijo en una CPU particular si se usa la opcin
de configuracin affinity mask.
10
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
De forma predeterminada, DAC slo est disponible localmente El principal componente de memoria en SQL Server es el
(opcin de configuracin Remote Admin Connections) buffer pool
El usuario de inicio de sesin al conectarse a travs de la DAC
Toda la memoria no utilizada por otro componente de memoria
debe ser un miembro de Sysadmin. permanece en el buffer para ser utilizado como una cach de
Hay slo unas pocas restricciones sobre que puede ser
datos para las pginas de los archivos de base de datos en el
ejecutado usando la CAD. disco.
Usa un thread especial que le permite ejecutar las funciones
El buffer manager gestiona las funciones de I/O a disco para
de diagnstico o consultas en un scheduler separado.
que los datos e ndices en la cache puedan ser compartidos
entre los usuarios.
Otros componentes piden memoria al buffer pool El acceso a las pginas en el cach debe ser rpido.
Un buffer es una pgina en la memoria y es del mismo Las pginas en el cach de datos se acceden usando
tamao que una pgina en disco. hashing para un acceso rpido.
Dado un identificador (dbid-fileno-pageno) la funcin de
En ocasiones, SQL Server debe solicitar memoria
hash convierte esta clave en un bucket que debe ser
contigua en bloques de ms de 8-KB y debe ser asignado verificado
desde fuera del buffer pool.
El hash bucket sirve como un ndice de la pgina
solicitada.
Mediante el uso de hash se puede Puede utilizar una pgina de datos o una pgina de ndice slo si
existe en la memoria
Encontrar una pgina de datos en la memoria cach con slo unas En la memoria cach de datos deben estar disponibles un buffer
pocas lecturas de memoria para la pgina
Determinar que una pgina deseada no se encuentra en la cach y que Un nico mecanismo es el responsable de escribir pginas
debe ser ledo desde el disco modificadas en el disco y de marcar como libre las pginas que no
han sido referenciados por algn tiempo
Encontrar una pgina de datos puede requerir varios
SQL Server mantiene una lista de las direcciones de pginas libres,
accesos a varios buffers a travs de la cadena de hash y cualquier worker que necesita una pgina del buffer utiliza la
buckets (lista). primer de esta lista
11
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Cada buffer tiene una cabecera que contiene informacin de Es realizado por los workers mientras esperan las
las dos ltimas veces en que la pgina fue referenciada y si la
pgina se ha cambiado desde que fue ledo del disco accesos asincrnicos a los discos
El cache se revisa peridicamente para liberar pginas Cada instancia de SQL Server tambin tienen un thread
Cuando el valor es bastante bajo, se revisa el indicador dirty y lazywriter para cada nodo NUMA que libera las pginas
se planifica una escritura a disco asincrnica si es necesario
Luego la pagina es liberada removiendo la informacin de
buffer en la tabla hash y se ubica en la lista de libres
Checkpoint
12
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
78
13
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
index ranges
79 80
LSN Pginas
83 84
14
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Extents Collations
Character set
Sort order
Acentos
Maysculas
Ancho
Binario (ms rpido)
Preferencia de maysculas y case insensitive
WHERE campo >= valor ORDER BY campo
Requiere un SORT adicional
85 86
Tipos de aplicaciones
OLTP
Muchas transacciones
Atomicidad en las operaciones
Concurrencia
DSS
Sin transacciones D ISCOS Y R AID
Barrido de informacin
87
89 90
15
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
Fi l e a n d Ap p l i c a ti o n s e r ve r s
Da ta b a s e s e r ve r s
DISK 2
W W W, E-m a il, a n d Ne ws s e r vers
In tr a n e t s e r ve r s
M o s t ve r s a ti l e RAID l e ve l
LOGICAL DISK RAID 10 has the s ame fault tole ranc e as All drives m ust m ove in parallel
PARITY RAID le ve l 1 to p r o p e r tr a c k l o we r i n g
RAID 10 has the s ame ove rhe ad for
s u s ta i n e d p e r fo r m a nc e
fault-tolerance as mirroring alone
Ve r y l i m i te d s c a l a b i li ty a t a v e r y
Hi g h I/ O ra te s a re a c h i e ve d b y s tri p i n g h i g h i n h e r en t c o s ts
RAID 1 s e gme nts
DISK 2
Un d e r c e rta i n c i rc u ms ta n c e s , RAID 10 R ecommended Applications
PARITY
array can sustain multiple simultaneous
drive failures
Da ta b a s e s e r ve r r e q u i r i n g h i g h
Ex cellent s olution for s ites that would
have othe rw is e gone w ith RAID 1 but p e r fo r m an c e a n d fa u l t to l e r a n c e
need some additional performance boost
DISK 3 PARITY
16
Arquitectura rendimiento y performance 08/05/2009
Tuning del motor relacional del SQL Server
RAID 10
RAID 10
DISK 1 LOGICAL DISK
DISK 2
DISK 3
DISK 4
97
17