SQL Server
~ Optimización de
Performance ~
Emilio Boucau Felipe Acevedo
PFE - SQL Server TSP Application Platform
Microsoft LatAm Microsoft Chile
eboucau@microsoft.com t-faceve@microsoft.com
Temario
Buenas prácticas de configuración
Memoria
TempDb
NUMA
Instant File Initialization
Recolección de información
Profiler
Trazas server-side
PSSDiag / SQLDiag
Herramientas de análisis
Custom scripts
SQL Nexus
PAL
SQL Server 2008 - Management Dataware House
SQL Server 2005 - DMVStats / Performance Dashboard
Performance
Hardware
CPU
RAM
Network
Storage
Software
Modelo de datos
Procesos / consultas
Configuración
Memoria
En entornos 64 bits habilitar el uso de AWE
Dar a la cuenta de servicio el privilegio
LOCK_PAGES_IN_MEMORY
Todo miembro de .\Administrator lo tiene
Convierte la memoria en «no-paginable»
SQL lo usa para Data Cache (es la cache que
ocupa mas espacio de memoria)
Menos de 1 GB por Core es poca RAM
LOCK_PAGES : http://msdn.microsoft.com/en-us/library/ms190730.aspx
TempDb
Al menos un archivo por
Core disponible (no HT)
Mismo tamaño inicial con
Autogrowth habilitado
Mismo factor de
crecimiento (fijo en MBs)
Tamaño inicial grande,
para evitar el Autogrowth y
la fragmentación
NUMA - Non Uniform Memory Access
Nodo 0 Nodo 1 Nodo 2
La configuración del MAXDOP debe ser igual a la cantidad de Cores de los
nodos. Otro valor es incorrecto !!
NUMA - Non Uniform Memory Access
NUMA - Non Uniform Memory Access
Instant File Initialization
Soportado en Windows XP / 2003 o superior
Es un privilegio que se debe otorgar a la cuenta
de servicio del SQL Server
SE_MANAGE_VOLUME_NAME
Todo miembro de .\Administrator lo tiene
Se puede otorgar a otros vía la Security Policy
Perform Volume Maintenance Tasks
SQL lo aplica a data files, no a log files
SQL lo aplica durante operaciones de:
CREATE / ADD FILE
GROW
RESTORE
File Init : http://msdn.microsoft.com/en-us/library/ms175935.aspx
Pregunta #1 …
Recolección
Profiler
Concepto
Herramienta grafica para capturar eventos de SQL
Server
También: tuning / troubleshooting / auditoria / stress
Contras
Fácil de usar
Agrega carga adicional al motor (los filtros son un mito)
Agrega actividad de I/O al servidor (lo mejor, disco USB
local al server)
Agrega trafico de red (potencialmente)
Introducing Profiler : http://msdn.microsoft.com/en-us/library/ms181091.aspx
Trazas server-side
Concepto
Captura y registro de información de eventos de SQL
Server en un archivo de destino
Contras
Setear el entorno puede no ser sencillo
Determinar los eventos y columnas es «difícil»
Analizar la data capturada puede ser complicado
Introducing SQL Trace : http://msdn.microsoft.com/en-us/library/ms191006.aspx
PSSDiag - Que es ?
Concepto
PSSDiag fue desarrollada en 2001
Fue hecha publica en 2003
Es usada en los casos de soporte de SQL Server
Afecta la versión, no la edición
SQL Server 2000 x86 <> SQL server 2008 x64
Enterprise = Standard = Express
Es una herramienta de recolección de datos de:
Configuración: archivos TXT
Desempeño de plataforma: archivos BLG
SQL Server: archivos TRC
Contras
Hay que usar uno para cada versión y plataforma
PSSDiag : http://support.microsoft.com/kb/830232/en-us
SQLDiag - Que es ?
Concepto
Herramienta / servicio de recolección para SQL Server
Permite capturar todos los datos necesarios para
diagnosticar problemas
Es un «PSSDiag renombrado» e incluido desde SQL 2005
<UNIDAD>\Program Files\Microsoft SQL Server\90|100\Tools\Binn
SQLDiag - Que puede recolectar ?
Trazas
Info de Blocking
Logs de Perfmon / Sysmon
Configuración y estado del server
Error logs de SQL Server
Event logs
MSInfo
SQLDiag - Configuración
Soporta formatos INI y XML
Creados con un editor de texto
Son case-sensitive !
SQLDiag incluye tres:
SQLDiag.XML (default) : error logs, info de estado y
configuración, y MSInfo
SD_General.XML : versión light de los diagnósticos –
trazas, Perfmon, event logs, etc.
SD_Detailed.XML : versión completa de los diagnósticos
(eventos de traza a nivel stmt)
Se pueden especificar vía /I
No modifiquen los XMLs, generen sus propias copias y
versiones !!
Se pueden ver afectados por Services Packs !!
SQLDiag - Ejecución
Como aplicación de consola
Ejecutar SQLDiag.exe /PARAMETROS para iniciarla
Pulsar Ctrl+C una vez para detener
Pulsar Ctrl+C por segunda vez para detener YA
(pueden perder información capturada !)
Como servicio
SQLDIAG START para iniciarlo
SQLDIAG STOP para detenerlo
SQLDIAG STOP_ABORT para detenerlo YA
SQLDiag - Salida
La ruta por defecto es …90|100\Tools\Binn\SQLDiag
Se puede alterar mediante /O
Las trazas y Perfmon hacen ‘rollover’
SQLDiag - Ejecución : ejemplo
C:\Program Files\Microsoft SQL Server\100\Tools\Binn>
SQLDIAG /I "%cd%\SD_Detailed.XML" /O "%cd%\SQLDiagOutput"
Pregunta #2 …
Análisis
SQL Nexus - SQL Server
Concepto
Aplicación de análisis de
información de
SQLDiag / PSSDiag
Se lo debe apuntar a la
ruta de salida
Analiza TRCs
SQL Nexus : http://sqlnexus.codeplex.com
PAL - Performance Monitor
Concepto
Aplicación de
análisis de archivos
BLGs
PAL : http://pal.codeplex.com
Pregunta #3 …
?
demos
SQL 2008 Management DW
SQL 2008 - MDW
SQL 2008 - MDW
SQL 2008 - MDW
SQL 2008 - MDW
SQL 2008 - MDW
Material adicional
Ejemplos de SQL Server 2008 en CodePlex
http://www.codeplex.com/SQLSrvE2E
Edición de evaluación
http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx
Working with TempDb in SQL Server 2005 / 2008
http://technet.microsoft.com/es-cl/library/cc966545(en-us).aspx
Capacity Planning for TempDb in SQL Server 2005 / 2008
http://msdn.microsoft.com/en-us/library/ms345368.aspx
Material adicional (2)
SQL Nexus
http://sqlnexus.codeplex.com
ReadTrace
http://sqlnexus.codeplex.com/wikipage?title=ReadTrace&referringTitl
e=Home
Replaying traces
http://msdn.microsoft.com/en-us/library/Aa173863
SQL Server 2005/2008 Performance Statistics collection scripts
http://msdn.microsoft.com/en-us/library/ms345368.aspx
Material adicional (3)
PAL
http://pal.codeplex.com
SQL Server 2005 Dynamic Management View Performance Data
Warehouse
http://sqldmvstats.codeplex.com
PolyMon
http://polymon.codeplex.com
SQL Server 2005 Performance Dashboard
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1d3a4a0d-7e0c-4730-
8204-e419218c1efc&DisplayLang=en
How to use SQLDiag, PAL and SQL Nexus
Material adicional (4)
SQL Server 2005 Best Practices Analyzer
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=DA0531
E4-E94C-4991-82FA-F0E3FBD05E63
SQL Server 2008 R2 Best Practices Analyzer
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0FD439
D7-4BFF-4DF7-A52F-9A1BE8725591
SQL Server 2008 Management Dataware House
http://www.sql-server-performance.com/articles/per/Management_Data_W
arehouse_p1.aspx
SQL Server Best Practices