Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJoaquín Lucas Jiménez Guzmán Modificado hace 6 años
2
Optimizando el desempeño de SQL Server
Isabel de la Barra Colaboradora de Pass Chile Trainer Empresa: Netsolutions Twitter: Blog: idelabar.blogspot.com
3
Patrocinadores del SQL Saturday
PASS use Only Silver Sponsor Bronze Sponsor | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
4
Optimización a Nivel de Sistema Operativo
Agenda Optimización a Nivel de Sistema Operativo Optimización a Nivel de Bases de datos Optimización a Nivel de Consultas | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
5
Sistema Operativo 17-11-2018 | SQL Saturday #472 – Santiago, Chile
6
¿Problemas de Performance?
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
7
Cuellos de Botella Una rápida forma de identificar si tenemos contención por algún recurso es ver como estan las colas de procesos esperando por ese recurso. CPU: System: Processor Queue Length Disco: PhysicalDisk: Current Disk Queue Length Red: Network Interface: Output Queue Length Memoria: ????? Queue Length | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
8
Memoria SQL Server intentará tomar toda la memoria disponible
Si otros servicios comparten la máquina pueden quedar asfixiados Si compartes otros servicios en la misma maquina, limita la memoria de SQL Server | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
9
Memoria Paging File: %Usage Paging File: %Usage Peak 17-11-2018 |
SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
10
Archivo de Paginación Si necesitamos más memoria el archivo de paginación crecerá. Cuando un archiva de paginación crece, deja congelados los procesos. Si tenemos alta disponibilidad los servicios pueden pasar a otro nodo. Mucha paginación implica mucha I/O de Disco. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
11
Archivo de Paginación Tamaño entre 1 a 2 veces la memoria física.
Inicial y Máximo Iguales!!!! Disco Físico Dedicado. No crecer No fragmentación No crecer Evitar Failovers por crecimiento. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
12
Virtualizando SQL Server
SQL Server puede ser virtualizado pero con ciertas condiciones. Discos directamente atachados, no usar discos virtuales. No sacar Snapshots No revender procesador a mas de 2x1 No usar memoria dinámica. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
13
Bases de Datos 17-11-2018 | SQL Saturday #472 – Santiago, Chile
14
Archivos de bases de datos
Separar los archivos de Bases de Datos de los Transactions Logs Priorizar operaciones de lectura en archivos de Bases de Datos Priorizar operaciones de escritura en transactions Logs Separar en disco aparte archivos de tempdb Separar archive de paginación de los archivos de SQL Server | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
15
Recovery Model Modo Simple Modo Full Modo Bulk-Logged
Recuperacion solo al ultimo full No requiere respaldo Modo Full Requiere respaldo del transaction log Recuperacion hasta la ultima transaccion Recuperacion en un punto del tiempo Modo Bulk-Logged Menos I/O que full Menos espacio que Full Requiere Respaldo | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
16
Recovery Model Las mejores practicas dicen que debemos usar recovery model full… pero …. DEBEMOS RESPALDAR EL TRANSACTION LOG. Si no se respalda el archivo de log crecera y crecera. Algunos DBA dejan un job que los trunca y hace shrink en forma periodica, por que guardar lo que no vamos a conservar? | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
17
Compresión de Respaldos
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
18
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
19
Autogrown y AutoShrink
Como una forma de “ahorrar” espacio en disco algunos DBA tienen activado AutoShrink o ejecutan un job que hace el Shrink de la base Problemas: Fragmentacion de los archivos al crecer de a pedacitos Las transacciones quedan en espera cuando el archive esta creciendo Mayor I/O durante el crecimiento Duración mayor de los procesos. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
20
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
21
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
22
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
23
Memory Buffer y Buffer Cache
Cuando se ejecuta una query la primera vez esta se parsea, optimiza, compila y se ejecuta leyendo la información de disco. La primera ejecución demora mas tiempo que las veces siguientes. Al reiniciar SQL Server se elimina la información en memoria. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
24
Consultas 17-11-2018 | SQL Saturday #472 – Santiago, Chile
25
Bloqueos Los bloqueos son normales en las transacciones, ellos aseguran que los datos no están siendo modificados mientras se realiza una transacción No es deseable que estos bloqueos duren mucho tiempo. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
26
DeadLocks Usar las tablas en el mismo orden en las distintas transacciones. Evitar hacer selects de muchos datos dentro de la transacción. No esperar datos o respuesta de usuario dentro de una transacción. Usar WITH (NOLOCK) si no se modificaran los datos Usar índices y paralelismo en consultas lentas Granted Lock Waiting Lock Resource 1 Resource 2 Task 1 Task 2 | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
27
Identificando DeadLocks
SQL Server automáticamente los detecta y “mata” la transacción menos costosa devolviendo Error 1205. SQL Server: Locks: Number of DeadLocks este valor debiera estar siempre en 0, si es mayor hay que investigar con profiler que transacciones están causando los deadlocks | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
28
Deadlocks en Profiler 17-11-2018 | SQL Saturday #472 – Santiago, Chile
29
WITH (NOLOCK) 17-11-2018 | SQL Saturday #472 – Santiago, Chile
30
Paralelismo El ejecutar las consultas grandes distribuyéndola en varios procesadores acelera las consultas La configuración max degree of parallelism puede ser sobreescrita con la opción MAXDOP en la query | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
31
Paralelismo 17-11-2018 | SQL Saturday #472 – Santiago, Chile
32
Fragmentacion sys.dm_db_index_physical_stats 17-11-2018 |
SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
33
Page Split 17-11-2018 | SQL Saturday #472 – Santiago, Chile
34
Fill Factor Cuando SQL Server Crea índices, cada pagina queda cercana al 100% llena No hay espacio para los futuros insert o update Puede causar costosas divisiones de paginas en ciertas tablas Promueve la fragmentación del índice SQL Server Permite especificar la cantidad de espacio libre en las hojas del índice con la opción FILL FACTOR en la definición. Además con PAD INDEX indico que se aplique el mismo factor al resto de las páginas del índice. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
35
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
36
Índices Se organizan en arboles B-Tree
Las tablas solo pueden tener un índice clusterizado. Evitar muchos índices en tablas frecuentemente actualizadas Usar muchos índices en tablas con pocas actualizaciones de gran volumen y muy consultada. Usar índices en vistas frecuentemente usadas. Evitar índices en tablas pequeñas. Usar DataBase Engine Tunning Advisor para analizar la falta de índices. | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
37
Índices Índices que cubren una query incluyendo columnas adicionales mejoran el desempeño. Crear índices no clusterizados en columnas frecuentemente usadas en Joins Mantener las llaves del índice lo mas pequeñas posibles. Usar índices XML en columnas de tipo XML Considerar el orden de las columnas cuando el índice contiene varias columnas (mas único primero) No usar índices en columnas del tipo text, ntext, image, varchar(max), nvarchar(max) y varbinary(max) | SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
38
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
39
Preguntas ?
40
Sea cual sea su pasión datos - hay un capítulo virtual para usted!
| SQL Saturday #472 – Santiago, Chile SQL Saturday #472 – Santiago, Chile
41
Gracias !!!
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.