Upload
solidq
View
458
Download
2
Tags:
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
Troubleshooting SQL Server: Un enfoque práctico
Enrique Catalá Bañuls
REL-322
Mentor – Área relacional MCT – MCTS – MCITP – MAP 2010
Enrique Puig Nouselles DPA – Área relacional
MCT – MCTS – MCITP
α 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
α 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
α ¿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,…
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
Agregación de consultas
T-SQL Query Analizer by SolidQ
α 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
Relational
Indexing
Memory pools
Fragmentation
…
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
Esperas y Memoria
α 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
α ¿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
α 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?
α 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
Esperas y memoria
Nuestra filosofía de trabajo
α 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
α 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
HealthCheck v2 Resultados
α 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
α Secciones específicas β Billing
β Security
β …
HealthCheck Azure Misma filosofía para la nube
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/