Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img
03 de Mayo, 2011 · Query-Optimizer-DTA

Query Optimizer. Database Engine Tuning Advisor (DTA). SQL Server. Tema: VI

 SQL Server tiene una herramienta, Database Engine Tuning Advisor (DTA), para definir, entre otros, que índices podemos necesitar en nuestras consultas. Con este tema no pretendo demostrar como funciona esta herramienta, sino comentar como realmente utiliza y se basa en el Optimizador de Consultas de SQL Server.

 

  DTA genera posibles soluciones de índices, y pregunta al Optimizador cual es el costo de cada una de las soluciones generadas y finalmente DTA se queda con la solución que posee el costo mas bajo. Recordar como funciona el Optimizador: “Pues el Optimizador funciona con costos”, cuando tenemos planes de ejecución, cada uno tiene asignado un número de costo, y el Optimizador va a seleccionar el costo mas bajo posible. Cuanto mas bajo es el costo, quiere decir que la consulta se ejecuta en el menor tiempo posible.

 

 Si para una consulta, tenemos definidos varios índices, es el Optimizador quien decide, (si no se parametriza o fuerza lo contrario), si se usa o no ese índice, o que índice es el que se va a usar.

 

  Es aconsejable para el buen entendimiento de este “Tema:VI” que se lea o repase los enlaces: Query Optimizer. Parameter Sniffing. SQL Server. Tema: I y el enlace: Query Optimizer. Cardinality Estimation Error. SQL Server. Tema: II, y sus temas posteriors.

 

 

 Cuando queremos optimizar una consulta con Database Engine Tuning Advisor, guardamos la consulta en un fichero .sql, para que la pueda utilizar esta herramienta (DTA). Iniciaremos la herramienta DTA, desde el <Managemente Studio>\<Tools>\<Database Engine Tuning Advisor>, y nos arrancara la herramienta donde nos conectaremos contra la instancia, en la cual queremos ejecutar la consulta para optimizarla. Daremos un nombre a nuestra sesión, diremos donde esta ubicado el fichero .sql y seleccionaremos la base de datos donde se ejecutara la consulta:

 Una vez rellenada la ventana anterior, iniciaremos el análisis/optimización -> Doble clic con el ratón en: “Start Analysis”. En ocasiones este proceso puede tardar tiempo, dependiendo de la complejidad de las consultas a optimizar. Al finalizar mostrará un resultado parecido al que os copio, (donde haciendo doble clic con el ratón en el campo Definición), nos mostrará los índices que recomienda:

 A pesar de que DTA, es una herramienta mucho más sofisticada que Missing Indexs, (Ver tema: Query Optimizer. Missing Indexes. SQL Server. Tema: V) tendremos que valorar, o las reglas de negocio de nuestra empresa, cuan critica o importante es la consulta, para invertir tiempo y recursos en optimizar la consulta y conseguir que el tiempo de su respuesta sea el mínimo posible. Partiendo de esto, podremos probar los consejos de crear nuevos índices y verificar si efectivamente las consultas devuelven los datos con mayor rapidez.

 No es aconsejable cargar las tablas de índices, pues cuanto mas se tengan en una tabla, habrá operaciones que se verán afectadas y tarden mas, por poner un ejemplo, cuando se hacen inserciones sobre registros o campos índice, estos índices se han de actualizar en memoria, lo que conlleva un coste, imagina que tienes cientos de inserciones en una hora, lo que puede afectar al rendimiento… Tenemos que tratar de tener siempre los mínimos índices indispensables en nuestras tablas, y que estos sean los correctos, y asegurarnos que los usan aquellos planes de ejecución de las consultas de la aplicación que los necesiten.

 Una vez ejecutado el Analisis/optimización en el Database Engine Tuning Advisor (DTA), como hemos contado mas arriba en este documento, se guarda información en la base de datos msdb, por lo que podremos consultar acerca del análisis realizado, con la consulta:

 

SELECT * FROM msdb..DTA_reports_query

 

 

 Podemos ver en la salida de la consulta anterior, cual es el costo actual de la consulta (campo CurrentCostu), y cual es el costo encontrado/optimizado (campo RecommendedCost), para cada consula (campo StatementString):

 Si ejecutamos las recomendaciones, propuestas por Database Engine Tuning, el costo en nuestro plan de ejecución será menor.  A menor costo, menor tiempo de ejecución en la consulta.

 

 Podemos ver el costo de nuestro plan de ejecución, como por ejemplo:

  Se aconseja leer: Actualización de estadísticas síncronas o asíncronas mejoran la respuesta del optimizador de consultas. SQL Server 

 

  

Fuentes:

Microsoft, MSDN, Benjamin Nevares

Apunte y recopilación por Norman M. Pardell

Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.

 

 

 

 



 

 

 

 

 

publicado por normanmpardell a las 20:17 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Tomo I. Memoria RAM. Optimización de sistemas de 32 y 64 bits. SQL Server 2008.
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad