23
Troubleshooting SQL Server: Un enfoque práctico Enrique Catalá Bañuls REL-322 Mentor – Área relacional MCT – MCTS – MCITP – MAP 2010 [email protected] Enrique Puig Nouselles DPA – Área relacional MCT – MCTS – MCITP [email protected]

Troubleshooting SQL Server: Un enfoque práctico

  • Upload
    solidq

  • View
    458

  • Download
    2

Embed Size (px)

DESCRIPTION

¿Tu servidor SQL Server es escalable? ¿Sospechas que su rendimiento no es el esperado? En esta sesión veremos por donde empezar a realizar un análisis de rendimiento para encontrar los cuellos de botella actuales así como potenciales problemas de escalabilidad desde el punto de vista de SolidQ haciendo especial hincapié en los mas comunes que por nuestra amplia experiencia hemos detectado en la mayoria de clientes.

Citation preview

Page 1: Troubleshooting SQL Server: Un enfoque práctico

Troubleshooting SQL Server: Un enfoque práctico

Enrique Catalá Bañuls

REL-322

Mentor – Área relacional MCT – MCTS – MCITP – MAP 2010

[email protected]

Enrique Puig Nouselles DPA – Área relacional

MCT – MCTS – MCITP

[email protected]

Page 2: Troubleshooting SQL Server: Un enfoque práctico

α Relational analisis

α Agregacion de consultas

α Collations

α Alineamiento de particiones

α Confiailidad de fk

α Indexing β Duplicacion

β No usados

β Duplicados no usados

β Clustered vs nonclustered

α Esperas y Memoria

α HC β Health Check v2

β HC Security

β HC Azure

Agenda

Page 3: Troubleshooting SQL Server: Un enfoque práctico

α El escenario siempre es tan complejo que nadie sabe la causa de dónde está el problema

α Método infalible: La agregación de consultas β Encontrar patrones T-SQL que producen mayor presión a SQL

Server

β No buscamos la consulta lenta, buscamos el patrón de consultas que mas hace sufrir al servidor

Generalmente el cliente siempre se lleva sorpresas

Detección de consultas ineficientes

¿Por qué es tan importante?

Consulta A: Tiempo de ejecución 5s y 5 ejecuciones en 10 minutos

Consulta B: Tiempo de ejecución 300ms y 1000 ejecuciones en 10

minutos

Page 4: Troubleshooting SQL Server: Un enfoque práctico

α ¿qué pasa con esto?

Detección de consultas ineficientes

¿Qué buscamos?

exec sp_cursoropen 123456, N'SELECT * from table WHERE …’

exec sp_cursorfetch 123456, ‘y’

exec sp_cursorfetch 123456, ‘z’

exec sp_cursorclose 123456

exec sp_cursoropen 123456, N'SELECT col1 from another_table,another_table2

WHERE …’

exec sp_cursorfetch 123456, ‘y’,’z’,’w’

Select col1,col2 from mitabla where columna = 14

Select col1,col2 from mitabla where columna = 15

Select col1,col2 from mitabla where columna = #

α Queremos extraer un valor hash que identifique el patrón y agregar por él para calcular lecturas, escrituras, cpu,…

Page 5: Troubleshooting SQL Server: Un enfoque práctico

Troubleshooting ¿En qué nos fijamos?

11% 1%

18%

69%

0%

0%

0%

1%

% of memory used

Compiled Plan Proc

Compiled Plan Trigger

Compiled Plan Adhoc

Compiled Plan

Prepared

Extended Proc Proc

Database Name Cached Pages Memory (MB)

BBDD1 588.870 4600,55

BBDD2 98.906 772,7

tempdb 2.889 22,57

msdb 1.149 8,98

BBDD3 327 2,55

BBDD4 174 1,36

BBDD5 138 1,08

master 54 0,42

BBDD6 35 0,27

BBDD7 30 0,23

model 1 0,01

AdventureWorks 1 0,01

ReportServer 1 0,01

AdventureWorksDW 1 0,01

ReportServerTempDB 1 0,01

Page 6: Troubleshooting SQL Server: Un enfoque práctico

Agregación de consultas

Page 7: Troubleshooting SQL Server: Un enfoque práctico

T-SQL Query Analizer by SolidQ

Page 8: Troubleshooting SQL Server: Un enfoque práctico

α Tareas que debemos realizar β Búsqueda de índices faltantes

β Búsqueda de índices que no se usan

β Búsqueda de índices duplicados

β Comparación de índices clústered vs nonclustered

β Índices utilizados únicamente en inserciones

Indexación Algunas buenas prácticas

Page 9: Troubleshooting SQL Server: Un enfoque práctico

Relational

Indexing

Memory pools

Fragmentation

Page 10: Troubleshooting SQL Server: Un enfoque práctico

1. Amaras a los procedimientos almacenados sobre todas las cosas

