Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenido
Tema I – Resolución de Problemas de Rendimiento en SQL Server .................. 3
Diagnostique los problemas ........................................................................................ 4
Causas comunes de problemas de desempeño ...................................................... 5
Qué métricas monitorear ............................................................................................. 5
Ajuste del rendimiento de la base de datos de SQL Server ................................. 9
Cómo hacer ajuste de rendimiento en SQL Server ................................................ 9
1. Medir el rendimiento del servidor SQL .............................................................. 10
2. Cómo optimizar consultas SQL ............................................................................ 10
3. Cómo hacer la optimización del rendimiento del índice ............................... 11
4. Ajustes de Performance Tune SQL Server ......................................................... 12
5. Ajuste el rendimiento del hardware ................................................................... 13
6. Construcción y prueba de carga de nuevos servidores SQL ......................... 13
SQL Server Profiler ....................................................................................................... 14
Monitor de rendimiento de Windows .................................................................... 16
El monitor de actividad de SQL Server ................................................................... 18
Recopilador de datos del SQL Server ...................................................................... 19
Vistas de administración dinámica (DMV) ............................................................. 21
Los eventos extendidos de SQL Server ................................................................... 22
Tema II - Diez consejos para la optimización del rendimiento de SQL Server
.......................................................................................................................................... 25
Consejo n.º 10. La metodología “Línea de base y evaluación comparativa”
le permite detectar problemas. ................................................................................ 25
Consejo n.º 9. Los contadores de rendimiento le proporcionan información
rápida y útil sobre las operaciones que actualmente están en ejecución. ..... 31
Consejo n.º 8. La modificación de la configuración del servidor puede
proporcionar un entorno más estable. ................................................................... 33
Consejo n.º 7. Encuentre instrucciones no autorizadas en la caché de plan . 35
Consejo n.º 6. SQL Profiler es su amigo.................................................................. 37
Consejo n.º 5. Configure SAN para el rendimiento de SQL Server. ................. 39
Para saber qué está pasando con su SQL Server, inicie con el monitoreo de bases
de datos, mire las métricas de desempeño durante el tiempo para crear líneas
de base y tendencias para la operación normal, aísle el proceso que está usando
muchos recursos. Luego usted podrá depurar y reparar los errores.
Los cuellos de botella I/O son causados por lecturas y escrituras excesivas de
páginas de la base de datos al disco. Un cuello de botella es manifestado a
través de tiempos de respuesta largos, ralentizaciones de la aplicación y
expiración de tareas. Si otras aplicaciones usan recursos de disco
excesivamente, puede que SQL Server no tenga suficientes recursos de disco
para su operación normal y tendría que esperar para poder leer y escribir al
disco.
Los cuellos de botella de red son causados por una sobrecarga en un servidor o
la red, de modo que los datos no pueden fluir como se espera.
Los problemas de I/O pueden ser causados por hardware lento, mal diseño de
soluciones de almacenamiento, y la configuración. Aparte de los componentes
de hardware, como tipos de discos, tipos de arreglos de discos, y
configuraciones RAID que afectan el desempeño I/O, solicitudes innecesarias
hechas por la base de datos también afectan al tráfico I/O. Escaneos frecuentes
de índices, consultas ineficientes y estadísticas desactualizadas también
pueden causar sobrecargas I/O y cuellos de botella.
Los contadores que indican las causas más comunes para la presión al
procesador son Batch Requests/sec, SQL Compilations/sec y SQL
Note que el tipo de contador para los tres contadores es 272696576 y que los
valores mostrados son acumulativos desde el último inicio de SQL Server, así
que tienen que ser calculados. Uno de los métodos es tomar dos muestras con
una demora de 10 segundos.
El valor de Batch Requests/sec depende del hardware usado, pero debería estar
debajo de 1000. El valor recomendado para SQL Compilations/sec es menos
que 10% de Batch Requests/sec y para SQL Re-Compilations/sec es menos que
10% de SQL Compilations/sec.
Ya que el tipo del contador es 537003264, el valor retornado por la vista tiene
que ser calculado para obtener el valor actual. Para hacer eso, es necesario usar
también el valor de Buffer Cache Hit Ratio Base.
El desempeño de SQL Server puede ser afectado por muchos factores. Cuando
se está resolviendo problemas, es necesario saber dónde empezar, para saber
los valores normales para los contadores de desempeño y para seleccionar una
herramienta que proveerá suficiente información para analizar y solucionar los
problemas.
Luego, antes de comenzar a cambiar las cosas, pregunte qué partes del servidor
puede cambiar. La Guía del administrador para la optimización de SQL Server le
brinda una lista de verificación simple de las partes que puede modificar,
cambiar o reemplazar por completo.
Notarás que no dije que capturar las consultas de ejecución lenta con el
Analizador de SQL. El generador de perfiles no es un buen monitor de
rendimiento de SQL Server: en realidad hace que todas las consultas se
ejecuten más lentamente. Está mucho mejor usando el caché del plan como se
muestra arriba.
Una vez que haya encontrado las costosas consultas de SQL que necesita afinar,
estos son mis consejos de ajuste de rendimiento favoritos:
Vea las consultas de Brent Tune : ¿se ha preguntado alguna vez cómo lo
hace alguien más? Mira por encima del hombro de Brent en este tutorial
gratuito de SQL Server.
7 cosas que los desarrolladores deben saber sobre SQL , incluido el
motivo por el cual las funciones rara vez funcionan bien, por qué WITH
NOLOCK no significa que no haya bloqueo y más.
Cómo medir las mejoras de rendimiento : Kendra explica cómo usar las
estadísticas de SSMS.
Cómo leer los planes de ejecución de consultas y ajustarlos para que sean
más rápidos.
¿Cuál es el servidor SQL más pequeño que debe construir? - Brent explica
por qué la memoria RAM de 96GB no es tan grande, especialmente
cuando lo comparas con los costos de licencias de SQL Server.
Resultados de las pruebas de carga RAID de SSD: ¿Exactamente qué tan
rápido son las unidades SSD de consumo listas para usar, especialmente
cuando las coloca detrás de un controlador RAID?
Almacenamiento compartido para SQL Server: hacemos muchos ajustes
de SAN y reunimos nuestros recursos favoritos.
Prácticas recomendadas de virtualización: configuración de licencias,
capacidad de recuperación y rendimiento.
Virtualización, SAN y hardware para SQL Server: una clase en línea de 7
horas que enseña cómo configurar y ajustarlos.
Para los almacenes de datos, vaya a la página de inicio de Microsoft Fast Track ,
pero ANTES DE HACER CLIC, esta página tiene muchas cosas de mercadeo y
necesita saber lo que está buscando. Centrarse en las configuraciones de
referencia y guías de configuración. Hay algunos proveedores neutrales de
Microsoft, y luego hay guías específicas para proveedores de Dell, HP, IBM, etc.
Es posible que tenga que desplazarse hasta el final para ver las cosas específicas
del proveedor.
Una vez que se construye el servidor, aquí están nuestros recursos favoritos
para las pruebas de carga y la configuración:
Ahora, usted debe crear los rastros que recopilarán la información que necesita
para monitorear y poder resolver los problemas en el funcionamiento del SQL
Server
Para iniciar el monitor de actividad, haga clic con el botón derecho del ratón en
la instancia de SQL Server en el explorador de objetos y seleccione monitor de
actividad
ON SERVER
Para poder ver los datos del evento en vivo junto con sus detalles,
seleccione Ver datos en vivo en el menú contextual del evento en el Explorador
de objetos.
Establezca la norma. Una vez que detectó qué desea obtener, entonces debe
decidir cómo medirá el resultado. ¿Cuáles son los contadores de sistema
operativo, los contadores de SQL Server, las medidas de recursos y los otros
puntos de datos que le proporcionarán la visibilidad necesaria? Una vez que
tenga esa lista, debe establecer su línea de base o, en otras palabras, el
rendimiento típico del sistema en comparación con los criterios elegidos. Debe
recopilar suficientes datos durante un período lo suficientemente largo para
obtener una muestra representativa del rendimiento típico del sistema. Una
vez que tenga los datos, puede sacar un promedio de los valores durante el
período para establecer su primera línea de base. Después de realizar
modificaciones en el sistema, debe realizar una nueva evaluación comparativa
y compararla con la original para poder medir objetivamente el efecto de las
modificaciones.
• Solucione problemas de manera más eficaz: ¿Alguna vez estuvo varios días y
noches luchando con un problema de rendimiento en la base de datos y
descubrió que no estaba relacionado para nada con la base de datos? Al
establecer una línea de base es más sencillo eliminar la instancia de base de
datos y detectar la causa. Por ejemplo, suponga que el consumo de memoria
aumentó mucho repentinamente. Puede observar que la cantidad de
conexiones aumentó mucho y se encuentra muy por encima de la línea de base.
Consulta la situación con el administrador de aplicaciones y le confirma que se
implementó un nuevo módulo en eStore. No pasa demasiado tiempo hasta que
se descubre que el nuevo desarrollador con poca experiencia escribe código
que no libera las conexiones de base de datos como debería. Apuesto a que
puede pensar en más escenarios similares. Si se descartan las cosas que NO son
responsables de un problema, se puede ahorrar mucho tiempo, ya que se
despeja el panorama y se obtiene una vista más precisa de la causa del
problema. Hay muchos ejemplos en los que puede comparar los contadores del
sistema con los contadores de SQL Server para confirmar o descartar si la base
de datos es la causa de un problema. Una vez que se descartan los sospechosos
de siempre, puede comenzar a buscar las desviaciones significativas de la línea
de base, reunir los indicadores relacionados y comenzar a profundizar en la
causa raíz.
Repita el proceso de línea de base con tanta frecuencia como sea necesario. Una
buena optimización consiste en un proceso repetitivo y científico. Los consejos
que se ofrecen en este documento son un buen punto de partida, pero son solo
eso: un punto de partida. La optimización del rendimiento es un proceso
altamente personalizado y está determinado por el diseño, la composición y el
uso de cada sistema individual. La metodología de línea de base y evaluación
comparativa es la piedra angular de una optimización del rendimiento buena y
confiable. Proporciona el mapa, una referencia y las coordenadas que se
Si bien coinciden en algunos puntos, estos dos motivos le permiten elegir con
facilidad puntos de datos para supervisar.
También puede usar esos datos para determinar las tendencias. Un buen
ejemplo sería recopilar los tamaños de todos los archivos de datos para
Para responder a las tres preguntas anteriores, debe observar los siguientes
contadores:
Suponga que tiene un clúster Activo/ Activo (o un solo host con varias
instancias). Podemos realizar algunas modificaciones en la configuración para
garantizar que podamos cumplir los SLA en el caso de una conmutación por
error en la que ambas instancias estén alojadas en la misma caja física.
No hay opciones que colaboren directamente con el rendimiento, pero hay dos
opciones que pueden colaborar de manera indirecta.
Una vez que identifica un cuello de botella, debe detectar la carga de trabajo
que causa ese cuello de botella. Esta es una tarea mucho más sencilla desde la
presentación de los Objetos de administración dinámica (DMO) en SQL Server
2005. Los usuarios de SQL Server 2000 y las versiones anteriores deberán
conformarse con Profiler o Trace (más información en el consejo n.º 6).
SQL Server Profiler es una herramienta nativa incluida en SQL Server. Le permite
crear un archivo de seguimiento que captura los eventos que ocurren en SQL
Server. Estos seguimientos pueden ser invaluables a la hora de proporcionar
información sobre la carga de trabajo y las consultas por bajo rendimiento. En
este documento técnico no ahondaremos en detalles sobre cómo utilizar la
herramienta Profiler. Para obtener más información sobre el uso de SQL Server
Profiler, vea el tutorial en video en SQLServerPedia.
Si bien es cierto que SQL Server Profiler se marcó como obsoleto en SQL Server
2012 en favor de Extended Events, debe tenerse en cuenta que esto es solo
para el motor de la base de datos y no para los Servicios de análisis de SQL
Server. Profiler aún puede proporcionar una gran visibilidad de cómo funcionan
las aplicaciones en tiempo real en muchos entornos de SQL Server.
El uso de Extended Events está fuera del alcance de este documento técnico.
Para obtener una descripción detallada de Extended Events consulte el
documento técnico “Cómo utilizar Extended Events y Notificaciones de SQL
Server para resolver problemas de rendimiento de manera proactiva”. Basta
con mencionar que los Extended Events se presentaron en SQL Server 2008 y
se actualizaron en SQL Server 2012 para incluir más eventos y una muy
esperada interfaz de usuario.
1. Abra Perfmon.
3. Abra Profiler.
5. Inicie el seguimiento.
12. Navegue hasta el archivo de datos del Recopilador de datos y seleccione los
contadores de rendimiento relevantes.
Consejo adicional: En los pasos anteriores se usa la interfaz del cliente; para
ahorrar recursos, un seguimiento desde el servidor es más eficaz. Consulte
Libros en línea para obtener información sobre cómo comenzar y detener
seguimientos desde el servidor.
Agrupar todos los archivos en un solo volumen suele no ser una buena idea si
busca el mejor rendimiento de E/S. Como mejores prácticas, querrá:
Recopilación de datos
Con estos números puede acotar rápidamente el espectro y ver los archivos
responsables del consumo del ancho de banda de E/S y hacerse preguntas como:
En un trabajo anterior descubrí lo que debe ser el peor código que vi en toda
mi carrera. El sistema se reemplazó hace mucho tiempo, pero este es un
resumen del proceso de la función:
Antes de ejecutar una instrucción SQL, SQL Server debe crear un plan de
consulta primero. Esto define el método que empleará SQL Server para tomar
la instrucción lógica de la consulta e implementarla como una acción física
en los datos.
Las personas con buena memoria recordarán que en el consejo n.º 8 (donde
hablamos sobre las modificaciones en la configuración) había un consejo más
para ofrecer. SQL Server 2008 presentó una configuración llamada
“Optimización para cargas de trabajo ad hoc”. Al configurarla, SQL Server
almacenará un plan parcial en lugar de un plan completo en la caché de plan.
Esto es especialmente útil para los entornos que utilizan código T-SQL
construido dinámicamente o Linq que puede ocasionar una no reutilización
del código.
Las modificaciones realizadas a los datos de una página desde una operación
ELIMINAR o ACTUALIZAR también se realizan en las páginas de la caché de
búfer. Luego, estas modificaciones se eliminan del disco. Todo este mecanismo
permite que SQL Server optimice la E/S física de muchas maneras:
Evaluación del estado de la caché de búfer Hay dos indicadores del estado de
la caché de búfer:
Hiperpaginación de caché
Durante un análisis de índices o de tablas grandes, cada página del análisis debe
pasar por la caché de búfer, lo que significa que posiblemente las páginas útiles
se borren para dar lugar a las páginas que quizás no se lean más de una vez.
Esto produce una E/S alta, ya que las páginas borradas deben leerse
nuevamente desde el disco. Esta hiperpaginación de caché suele ser un
indicador de que se están analizando tablas o índices grandes.
Para determinar qué tablas e índices ocupan más espacio en la caché de búfer,
puede examinar la vista de administración dinámica (DMV) sys.dm_os_ buffer_
descriptors (disponible a partir de SQL Server 2005). La consulta de ejemplo que
se encuentra a continuación muestra cómo acceder a la lista de tablas o índices
que consumen espacio en la caché de búfer en SQL Server: También puede usar
las DMV de índice para detectar qué tablas o índices tienen una gran cantidad
de E/S física.
sys.dm_db_index_operational_stats
sys.dm_db_index_usage_stats
• ¿Cómo utilizan los índices los usuarios? Las columnas user_ seeks,
user_scans, user_lookups pueden indicarle los tipos y el
significado de las operaciones de usuario en relación con los
índices.
• ¿Cuál es el costo de un índice? La columna user_ updates puede
indicarle el nivel de mantenimiento de un índice.
• ¿Cuándo se utilizó un índice por última vez? Las columnas last_*
le indican la última vez que se realizó una operación en un índice.
Por supuesto que hay otras áreas en los índices, como estrategia de diseño,
consolidación y mantenimiento.
La importancia de la auditoría
¿Por qué auditamos? La meta número uno debería ser asegurar que su política
de seguridad es suficiente para mantener la información de su negocio y de sus
clientes segura y que sus riesgos están siendo manejados.
Si su SQL Server no está siendo auditado, usted se está exponiendo a una gran
cantidad de problemas potenciales. Los problemas más comunes son ataques
externos, actividades no sancionadas por usuarios autorizados y errores.
Estrategia de auditoría
Idear una estrategia de auditoría sólida está en el centro de cualquier esfuerzo
exitoso de auditoría. Es bastante tentador auditar simplemente todo, pero en
un ambiente del mundo real, esto no es viable y puede llevar a problemas
como:
Qué auditar
Identificar qué se necesita auditar realmente es el desafío más grande al crear
una estrategia de auditoría. Entender los datos en sus bases de datos es
fundamental para el éxito de su estrategia de auditoría.
Desde una perspectiva lógica, los datos que necesitan ser protegidos, cuyos
accesos deberían ser auditados, caen generalmente en estas categorías:
Desde una perspectiva de base de datos, estas son las acciones que deberían
ser consideradas para la auditoría:
Inicios de sesión
Configuración
Configuración de la auditoría
Modificación del esquema
Modificaciones de datos
Hay un balance delicado entre auditar muy poco y auditar demasiado. Esto
depende grandemente en sus razones para auditar. Incluso si su primer
objetivo debería ser mantener los datos de sus clientes seguros, muchas
compañías toman esto sólo hasta seguir las medidas prescritas por las reglas de
cumplimiento para su industria específica.
Como una sugerencia de buena práctica, también audite sus auditorías para
asegurar que nadie ha modificado lo que está siendo auditado y que usted está
cubierto para todas las eventualidades.
Cuando esto ocurre, los DBAs pueden olvidar rehabilitar todas las tareas que se
han deshabilitado temporalmente, y esto puede luego llevar a una
vulnerabilidad incrementada. Auditar su implementación de auditoría puede
ayudarle a evadir este problema. Idealmente, una notificación debería ser
enviada si cambios han sido hechos a la configuración de auditoría, ya sea como
un recordatorio para el DBA para que rehabilite la auditoría o al auditor para
hacerle saber que alguien ha modificado la implementación de auditoría.
Auditoría selectiva
En algunos casos, puede ser necesario aplicar auditoría selectiva por usuario o
por objetos.
Por ejemplo, la compañía puede querer tener un registro de quién ve sus datos
de salarios o un empleado específico ha levantado algunas banderas rojas, y
todas sus actividades necesitan ser rastreadas para determinar su culpa o
inocencia.
Auditoría C2
SQL Server has offered C2 auditing since SQL Server 2000 in orSQL Server ha
ofrecido auditorías C2 desde SQL Server 2000 para ser clasificado dentro de los
criterios de auditoría C2 prescritos por el Departamento de Defensa.
GO
RECONFIGURE;
GO
GO
RECONFIGURE;
GO
Compatibilidad con Criterio Común fue creada por un grupo de naciones para
lograr lo siguiente:
Cuando usted habilita las opciones de compatibilidad con criterio común esto
es lo que pasará:
GO
RECONFIGURE;
GO
GO
SELECT * FROM
fn_get_audit_file('D:\Audits\*',default,default)
Seguimiento de SQL
Actualmente, Seguimiento de SQL es aún el método preferido para realizar
auditoría en SQL Server, ha estado presente desde SQL 2000 y la mayoría de los
DBAs están familiarizados con él, o al menos con usar Profiler..
SQL Server provee Profiler como una interfaz para Seguimiento de SQL, lo cual
hace fácil crear seguimientos y correrlos. Desafortunadamente, Profiler viene
con algunos costos de desempeño y como tal no es siempre una buena idea
correrlo contra su servidor de producción.
sp_trace_create
Este procedimiento es usado para crear una definición de seguimiento.
Las opciones de seguimiento como sustitución incremental de archivos y
apagado del servidor, y la localización de los archivos de seguimiento
puede también ser especificado aquí.
sp_trace_setevent
Este procedimiento es usado para definir qué eventos de seguimiento
desearía capturar y qué columnas de cada evento se grabarán.
Eventos Extendidos
Eventos extendidos fueron introducidos en SQL 2008, es un marco de trabajo
de eventos altamente configurable, que ultimadamente reemplazará a
Seguimiento de SQL. En SQL 3008, los eventos disponibles en el motor de
eventos extendidos eran limitados, pero en SQL Server 2012 todos los eventos
que están disponibles en Seguimiento de SQL, lo están también ahora en
Eventos Extendidos.
SQL Server 2012 también introduce una interfaz de usuario para eventos
extendidos, lo cual lo hace mucho más fácil usar sin tener que entender la
arquitectura interna del marco de trabajo de Eventos Extendidos. El asistente
de eventos extendidos puede ser encontrado debajo del nodo de
administración de su servidor.
sys.sp_cdc_enable_db
Este comando habilita CDC para usarse en una base de datos específica,
y es requerido antes de que cualquier tabla pueda ser habilitada para
CDC.
sys.sp_cdc_enable_table
Este comando habilita CDC en una tabla específica. Esto crea una
instancia de captura asociada de la tabla, incluyendo una tabla de
cambios y funciones de consulta. Las primeras 5 columnas en la tabla
contienen Metadatos a ser usados por el proceso CDC y el resto de las
columnas están basadas en las columnas en la tabla fuente a ser
capturada.
Prerrequisitos
Para completar este tutorial, necesita SQL Server Management Studio, acceso
a un servidor que ejecuta SQL Server y una base de datos AdventureWorks.
Para comenzar, abra la interfaz gráfica de usuario (GUI) del Asistente para la
optimización de motor de base de datos (DTA). En el primer uso, un miembro
de la función de servidor fijo sysadmin debe iniciar el Asistente
para la optimización de motor de base de datos para inicializar la
aplicación. Después de la inicialización, los miembros de la función de base de
datos fija db_owner pueden usar el Asistente para la optimización de motor de
base de datos para ajustar las bases de datos que poseen.