Title: Rendimiento de Microsoft
1Rendimiento de Microsoft SQL Server TM 2000
Microsoft Corporation
2Lo que vamos a cubrir
- Bloqueos
- Procesador de consultas
- Optimización de consultas
- Configuración del sistema
- Monitoreo de rendimiento
3Prerrequisitos de la sesión
- Esta sesión asume que usted comprende los
aspectos básicos de - Windows 2003 Server/Windows 2000 Server
- SQL Server 2000
- Monitor del sistema
Nivel 200
4Agenda
- Bloqueos
- Procesador de consultas
- Optimización de consultas
- Configuración del sistema
- Monitoreo del rendimiento
5Administrador de bloqueosQué hace por usted
- Adquiere y libera bloqueos
- Mantiene la compatibilidad entre los modos de
bloqueos - Resuelve interbloqueos
- Escala bloqueos
- Utiliza 2 sistemas de bloqueos
- Bloqueos de datos compartidos
- Pestillos internos para datos internos y
concurrencia de índices
6BloqueosGranularidad de bloqueos para los datos
del usuario
Tabla
Página
Página
Página
Fila
Fila
Fila
7Niveles de aislamiento de bloqueos
- Soporta los 4 niveles de aislamiento ANSI e ISO
- Seriable
- Lectura repetible
- Lectura confirmada - predeterminado
- Lectura no confirmada
8BloqueosTipos de bloqueo en los datos del
usuario - Compartidos
- Se adquieren automáticamente cuando se leen los
datos - Aplica a la Tabla, Página, Clave o fila del
Índice. - Varios procesos pueden mantener un bloqueo
compartido en los mismos datos. - No se puede bloquear exclusivamente mientras está
en modo de bloqueo compartido
A menos que sea el mismo proceso que sostiene el
bloqueo compartido
9BloqueosTipos de bloqueo en los datos del
usuario - Exclusivos
- Se adquieren automáticamente cuando se modifican
los datos - Sólo un proceso puede mantenerse a la vez sobre
cualquier dato. - Se mantiene hasta el final de una Transacción
- Se rechazarán todas las demás solicitudes de
bloqueo por otros procesos. - Se pueden utilizar ayudas de Consulta para
decidir si se leen los datos asegurados
10BloqueosTipos de bloqueo en los datos del
usuario - Actualización
- Un híbrido de compartidos y exclusivos
- Se adquieren cuando se requiere una búsqueda
antes de cualquier modificación a los datos - Permite que otros sigan leyendo mientras se
aplica el bloqueo - Necesita un bloqueo exclusivo para modificar los
datos - Los datos pueden tener varios bloqueos
compartidos pero sólo un bloqueo de actualización
11BloqueosTipos de bloqueo en los datos del
usuario - Intentos
- No es un modo de bloqueo real, sólo un
calificador, es decir, - Intento de bloqueo de actualización
- Es utilizado por SQL como un indicador de bloqueo
de recursos - Muestra si un subcomponente esta bloqueado (Por
ejemplo si una fila se esta actualizando
(exclusivo) muestra un Intento de Exclusivo sobre
la tabla)
12BloqueosTipos de bloqueo en los datos del
usuario - Especial
- 3 modos especiales
- Estabilidad del esquema se utiliza cuando las
consultas se modifican, evita los bloqueos de
Modificación al esquema - Modificación del esquema se utiliza cuando se
modifican las estructuras de la tabla - Modificación Masiva se utiliza con el comando
BULK INSERT o BCP.
13BloqueosVer información del bloqueo - Tipo
Abrev Recurso Código interno Descripción / ejemplo
DB Base de datos 2
TAB Tabla 5 ID de la tabla 261775902
EXT Extensión 8 Número de archivo / página 196
PAG Página 6 Número de archivo / página 1104
KEY Clave 7 Valor controlado ac0001a10a00
AC Fila 9 Número de archivo / página / ranura 11514
APP Aplicación 10 Control del nombre de la aplicación MYpr8dea
14BloqueosVer información del bloqueo - Modo
Abreviación Modo Código interno
S Compartido 4
X Exclusivo 6
U Actualizar 5
IS Intento compartido 7
IU Intento actualización 8
IX Intento Exclusivo 9
SIX Compartido con Intento exclusivo 11
Sch-S Estabilidad del esquema 2
Sch-M Modificación al esquema 3
BU Actualización masiva 13
15Arquitectura de bloqueos
Tabla de control del bloqueo
Bloque de bloqueo
Bloque de recurso del bloqueo
Obtener
Esperar
Convertir
Bloque dueño del bloqueo
Bloque dueño del bloqueo
Bloque dueño del bloqueo
Todos los bloqueos propietarios de la misma
transacción se enlazan entre si
16BloqueosFila contra nivel de página
- Requerimientos del bloqueo
- Cada bloqueo 32 bytes
- Cada proceso que mantiene un bloqueo 32 bytes
- Cada proceso que espera un bloqueo 32 bytes
- Nivel de página 8k
- Nivel de fila depende del tamaño de la Fila
- Cuál utilizar depende de la aplicación
17Demostración 1Ver los bloqueos de SQL Server
18Agenda
- Bloqueos
- Procesador de consultas
- Ajuste de consultas
- Configuración del sistema
- Monitoreo del rendimiento
19Procesador de consultasProceso de compilación de
sentencias
Analizar la sentencia
Crear un árbol de secuencias
Normalizar el árbol
Crear una gráfica de consulta
Sí
No
Compilar en procedimientosde sentencia de TSQL
Optimizar y crear el plan
Compilar en procedimientos las sentencias de
TSQL
20Procesador de ConsultasOptimización de una
sentencia
Optimizador de plan trivial
No
Si
Plan encontrado?
1
Simplificación
Si
Carga de estadísticas
Costo de plan mas barato gt que umbral de
paralelismo?
Optimización completa para ejecución en
paralelo
Optimizador basado en costo Fases 1 a n-1
No
Optimización completa para ejecución en serie
No
Encontrado plan barato?
1
Plan de salida
Si
21Procesador de consultas Cómo funciona el
optimizador
- Análisis de consultas
- Selección de índices
- Selección de combinación (join)
- Iteración anidada (Nested iteration)
- Separación (Hashing)
- Mezcla (Merging)
22Procesador de consultasMemoria caché costeo de
un plan de consultas
Ad hoc ybarato decompilar?
Sí
Sin caché
No
Ubicar memoria del caché del búfer
Ad-hoc
Establecer el costo inicial en cero
Tipo deplan?
Establecer el costo inicialal costo de creación
Colocar el plan en caché
23Procesador de consultasFlujo de Compilación Y
Ejecución
No
Si
Plan en Cache?
Recuperar plan desde cache
Interpretar/normalizar
Si
El Plan necesita recompilación?
Compilar TSQL
No
Optimizar sentencias
Esperar que el planificadorde memoria autorice
Poner plan en cache
Abrir (activar) plan
Ejecutar el plan hasta el final
24Demostración 2Analizador de consultas
- Obtener estadísticas sobre una consulta
- Utilizar el plan gráfico
- Utilizar el plan estimado
25Agenda
- Bloqueos
- Procesador de consultas
- Ajuste de consultas
- Configuración del sistema
- Monitoreo del rendimiento
26Ajuste de consultasAjuste Cuándo empezar
- Empiece al principio
- Considere el rendimiento antes de que escriba su
primer línea de código - Asegúrese de haber establecido una buena
estructura de base de datos - Desarrolle lo que parezcan ser índices útiles
- Asegúrese que todo el análisis se realice con una
carga de trabajo representativa
27Ajuste de consultas Diseño de la aplicación y la
base de datos
- Proporciona la mayor ganancia en rendimiento
- Normalice
- Evalúe sus transacciones críticas
- Mantenga compactas las extensiones de la fila de
la tabla y las extensiones clave - Cree índices útiles
- Evaluación comparativa, Prototipo y Prueba
28Ajuste de consultasCreación y ajuste de índices
SQL Server
Recomendaciones de ajuste
Consultas en tiempo real
Carga de trabajo (filtrada)
Asistente de ajuste de índices
Perfilador SQL
29Ajuste de consultas Monitorear rendimiento de
consultas
- STATISTICS Input/Output
- Lecturas lógicas
- Lecturas físicas
- Lecturas avanzadas de lectura
- Cuenta de exploración
- STATISTICS - Time
- SHOWPLAN
- Showplan_Text, Showplan_All, Graphical Showplan
30Ajuste de consultas Sugerencias de consulta
- Las sugerencias de consulta se deben utilizar
para casos especiales no como un procedimiento
operativo estándar - Tipos de consulta
- Sugerencias de unión
- Sugerencias de índices
- Sugerencias de bloqueos
- Sugerencias de procesamientos
31Ajuste de consultas Bloqueos e Interbloqueos
Cómo resolverlos
- Mantenga las transacciones lo más cortas posibles
- Nunca agregue una pausa dentro de una transacción
para entradas del usuario - Cuando procesa un conjunto de resultados, procese
todas las filas tan pronto como sea posible - Para aplicaciones de scrolling de registros,
considere utilizar cursores con control de
concurrencia optimista
32Ajuste de consultas interbloqueos Cómo
resolverlos
- Para evitar interbloqueos en los ciclos, haga que
los procesos accedan a los recursos en un orden
consistente. - Reduzca el nivel de aislamiento de la transacción
si es posible para la aplicación. - Para evitar interbloqueos de conversión,
serialice explícitamente el acceso a un recurso.
33Ajuste de consultasAjuste de rendimiento
- Recopile información acerca del comportamiento de
la aplicación - Utilice el Perfilador SQL
- Analice la información
- Analizador de consultas
- Asistente de ajuste de índices
- Aplique cambios
- Asistente de ajuste de índices
- Administrador empresarial
34Demostración 3Simulador de carga
35Demostración 4Asistente de ajuste de índices
- Analizar la carga de trabajo
- Ver reportes
- Aplicar índices sugeridos
36Agenda
- Bloqueos
- Procesador de consultas
- Ajuste de consultas
- Configuración del sistema
- Monitoreo del rendimiento
37Configuración del sistema Asignación de recursos
y ubicación de los archivos del sistema
- Asegúrese de que el rendimiento de los datos
maximizados para las aplicaciones de la red se
seleccione para los servicios de archivo e
impresión - No ubique los archivos de SQL Server en la misma
unidad que PAGEFILE.sys
38Configuración del sistema Configurar los recursos
de SQL
- Sp_configure
- EXEC sp_configure
- RECONFIGURAR
- Con sobrecarga
- Administrador empresarial
39Configuración del sistema Configurar los
recursos de SQL
- Memoria mínima del servidor y memoria máxima del
servidor - Configurar el tamaño del conjunto del trabajo
- Memoria de consulta mínima
40Configuración del sistema Configurar los
recursos de SQL
- Programar
- Agrupamiento de peso ligero
- Máscara de afinidad
- Inicio de prioridad
- Hilos máximos para el trabajador
- Opciones E/S del disco
- Intervalo de recuperación
41Configuración del sistema Configurar los
recursos de SQL
- Opciones de procesamiento de consultas
- Memoria mínima por consulta
- Memoria para crear índices
- Espera de consulta
- Límite de costo de gobernador de consulta
- Máximo grado de paralelismo
42Configuración del sistema Configurar los
recursos de SQL
- Opciones de la base de datos
- Sólo lectura
- Usuario único
- Autocierre
- Autoreducción
- Creación automática de estadísticas
- Actualización automática de estadísticas
43Configuración del sistema Configurar los
recursos de SQL
- Administrador de búfer
- Opción Pintable
- Monitoreo del rendimiento
- SQLPERF(WAITSTATS)
- SQLPERF(LRUSTATS)
44Demostración 5Configuración del sistema SQL
Administrador empresarialsp_configure
45Agenda
- Bloqueos
- Procesador de consultas
- Ajuste de consultas
- Configuración del sistema
- Monitoreo del rendimiento
46Monitoreo del rendimiento Cómo utilizar el
Perfilador de SQL
- Monitoree eventos del servidor
- Capture instrucciones de SQL
- Identifique consultas con rendimiento bajo
- Reproduzca los problemas para su diagnóstico
47Monitoreo del rendimientoCuándo utilizar el
Perfilador de SQL
- Depurar T-SQL o procedimientos almacenados
- Monitorear el rendimiento de SQL Server para
ajustar las cargas de trabajo - Capturar los escenarios de interbloqueos
- Eventos de reproducción capturados
48Monitoreo del rendimiento Perfilador SQL
- Categorías de eventos
- Columnas de datos
- Filtros
49Demostración 6Perfilador SQL
- Rastrear consultas en una base de datos
- Crear asistente de rastreo
50Monitoreo del rendimientoProcedimientos
almacenados del sistema
- SQL Trace
- sp_trace_create
- sp_trace_setevent
- sp_trace_setfilter
- sp_trace_setstatus
- sp_trace_generateevent
- SQLDIAG
51Demostración 7 Procedimientos de diagnóstico
del sistema
52Monitoreo del rendimiento Uso del monitor del
sistema
- Monitorea todo el rendimiento del sistema
- Contadores del sistema
- Contadores de SQL
53Monitoreo del rendimiento Monitor del sistema
- Monitorea varias computadoras simultáneamente
- Ve y cambia gráficos para reflejar la actividad
actual - Exporta datos a hojas de cálculo o aplicaciones
de la base de datos - Agrega alertas al sistema para notificarle de
posibles problemas
54Monitoreo del rendimiento Monitor del sistema
- Ejecuta una aplicación cuando un valor del
contador excede el valor definido por el usuario - Desarrolla archivos de registro
- Anexa archivos de registro para formar un fichero
a largo plazo - Ve los reportes actuales de actividades
- Genera reportes a partir de los archivos de
registro existentes - Guarda gráficos, alertas, registros o
configuraciones de reportes
55Monitoreo del rendimiento Monitor del sistema
Contadores del sistema
- Sistema
- Cambios/seg del contexto
- Procesador
- Tiempo de Processor
- Tiempo de Privileged
- Tiempo de User
- Extensión de la consulta del procesador
56Monitoreo del rendimiento Monitor del sistema
Contadores del sistema
- SQL Server Administrador de memoria
- Memoria total del servidor (KB)
- Proceso
- Contador del conjunto de trabajo para la
instancia de SQL Server - Administrador del búfer de SQL Server
- Coeficiente de la memoria caché del búfer
57Monitoreo del rendimiento Monitor del sistema
Contadores del sistema
- Memoria
- Páginas/seg
- SQLServer Bases de datos
- Transacciones/seg
- Disco físico
- Transferencias/seg del disco
58Demostración 8 Monitor del sistema
- Configurar monitor del sistema
59Resumen de la sesión
- SQL Server 2000 puede utilizar varias técnicas
para mejorar el rendimiento de las aplicaciones - Las técnicas incluyen
- Diseño de la aplicación y de la base de datos
- Ajuste de consultas
- Configuración del sistema
- Monitoreo del rendimiento
60Para mayores informes
- Sitio Web TechNet en www.microsoft.com/technet
- Microsoft Official Curricula (MOC)
- Curso 2071 Consultas de Microsoft SQL Server
2000 con Transact-SQL - Curso 2072 Administrar una base de datos
Microsoft SQL Server 2000 - Microsoft Press
- Inside SQL Server 2000, Microsoft Press, 2000.,
ohttp//mspress.microsoft.com/books/4297.htm - Microsoft SQL Server 2000 Resource
Kit,http//www.mspress.microsoft.com/PROD/BOOKS/
4939.HTM - Microsoft SQL Server 2000 Reference Library
,http//mspress.microsoft.com/prod/books/5001.ht
m - Microsoft SQL Server 2000 Administrator's
Companion,http//mspress.microsoft.com/books/451
9.htm - Microsoft BackOffice 4.5 Resource Kit ,
Microsoft Press, 1999, ohttp//mspress.microsoft
.com/prod/books/2483.htm
61CapacitaciónRecursos de capacitación para los
profesionales de informática
- Consultas de Microsoft SQL Server 2000 con
Transact-SQL - Curso 2071 Dos días Dirigido por instructor
o aprendizaje por correo electrónico - Disponible a través de MS CTECs en su área
- Administrar una base de datos Microsoft SQL
Server 2000 - Curso 2072 Cinco días Dirigido por
instructor - Disponible a través de MS CTECs en su área
Para localizar al proveedor de capacitación para
este curso, visite mcspreferral.microsoft.com/defa
ult.asp Microsoft Certified Technical Education
Centers (CTECs) son socios premier de Microsoft
para servicios de capacitación
62Dónde puedo obtener TechNet?
- Visite TechNet Online enwww.microsoft.com/technet
- Regístrese para TechNet Flash www.microsoft.com/te
chnet/register/flash.asp - Únase al foro TechNet Online en
www.microsoft.com/technet/discuss - Conviértase en un suscriptor de TechNet en
technetbuynow.one.microsoft.com - Asista a más eventos TechNet
63Conviértase en un Microsoft Certified Systems
Engineer
- Qué es MCSE?
- Certificación Premier para profesionales que
analizan los requerimientos de negocios y diseñan
e implementan la infraestructura para soluciones
de negocios con base en el software del servidor
Microsoft. - Cómo me puedo convertir en un Windows 2000 MCSE?
- Pasar 4 exámenes básicos
- Pasar 1 examen de diseño
- Pasar 2 exámenes opcionales a partir de una lista
completa - Dónde obtengo mayores informes?
- Para mayores informes acerca de los
requerimientos, exámenes y opciones de
capacitación para la certificación, visite
www.microsoft.com/mcp
64(No Transcript)
65- USE master
- GO
- CREATE procedure sp_lock2
- _at_spid1 int NULL, / id del proceso de servidor
para el que se comprueban los bloqueos / - _at_spid2 int NULL / otros id de proceso para el
que comprobar los bloqueos / - as
- set nocount on
- /
- Muestra los bloqueos para ambos parámetros.
- No muestra los bloqueos de master, tempdb,
model o msdb - /
- if _at_spid1 is not NULL
- begin
- select convert (smallint, req_spid) As spid,
- convert(char(20),db_name(rsc_dbid)) As
Database, - rsc_objid As ObjId,
- rsc_indid As IndId,
- substring (v.name, 1, 4) As Type,
66- and req_spid in (_at_spid1, _at_spid2)
- end
- /
- Sin parámetros, muestra todos los bloqueos.
- /
- else
- begin
- select convert (smallint, req_spid) As spid,
- convert(char(20),db_name(rsc_dbid)) As
Database, - rsc_objid As ObjId,
- rsc_indid As IndId,
- substring (v.name, 1, 4) As Type,
- substring (rsc_text, 1, 16) as Resource,
- substring (u.name, 1, 8) As Mode,
- substring (x.name, 1, 5) As Status
- from master.dbo.syslockinfo,
- master.dbo.spt_values v,