2. No aplicarás una función de SQL server en vano

3. Santificarás los índices

4. Honrarás las claves ajenas y las restricciones check

5. SI matarás a cursores y consultas ad-hoc

6. Cometerás agregación de consultas

7. No robarás ciclos de CPU mediante recompilaciones

8. No levantarás tablas variables cuando deberían ser temporales

9. No consentirás el uso de query hints sin conocimiento de causa

10.No codiciaras un SELECT *

Los 10 mandamientos del rendimiento

Page 11: Troubleshooting SQL Server: Un enfoque práctico

Esperas y Memoria

Page 12: Troubleshooting SQL Server: Un enfoque práctico

α Exponen estados y datos de rendimiento β +- 70 vistas

β Útiles con DAC

α División por áreas funcionales β dm_exec_* (codigo ejecutado y conexiones de usuario)

β dm_os_* (memoria, bloqueos)

β dm_tran_* (transacciones y aislamiento)

β dm_io_* (I/O discos y red)

β dm_db_* (bases de datos y sus objetos)

α Otras β Replicación, service broker…

DMVs Vistas de administración dinámica

Page 13: Troubleshooting SQL Server: Un enfoque práctico

α ¿A que está esperando el servidor? β Sys.dm_os_wait_stats

α Estadísticas de esperas incrementales β Siempre incrementando contadores

α Útiles para la monitorización β Deltas de tiempo

α Tipos de espera más comunes β Paralelismo: CXPACKET

β Disco: PAGEIOLATCH_*, WRITELOG…

β Bloqueos: LCK_M_*

Wait Stats Esperas del servidor

Page 14: Troubleshooting SQL Server: Un enfoque práctico

α Sys. dm_io_virtual_file_stats β Una especificación de wait stats

α Esperas a nivel de disco β Latencias de lectura y escritura en todas los ficheros (datos y log)

α Estadísticas de esperas incrementales β Incrementando contadores

α Monitorización β Deltas de tiempos

FileIO Stats ¿Cómo van los discos?

Page 15: Troubleshooting SQL Server: Un enfoque práctico

α sys.dm_os_buffer_descriptors β Páginas en el buffer

β Distribución por fichero

β Distribución por base de datos

α Syscacheobjects β Contiene información de la cache

β Tipos de objeto

β Utilización por objeto en cache

Memoria

Page 16: Troubleshooting SQL Server: Un enfoque práctico

Esperas y memoria

Page 17: Troubleshooting SQL Server: Un enfoque práctico

Nuestra filosofía de trabajo

Page 18: Troubleshooting SQL Server: Un enfoque práctico

α Servicio global aportado por SolidQ β Lanzado en países como España, USA, Brasil, India,…

β Generación de documentos en idioma Castellano, Ingles y Portugués,…por ahora

α Automatización de la experiencia de SolidQ en troubleshooting de SQL Server

α Mas tiempo para pensar y menos para redactar!! β Resultado: Análisis mas profundos y correlacionados

α Algunos clientes: β Pentágono

β …

HealthCheck v2 Automatizacion del troubleshooting de SolidQ

Page 19: Troubleshooting SQL Server: Un enfoque práctico

α Servidor y hardware β Gestion de memoria, sistema de almacenamiento, alineamiento de

discos,…

α Instancia de SQL Server β BBDD sistema, uso de recursos de memoria, red, discos,…

β Seguridad, SQL Agent, parametros de configuracion, service packs…

β Esperas, uso de discos, …

α Mantenimiento de Bases de datos β Analisis de estrategias de backups, Consistencia, indexacion,

latencias, …

α Bases de datos β Configuración, seguridad,…

α Topologia de consultas

α Migración β Foco específico en aspectos no analizados en SSUA (lo vimos el

martes)

HealthCheck v2 Automatizacion del troubleshooting de SolidQ

Page 20: Troubleshooting SQL Server: Un enfoque práctico

HealthCheck v2 Resultados

Page 21: Troubleshooting SQL Server: Un enfoque práctico

α Cubre aspectos de: β Inicios de sesión

γ Autenticación

γ Política de passwords (débiles, vacíos, predecibles)

γ Excesivos permisos

β Usuarios

γ Roles de base de datos

γ Roles de usuario

γ Roles de aplicación

β Servidores vinculados

γ Contextos de seguridad

γ Openrowset

β Configuraciones de base de datos

β Endpoints

HealthCheck Security Servicio de seguridad de SolidQ

Page 22: Troubleshooting SQL Server: Un enfoque práctico

α Secciones específicas β Billing

β Security

β …

HealthCheck Azure Misma filosofía para la nube

Page 23: Troubleshooting SQL Server: Un enfoque práctico

Si quieres disfrutar de las mejores sesiones de

nuestros mentores de España y Latino América,

ésta es tu oportunidad.

http://summit.solidq.com/madrid/