Optimización del rendimiento de las consultas

Slides:



Advertisements
Presentaciones similares
Base de Datos II.
Advertisements

IBD Clase 16.
Configuración de Control
Diseño de Bases de Datos
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g.
integridad referencial
Base de Datos Distribuidas PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS
Estadísticas en SQL Server Rocío Contreras Águila, Primer Semestre 2010.
Implementación de procedimientos almacenados
Procedimientos de Almacenado
Rocio Contreras Aguila Primer Semestre Para poder ejecutar esto SQL Server nos permite definir datos y nos entrega herramientas para poder exigir.
Rocío Contreras Águila Primer Semestre 2010
Implementación de procedimientos almacenados. Introducción a los procedimientos almacenados Creación, ejecución, modificación y eliminación de procedimientos.
Administración de transacciones y bloqueos
Introducción a Transact-SQL
Supervisión del rendimiento de SQL Server
Análisis de consultas.
Administración de archivos de bases de datos
Optimización de Consultas Distribuidas
Acceso a bases de datos MySQL en PHP
Desarrollo de Aplicaciones para Internet
Lenguajes de programación
SQL G r u p o
Optimización de aplicaciones de bases de datos OLTP Speaker: Edinson Medina SQL Server Premier Field Engineer Microsoft Corporation Blog:
SQL Server Integration Services SSIS
Introducción al software
Consultas anidadas.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Evaluación y Optimización de Consultas Láminas seleccionadas de las láminas de la Prof. María Esther Vidal.
8. Procesamiento y optimización de consultas
Como empezar en Access 2000 Abrir Access 2000 Pulsamos INICIO
SQL Structured Query Language
SQL Server 2008 Integration Services
 LOPEZ MENDOZA CORINA AMALINALLI  GRUPO 304.  Una base de datos o banco de datos (en ocasiones abreviada BB.DD.) es un conjunto de datos pertenecientes.
D Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Uso de SQL*Plus.
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Administración de Bases de Datos
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO MODULO IV ADMINISTRACIÓN DE BASES DE DATOS Administración del DBMS E.I. L.E. Prof. Ramón Castro Liceaga SEMINARIO.
5. Sistemas de archivos avanzados1 Tema 5: Sistemas de Archivos Avanzados Resumen: –Sistema de archivos distribuido –File Replication Service.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Bases de Datos Sql.
Especialista en Business Intelligence Integration Services SSIS Transformaciones (Parte 4) Microsoft SQL Server 2008 R2.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
LENGUAJE SQL (LENGUAJE ESTRUCTURADO DE CONSULTA) BASES DE DATOS Ing Sonia Godoy H.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
Introducción a la Optimización de Consultas. Francisco Moreno.
Capítulo 8 Segmentación de Instrucciones.
Uso de las herramientas de consulta de Transact-SQL
 La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Unidad 6. Tema 4. Lenguaje de consultas SQL
ACCESO A DATOS EN ASP.NET Controles de origen de datos Controles enlazados a datos.
Para cada uno de los atributos, indicaremos su campo de descripción. Cuando un campo no dispone de este (como el.
Administración de Base de Datos Procesamiento y Optimización de Consultas Prof Mercy Ospina Torres Prof Renny A. Hernandez
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
DML Transact SQL Sesión VI Trabajando con subconsultas.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Optimización del rendimiento de las consultas

Introducción Introducción al optimizador de consultas Obtención de información del plan de ejecución Uso de un índice para abarcar una consulta Estrategias de indización Suplantación del optimizador de consultas

Introducción al optimizador de consultas Función del optimizador de consultas Cómo utiliza el optimizador de consultas la optimización basada en el costo Cómo funciona el optimizador de consultas Fases de la optimización de consultas Almacenamiento en caché del plan de ejecución Establecimiento de un límite de costo

Función del optimizador de consultas Determina el plan de ejecución más eficaz Determinar la existencia de índices y evaluar su utilidad Determinar los índices o las columnas que se pueden utilizar Determinar cómo procesar las combinaciones Uso de evaluación basada en costos de alternativas Creación de estadísticas de columnas Utiliza información adicional Produce un plan de ejecución

Cómo utiliza el optimizador de consultas la optimización basada en el costo Limita el número de planes de optimización El costo se estima en términos de E/S y costo de CPU Determina el tiempo de procesamiento de las consultas Utilice operadores físicos y secuencia de operaciones Utilice procesos paralelos y en serie

Cómo funciona el optimizador de consultas Transact-SQL Proceso de análisis Proceso de estandarización Optimización de la consulta Compilación Conjunto de resultados Rutinas de acceso a bases de datos

Fases de la optimización de consultas Análisis de la consulta Identifica los criterios de búsqueda y combinación de la consulta Selección de índices Determina si existe algún índice Produce una valoración de la utilidad del índice o índices Selección de la combinación Evalúa qué estrategia de combinación se va a utilizar

Almacenamiento en caché del plan de ejecución Almacenamiento de un plan de ejecución en la memoria Una copia para todas las ejecuciones en serie Otra copia para todas las ejecuciones en paralelo Uso de un contexto de ejecución Se vuelve a utilizar un plan de ejecución existente, si lo hay Se genera un plan de ejecución nuevo, si no existe uno Recompilación de planes de ejecución Los cambios en la base de datos pueden hacer que el plan de ejecución sea ineficaz o deje de ser válido

Establecimiento de un límite de costo Especificación de un límite máximo Utilice el regulador de consultas para evitar que se ejecuten consultas que tarden mucho tiempo y usen muchos recursos del sistema Especificación de límites de conexión Use el procedimiento almacenado sp_configure Ejecute la instrucción SET QUERY_GOVERNOR_COST_LIMIT Especifique 0 para desactivar el regulador de consultas

Obtención de información del plan de ejecución Presentación de los resultados de las instrucciones STATISTICS Presentación de los resultados de SHOWPLAN_ALL y SHOWPLAN_TEXT Presentación gráfica del plan de ejecución

Presentación de los resultados de las instrucciones STATISTICS Instrucción Ejemplo de salida STATISTICS TIME STATISTICS PROFILE STATISTICS IO SQL Server Execution Times: CPU time = 0 ms, elapsed time = 2 ms. Rows Executes StmtText StmtId… ----------------------------------------------- 47 1 SELECT * FROM [charge] 16 WHERE (([charge_amt]>=@1) . Table 'member'. Scan count 1, logical reads 23, physical reads 0, read-ahead reads 0.

Presentación de los resultados de SHOWPLAN_ALL y SHOWPLAN_TEXT Estructura de los resultados de la instrucción SHOWPLAN Devuelven información en forma de un conjunto de filas Forman un árbol jerárquico Representan los pasos realizados por el optimizador de consultas Muestran un cálculo de cómo se optimizó una consulta, no el plan de ejecución real Detalles de los pasos de ejecución Diferencia entre los resultados de SHOWPLAN_TEXT y SHOWPLAN_ALL

Presentación gráfica del plan de ejecución Elementos del plan de ejecución gráfico Lectura de los resultados del plan de ejecución gráfico Uso de la operación de consulta de marcadores

Elementos del plan de ejecución gráfico Los pasos son unidades de trabajo que se utilizan para procesar una consulta La secuencia de pasos es el orden en que se procesan los pasos Los operadores lógicos describen la operación algebraica relacional que se utiliza para procesar una instrucción Los operadores físicos describen el algoritmo de implementación física que se utiliza para procesar una instrucción

Lectura de los resultados del plan de ejecución gráfico Secuencia de pasos Plan de consulta Member.corp_no Costo: 9% Raíz de combinación hash… Costo: 28% SELECT Costo: 0% Consulta de marcadores Costo: 8% Búsqueda en índice Recorre un intervalo de filas en particular desde un índice no agrupado. Filtro Costo: 0% Member.fname Costo: 10% Operación física: Operación lógica: Cuenta de filas: Tamaño estimado de fila: Costo de E/S: Costo de CPU: Número de ejecuciones: Costo: Costo del subárbol: Búsqueda en índice 414 24 0,00706 0,000605 1,0 0,007675(6%) 0,00767 Argumento: OBJECT: ([credit].[dbo].[member].[fname]), SEEK: ([member],[firstname] >=‘Rb’ AND [member],[firstname] <‘T’) ORDERED

Uso de la operación de consulta de marcadores Análisis del plan de consultas Normalmente se utiliza después de haber procesado todos los pasos Recuperación de filas Identificadores de fila Claves de agrupación Observación de los detalles Se utiliza una etiqueta de marcador para buscar la fila Determinación de cuándo se utiliza el operador de consulta de marcadores Las consultas contienen la cláusula IN o el operador OR

Uso de un índice para abarcar una consulta Introducción a los índices que abarcan consultas Búsqueda de datos mediante índices que abarcan consultas Identificación de si se puede utilizar un índice para abarcar una consulta Determinación de si se utiliza un índice para abarcar una consulta Instrucciones para la creación de índices que abarcan consultas

Introducción a los índices que abarcan consultas Sólo los índices no agrupados pueden abarcar consultas Los índices deben contener todas las columnas a las que se hace referencia en la consulta No es necesario el acceso a las páginas de datos Las vistas indizadas pueden agregar datos anteriores Los índices que abarcan consultas recuperan los datos rápidamente

Búsqueda de datos mediante índices que abarcan consultas Ejemplo de exploración de una sola página Ejemplo de exploración de recorrido parcial Ejemplo de exploración de recorrido completo

Ejemplo de exploración de una sola página SELECT lastname, firstname FROM member WHERE lastname = 'Hall' Páginas de índice Akhtar Sarah Lang Eric No situadas en el nivel de hoja … … … … Akhtar Sarah Lang Eric … … … … Ganio Jon … … … … … … Nivel de hoja (valor de clave) Akhtar Sarah Ganio Jon Lang Eric Barr … Hall Hall Don Don Martin … … … … Barr … Hart Sherri Martin … Borm … Jones Amy Martin … Buhl … Jones Beverly Moris … Páginas de datos

Ejemplo de exploración de recorrido parcial USE credit SELECT lastname, firstname FROM member WHERE lastname BETWEEN 'Funk' AND 'Lang' Páginas de índice Akhtar Jordan … No situadas en el nivel de hoja Akhtar … Jordan … Chai … Lang … Dunn … Morgan … Ganio … Smith … Nivel de hoja (valor de clave) Akhtar … Chai … Dunn … Ganio … Jordan … Lang … Morgan … Smith … Barr … Con … Dunn … Hall … Kim … Martin … Nash … Smith … Barr … Con … Fine … Hart … Kim … Martin … Nay … Smith … Borm … Cox … Fort … Jones … Koch … Martin … Ota … Smith … Buhl … Dale … Funk … Jones … Koch … Moris … Rudd … Smith … Páginas de datos

Ejemplo de exploración de recorrido completo USE credit SELECT lastname, firstname FROM member Páginas de índice Akhtar … No situadas en el nivel de hoja Martin Akhtar Ganio … Martin Smith … Nivel de hoja (valor de clave) Akhtar … Chai … Dunn … Ganio … Jordan … Lang … Morgan … Smith … Barr … Con … Dunn … Hall … Kim … Martin … Nash … Smith … … Barr … Con … Fine … Hart … Kim … Martin … Nay … Smith … Borm … Cox … Fort … Jones … Koch … Martin … Ota … Smith … Buhl … Dale … Funk … Jones … Koch … Moris … Rudd … Smith … Páginas de datos

Identificación de si se puede utilizar un índice para abarcar una consulta Todos los datos necesarios deben estar en el índice Un índice compuesto es útil aunque no se haga referencia a la primera columna No es necesaria una cláusula WHERE Se puede utilizar un índice no agrupado si requiere menos E/S que un índice agrupado que contenga una columna a la que se hace referencia en la cláusula WHERE Los índices se pueden combinar para abarcar consultas

Determinación de si se utiliza un índice para abarcar una consulta Observación de los resultados del plan de ejecución Se muestra la frase “Comprobar un índice no agrupado, en su totalidad o sólo un intervalo” Comparación de E/S Índice no agrupado Número total de niveles no situados en el nivel de hoja Número total de páginas que componen el nivel de hoja Número total de filas por página del nivel de hoja Número total de filas por página de datos Número total de páginas que componen la tabla

Instrucciones para la creación de índices que abarcan consultas Agregar columnas a los índices Reduzca el tamaño de la clave del índice Mantenga una proporción de tamaño entre la fila y la clave

Estrategias de indización Evaluación de la E/S para las consultas que tienen acceso a un intervalo de datos Indización para varias consultas Instrucciones para la creación de índices

Evaluación de la E/S para las consultas que tienen acceso a un intervalo de datos SELECT charge_no FROM charge WHERE charge_amt BETWEEN 20 AND 30 Método de acceso Página de E/S 10.417 1042 100.273 273 Recorrido de tabla Índice agrupado en la columna charge_amt Índice no agrupado en la columna charge_amt Índice compuesto en las columnas charge_amt y charge_no

Indización para varias consultas Ejemplo 1 USE credit SELECT charge_no, charge_dt, charge_amt FROM charge WHERE statement_no = 19000 AND member_no = 3852 Ejemplo 2 USE credit SELECT member_no, charge_no, charge_amt FROM charge WHERE charge_dt between '07/30/1999' AND '07/31/1999' AND member_no = 9331

Instrucciones para la creación de índices Determine las prioridades de todas las consultas Determine la selectividad de cada parte de la cláusula WHERE de cada consulta Determine si es conveniente crear un índice Identifique las columnas que se deben indizar Determine el mejor orden para las columnas de los índices compuestos Determine los demás índices que sean necesarios Pruebe el rendimiento de las consultas

Suplantación del optimizador de consultas Determinación de cuándo se debe suplantar el optimizador de consultas Uso de las sugerencias y la instrucción SET FORCEPLAN Comprobación del rendimiento de las consultas después de suplantar el optimizador de consultas

Determinación de cuándo se debe suplantar el optimizador de consultas Limitar las sugerencias de optimizador Antes de suplantar el optimizador de consultas debe explorar las demás alternativas mediante: Actualización de estadísticas Recompilación de procedimientos almacenados Revisión de las consultas o argumentos de búsqueda Evaluación de la posibilidad de crear índices diferentes

Uso de las sugerencias y la instrucción SET FORCEPLAN Sugerencias de tabla Sugerencias de combinación Sugerencias de consulta Instrucción SET FORCEPLAN

Comprobación del rendimiento de las consultas después de suplantar el optimizador de consultas Compruebe que mejora el rendimiento Documente las razones para utilizar sugerencias de optimizador Vuelva a probar las consultas regularmente