Académique Documents
Professionnel Documents
Culture Documents
24/10/2008
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
In g . Jo s e Ma r i a no A lva rez
j o s e . m a r i a n o . a l v a r e z @s q l t o t a l c o n s u l t i n g . c o m
Podemos medir
Tiempo Uso de recursos
Memoria Cpu Disco
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 Simplemente es un proceso ms de Windows No corre en modo kernel sino en modo usuario
5
ARQUITECTURA INTERNA
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Principales componentes
Protocolos
Fo rm atea l o s p a quetes TDS S e rvidor
Protocol layer Es parte del motor relacional Puede usar multiples protocolos al mismo tiempo
Protocolos
Memoria compartida Named pipes TCP-IP Virtual Interface Adapter (VIA) Local y no soporta MDAC2.8 Local o remoto Local o remoto, Es el ms recomendable Solo funciona con hardware via
Cl i e nte
Son parte del SQL Native Client Solo puede comunicarse por un solo protocolo
12
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
ODS Buffers
Bfer de salida sincrnico con buffer cache en el cliente provisto por el SO. Dos Buffer de entrada para poder manejar las cancelaciones La librera de red enva el paquete al cliente tan pronto como este se llena. Si no se leen datos en el cliente el SQL Server deja de enviar y los recursos usados quedan bloqueados
13
Database engine
Relational Engine
Componentes para analizar y para optimizar cualquier query Maneja la ejecucin de queries y solicita datos al motor del almacenamiento
Storage Engine
Procesa los resultados recibidos Componentes para tener acceso y para modificar los datos sobre disco.
14
Database Manager
Query Executor
16
Optimizador
Toma rbol de la consulta desde el analizador Compila la totalidad del batch en una forma interna Determina la mejor forma de resolverla si es optimizable Verifica la seguridad. Genera un plan de ejecucin.
Optimizador
Optimizacin est basada en costos Elige el plan de costo mnimo sobre la base de
La estimacin de las necesidades de memoria, La utilizacin de la CPU, El nmero necesario de I/O.
18
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Optimizador - Costos
Costos calculados a partir de:
el tipo de declaracin solicitada Estadsticas de distribucin de los datos para cada columna o ndice de la consulta Mtodos de acceso Estrategias de join los ndices disponibles para cada tabla
SQL manager
Es el responsable de todo lo relacionado con la gestin de procedimientos almacenados, consultas parametrizadas y sus planes.
Gestiona el almacenamiento del cach de procedimiento para que otros procesos puedan reutilizarlo Se ocupa de autoparametrizacin de consultas. Determina cuando se requiere una recompilacin
Heursticas de poda del rbol de estrategias para que el costo de obtener la solucin sea menor que el de ejecutarla
20
Database Manager
Maneja el acceso a los metadatos necesarios para la compilacin y optimizacin
Query executor
Corre el plan de la ejecucin que el optimizador produjo, Acta como un despachador para todos los comandos en el plan de ejecucin. Este mdulo realiza un ciclo con cada comando del plan de la ejecucin hasta que el batch est completo.
22
Storage Engine
SQLOS Gestor de transacciones
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Mtodos de acceso
Configura y solicita exploraciones de paginas de datos y de paginas de ndices Posee servicios para
Abrir una tabla Recuperar datos calificados Actualizar datos
Mtodos de acceso
Cuando se inicia la exploracin, el mecanismo de lookahead califica las filas o entradas de ndices en una pgina. Recuperacin calificada
Es la recuperacin de las filas que cumplen los criterios especificados. Se emplea no slo para las consultas, sino tambin para las actualizaciones
Cada componente es responsable de la manipulacin y el mantenimiento de sus respectivas estructuras de datos en disco.
Tipos de paginas
Pginas de datos Pginas LOB Datos de los ndices Page Free Space
Datos de los usuarios
Paginas de ndices
PFS: Realizar un seguimiento de las pginas de una base de datos que estn disponibles para almacenar nuevos datos
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Tipos de paginas
Global Allocation y Shared Global Allocation Map Index Allocation Map Bulk Changed Map Differential Changed Map
IAM y SGAM: Realiza un seguimiento de las dems pginas. No contiene ninguna fila de la base de datos y slo se utilizan internamente.
Version store
Row versioning (versiones de filas) permite al SQL Server mantener las versiones anteriores de las filas que cambiaron Da soporte:
Snapshot isolation Online index builds (crear indices en lnea) Triggers Otras operaciones que requieran versiones de filas
IAM: Realiza un seguimiento de las dems pginas. No contienen ninguna fila de la base de datos y slo se utilizan internamente.
Propiedades ACID
Transaction Manager
El objetivo es asegurar que se cumplan las propiedades ACID Escritura anticipada en el Log de transacciones Escritura sincrnica en el log de transacciones Escritura asincrnica (W2K+) en las pginas de datos Coordina el registro, la recuperacin y la administracin de buffers.
34
Atomicidad. Asegura que la operacin se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias.
Durabilidad. Una vez realizada la operacin, sta persistir y no se podr deshacer aunque falle el sistema
Transaction Manager
Traza los lmites de las instrucciones que deben agruparse como una operacin Permite secuencias anidadas Coordina las transacciones distribuidas con el servicio Microsoft Distributed Transaction Coordinator (MS DTC) usando RPC
Transaction Manager
Se coordina con el administrador de bloqueos cuando pueden liberarse los bloqueos dependiendo del nivel de aislamiento Dependiendo del nivel de aislamiento coordina cuando versiones las anteriores anteriores pueden eliminarse del version store.
35
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Modelos de concurrencia
Concurrencia optimista
Los lectores no bloquean a los escritores Los escritores no bloquean a los lectores Los escritores todava bloquean a otro escritores El costo de estos debe ser considerado
Debe dedicar ms tiempo en la gestin del version store Los administradores tendrn que prestar atencin a la tempdb y el mantenimiento extra que requiere.
Pesimista Optimista
Garantiza la exactitud y la consistencia bloqueando los datos para que no se puedan cambiar. Es el nico modelo de concurrencia del SQL Server 2000 o anterior.
SQL Server 2005 introduce la concurrencia optimista, que dispone de datos coherentes, manteniendo las versiones anteriores de las filas en una zona de tempdb llama la version store
Modelos de aislamiento
Pesimista
Read commited Read Uncommitted Repeatable Read Serializable
Optimista
Read commited Snapshot
SQLOS
El SQLOS es como un pequeo sistema operativo que agrupa funcionalidades comunes
Gestin de recursos Scheduling Un framework para gestin de bloqueos y transacciones, Deteccin de deadlocks Utilidades para dumping, Manejo de excepciones
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
NUMA
NUMA limita el nmero de CPUs en un bus de memoria determinado Cada grupo de CPU tiene su memoria propia y quiza sus canales de I/O Cada CPU puede accede memoria de otros grupos en una forma coherente Cada grupo es un nodo NUMA e interconectado a los otros El numero de CPUs por cada nodo NUMA es variable Es mas rapido accede a la memoria local del nodo
Soft-NUMA
Sin hardware especifico Sof NUMA subdivide la CPU pero no la memoria Permite configurar la escucha en un determinado puerto El SQL Server scheduler y la interfaz de red son consientes del soft-NUMA Nodos de memoria se basan en hardware NUMA y no son afectados por soft-NUMA Solo TCP y VIA pueden mapear conexiones a un conjunto especfico de nodos NUMA
Scheduler Antes de SQL Server 7.0 el planificador estaba basado en el sistema operativo A partir de SQL Server 7.0 se diseo un scheduler interno En 7.0 y 2000 se llamo User Mode Scheduler (UMS) En 2005 el SOS Scheduler es parte del SQLOS
Caractersticas del Scheduler Para poder usar fibers Minimizar los cambios de context en modo kernel Corre en modo usuario y no en modo kernel SQL Server scheduler se ejecuta en modo cooperativo
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
SQL Server Schedulers Cada CPU tiene un scheduler creado cuando SQL Server arranca aunque no la use (affinity mask). ONLINE
El scheduler se lo utiliza
OFFLINE
El scheduler no se lo utiliza en la planificacin
Generalmente es mucho menor el nmero de w orkers que el de usuarios concurrentes. WORKER THREADS
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
SPID NUMA
Hay una restriccin que todas las tareas para un SPID deben ser procesadas por schedulers en el mismo nodo NUMA. La excepcin a esta restriccin es cuando una consulta se est ejecutando en paralelo en mltiples CPU.
NUMA y Schedulers
El modo de fibra es slo para situaciones especiales en las que el SQL Server llega a un lmite en la escalabilidad, debido demasiado tiempo de conmutacin entre hilos o demasiados cambios entre el modo de usuario y el modo kernel.
Cada nodo tiene algn subconjunto de los procesadores de la mquina y el mismo nmero de Schedulers Cuando un SPID es creado, es asignado a los nodos en usando round-robin. El monitor del scheduler asigna el SPID al scheduler menos cargado de ese nodo. Un nico procesador o maquina SMP es tratado como un nico nodo NUMA. Cada scheduler queda fijo en una CPU particular si se usa la opcin de configuracin affinity mask.
10
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
DAC
De forma predeterminada, DAC slo est disponible localmente (opcin de configuracin Remote Admin Connections) El usuario de inicio de sesin al conectarse a travs de la DAC debe ser un miembro de Sysadmin. Hay slo unas pocas restricciones sobre que puede ser ejecutado usando la CAD. Usa un thread especial que le permite ejecutar las funciones de diagnstico o consultas en un scheduler separado.
Buffer pool
Otros componentes piden memoria al buffer pool Un buffer es una pgina en la memoria y es del mismo tamao que una pgina en disco. En ocasiones, SQL Server debe solicitar memoria contigua en bloques de ms de 8-KB y debe ser asignado desde fuera del buffer pool.
Acceso a las pginas de datos en memoria El acceso a las pginas en el cach debe ser rpido. Las pginas en el cach de datos se acceden usando hashing para un acceso rpido. Dado un identificador (dbid-fileno-pageno) la funcin de hash convierte esta clave en un bucket que debe ser verificado El hash bucket sirve como un ndice de la pgina solicitada.
Hash
Mediante el uso de hash se puede
Encontrar una pgina de datos en la memoria cach con slo unas pocas lecturas de memoria Determinar que una pgina deseada no se encuentra en la cach y que debe ser ledo desde el disco
Data Cache
Puede utilizar una pgina de datos o una pgina de ndice slo si existe en la memoria En la memoria cach de datos deben estar disponibles un buffer para la pgina Un nico mecanismo es el responsable de escribir pginas modificadas en el disco y de marcar como libre las pginas que no han sido referenciados por algn tiempo SQL Server mantiene una lista de las direcciones de pginas libres, y cualquier worker que necesita una pgina del buffer utiliza la primer de esta lista
Encontrar una pgina de datos puede requerir varios accesos a varios buffers a travs de la cadena de hash buckets (lista).
11
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Liberacin de pginas Es realizado por los workers mientras esperan las accesos asincrnicos a los discos Cada instancia de SQL Server tambin tienen un thread lazywriter para cada nodo NUMA que libera las pginas
Lazywriter
Duerme un determinado intervalo de tiempo,
Los buffers que se agregan a la lista libre, tambin son escritos en el disco si estn modificados
Checkpoint
El algoritmo de gestin del buffer es lo suficientemente bueno como para no cnecesitar el pinning. (Fuerza a una tabla permanecer en la memoria cach) PINTABLE
Analiza el cach peridicamente y escribe cualquier pginas de datos modificada en el disco. Nunca pone paginas en la lista libre. El nmero de pginas sucias en la memoria siempre es mantenido a un nivel mnimo La duracin de la recuperacin de una base de datos despus de una falla se mantiene al mnimo
12
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Cuando se ejecuta
Comando CHECKPOINT El log esta casi lleno (70%) y el modo de recuperacion es SIMPLE Dependiendo del Recovery Interval Shutdown sin NOWAIT
Memoria en otros Caches Buffer de memoria que no se utiliza para la cach de datos se utiliza para otros tipos de cache, fundamentalmente el cach de procedimientos La poltica de sustitucin de pginas es un poco diferente a la de cach de datos.
Memory Broker
Analizar el comportamiento de SQL Server con respecto a consumo de memoria y mejora la distribucin de memoria dinmica. es un mecanismo centralizado que distribuye dinmicamente la memoria entre el buffer pool, el ejecutor de consultas, el optimizador de consultas, los caches, y trata de adaptar para los diferentes tipos de cargas ..
Address Windowing Extensions (AWE) Puede ser considerada otra area de memoria Solo se pueden almacenar paginas del data cache El consume de memoria solo se puede ver desde las DMV
Large memory
Mayor memoria mayor performance por menor I/O
Cache-Hit Ratio alto
Mayor memoria para procesamiento interno Si DB < Memoria no hay beneficio en agregar ms Si la porcin caliente es pequea no hay beneficio en agregar ms AWE para la versin Enterprise
78
13
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Read Ahead
Se maneja internamente y no es configurable
32 extents = 2Mb Lecturas en el orden fsico Una por cada archivo del filegroup del objeto
Merry-Go-Round Scans
Log Manager
Se escriben a disco anticipadamente antes que las paginas La escritura de paginas puede ser asincrnica pero el Transaction Log es sincrnico siempre Log caches o segmentos de log en memoria no comparten el bugffer pool Se escriben e colas de flush y el LOG Writer los enva a disco
81
82
LSN
Pginas
83
84
14
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
Extents
Character set Sort order
Acentos Maysculas Ancho Binario (ms rpido)
Collations
85
86
Tipos de aplicaciones
OLTP
Muchas transacciones Atomicidad en las operaciones Concurrencia
DSS
Sin transacciones Barrido de informacin
DISCOS Y RAID
87
RAID
RAID0 Disk Stripping RAID1 Disk Mirroring / Deplexing RAID5 Striping with Parity RAID10 Stripping & Mirroring
Dis advant ages No t a " Tr u e " R AID b e c a u s e it is NOT fault- t ol e ran t The failure of jus t one drive w ill re s ult in all data in an array being lost S hould ne ve r be us e d in m is s ion c ritic al e nvironm e n ts R e c o mme n d e d Ap p l i c a t i o n s Vide o P roduc tion and Editing Im age Editing P r e - P r e s s Ap p lic a t io n s An y a p p lic a ti o n r e q u ir in g h ig h bandw idth
15
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
RAID 0
H ighes t disk o ve rh e a d of all R A ID typ es ( 1 00%) inef f i ci e n t T yp i c a l l y th e R A I D f u n c t i o n i s d o n e b y s ys t e m s o f t w a r e , l o a d i n g th e C P U / S e r ve r a n d p o s s i b l y d e g r a d i n g thr o u g h p u t at hi g h ac ti v i t y l e ve l s . H ardwa r e i mp l e m e n t a t i o n i s s tr o n g l y recommende d May not support hot swap of failed disk whe n imp l e m e n te d in " sof tw a r e Recommended Applications Accounting P a yr o l l Financial A n y a p p l i c a t i o n r e q u i r i n g ve r y h i g h a va i l a b i l i t y
RAID1
RAID 5
Dis advant ages Ve ry e xpe ns ive / High ove rhe ad All d r ive s m u s t m o ve in p a r a lle l to prope r trac k low e ring s us taine d pe rform anc e Ve ry lim i te d s c alabili ty at a ve ry high inhe re nt c os ts R e c o mme n d e d Ap p l i c a t i o n s Databas e s e rve r re quiring high pe rform anc e and fault tole ranc e
95
96
16
Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server
24/10/2008
RAID 10
RAID 10
DISK 1 LOGICAL DISK
DISK 2
DISK 3
DISK 4
97
17