Troubleshooting Essentials en SQL Server 2012
Guillermo Taylor F.Consultor Senior TI & Especialista SQL [email protected] http://mastergt68.wordpress.com
Hoy hablaremos de…
Contexto de desempeñoMetodología de TroubleshootingHerramientas en SQL Server 2012
Algunas mejoradas y una nueva…Herramientas de tercerosConclusionesDocumentación y referencia
Desempeño o rendimiento
Escribir consultas eficientesGenerar índices adecuadosCrear vistas donde deben de crearse vistasCrear funciones de usuario e invocarlas donde correspondeCrear procedimientos almacenados adecuados a nuestros requerimientosUsar los distintos niveles de aislamiento de manera adecuadaManejo de transacciones (commit/rollback)
Metodología de Troubleshooting
Monitorear
Troubleshoot
Afinar/ OptimizarProbar
Desplegar
Círculo virtuoso…
Monitoreo
Recolección de métricas
Almacenamiento de datos significativos en el tiempo
Cálculo de medidas tipo “Baseline”
Troubleshooting
Identificar el problema
Medir el impacto
Refinar la recolección de datos
Afinamiento y optimización
Corrección del problema
Mejorar el “Query”
Modificar la aproximación
Prueba y despliegue
Validar el comportamiento
Mover a producción
Confirmar con los usuarios
La importancia de probar…
Herramientas en SQL Server 2012
Monitor de actividadRecolección de datosAlgunas “vistas dinámicas”
sys.dm_os_wait_statssys.dm_os_performance_counters
Solo contadores de SQL Serversys.dm_io_virtual_file_stats
Eventos extendidos (requiere otra sesión…)exec sp_server_diagnostics @repeat_interval=5
Nuevo en SQL Server 2012!
Monitor de actividadRecolección de datos
demo
¿Y, qué contadores “debo” usar?\Memory \% Committed Bytes In Use \Memory \Available Bytes \Memory \Cache Bytes \Memory \Cache Faults/sec \Memory \Committed Bytes \Memory \Free & Zero Page List Bytes \Memory \Modified Page List Bytes \Memory \Pages/sec \Memory \Page Reads/sec \Memory \Page Write/sec \Memory \Page Faults/sec \Memory \Pool Nonpaged Bytes \Memory \Pool Paged Bytes \Memory \Standby Cache Core Bytes \Memory \Standby Cache Normal Priority Bytes \Memory \Standby Cache Reserve Bytes \Memory \Pool Paged Bytes \Memory \Write Copies/sec \Process(_Total) \* \Process($(TARGETPROCESS)) \* \Process(*) \Thread Count \Process(*) \% Processor Time \Process(*) \IO Read Bytes/sec \Process(*) \IO Write Bytes/sec \Process(*) \Private Bytes \Process(*) \Working Set \Processor(*) \% Processor Time \Processor(*) \% User Time \Processor(*) \% Privileged Time \Server Work Queues(*) \Queue Length \LogicalDisk(*) \% Disk Time \LogicalDisk(*) \Avg. Disk Queue Length \LogicalDisk(*) \Avg. Disk Read Queue Length \LogicalDisk(*) \Avg. Disk Write Queue Length \LogicalDisk(*) \Avg. Disk sec/Read \LogicalDisk(*) \Avg. Disk sec/Write \LogicalDisk(*) \Avg. Disk sec/Transfer \LogicalDisk(*) \Disk Reads/sec \LogicalDisk(*) \Disk Bytes/sec \LogicalDisk(*) \Disk Writes/sec \LogicalDisk(*) \Split IO/sec \System \Processor Queue Length \System \File Read Operations/sec \System \File Write Operations/sec \System \File Control Operations/sec \System \File Read Bytes/sec \System \File Write Bytes/sec \System \File Control Bytes/sec \Network Interface(*) \Bytes Total/sec \Network Interface(*) \Output Queue Length \$(INSTANCE):Buffer Manager \Stolen pages \$(INSTANCE):Buffer Manager \Page life expectancy \$(INSTANCE):Memory Manager \Memory Grants Outstanding \$(INSTANCE):Memory Manager \Memory Grants Pending \$(INSTANCE):Databases(_Total) \Transactions/sec \$(INSTANCE):Databases(tempdb) \Transactions/sec \$(INSTANCE):Databases(*) \Active Transactions \$(INSTANCE):General Statistics \Logins/sec \$(INSTANCE):General Statistics \Logouts/sec \$(INSTANCE):General Statistics \User Connections \$(INSTANCE):General Statistics \Logical Connections \$(INSTANCE):General Statistics \Transactions \$(INSTANCE):General Statistics \Processes blocked \$(INSTANCE):General Statistics \Active Temp Tables \$(INSTANCE):SQL Statistics \Batch Requests/sec \$(INSTANCE):SQL Statistics \SQL Compilations/sec \$(INSTANCE):SQL Statistics \SQL Re-Compilations/sec \$(INSTANCE):SQL Statistics \SQL Attention rate \$(INSTANCE):SQL Statistics \Auto-Param Attempts/sec \$(INSTANCE):SQL Statistics \Failed Auto-Params/sec \$(INSTANCE):Plan Cache(_Total) \Cache Hit Ratio \$(INSTANCE):Plan Cache(Object Plans) \Cache Hit Ratio \$(INSTANCE):Plan Cache(SQL Plans) \Cache Hit Ratio \$(INSTANCE):Plan Cache(Temporary Tables & Table Variables) \Cache Hit Ratio \$(INSTANCE):Transactions \Free Space in tempdb (KB) \$(INSTANCE):Workload Group Stats(*) \Active requests \$(INSTANCE):Workload Group Stats(*) \Blocked tasks \$(INSTANCE):Workload Group Stats(*) \CPU usage %
Herramientas de terceros
Adam Machanic’s Who is Active v11.11http://sqlblog.com/blogs/adam_machanic/archive/2012/03/22/released-who-is-active-v11-11.aspx
SQL Sentry Plan Explorer v1.3http://www.sqlsentry.net/plan-explorer/sql-server-query-view.asp
Idera’s SQL check v3.0http://www.idera.com/Free-Tools/SQL-check/
Si solo quieren leer un libro…
Conclusiones
Revisar el comportamiento de nuestros servidores.Tener mediciones base, para tener contra que comparar.Evaluar el rendimiento y la forma de acceso a los recursos.Debemos de ser proactivos en lugar de ser reactivos.Usar las herramientas de SQL Server 2012.
ReferenciaseBook gratuito "Troubleshooting SQL Server: A Guide for the Accidental DBA“
http://www.red-gate.com/products/dba/sql-monitor/entrypage/tame-unruly-sql-servers-ebook
Grant Fritchey’ SQL Server 2012 Query Performance Tuning eBookhttp://www.apress.com/9781430242031
Brent Ozar PLF’s SQL Server First Responder Kithttp://www.brentozar.com/FirstResponder/
Contadores para Rendimiento de SQL Serverhttp://msdn.microsoft.com/es-es/library/bb972264.aspx#EIAA
Troubleshooting Performance Problems in SQL Server 2008http://download.microsoft.com/download/D/B/D/DBDE7972-1EB9-470A-BA18-58849DB3EB3B/TShootPerfProbs2008.docx
Troubleshooting Essentials en SQL Server 2012
Guillermo Taylor F.Consultor Senior TI & Especialista SQL [email protected] http://mastergt68.wordpress.com