Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP

Slides:



Advertisements
Presentaciones similares
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
Advertisements

Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios llevar a cabo las tareas de consulta o manipulación.
SQL Sigla del nombre “Structured Query Language”.
integridad referencial
Estadísticas en SQL Server Rocío Contreras Águila, Primer Semestre 2010.
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
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
BASE DE DATOS OBJETO RELACIONAL
Optimización del rendimiento de las consultas
Al abrir el Access aparece una ventana para crear una base en blanco, con la ayuda de un asistente o abrir una existente. Al principio optamos por la primera.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:23 PRESENTACION: BASE DE DATOS ALUMNAS: Velazquez Corona Elsa Ponciano Antonio.
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: SELECT Ing. Alfonso Vicente, PMP
Neo4j – Una guía rápida de devniel.com Parte II - Por Daniel Flores
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información Fundamentos de Matemática Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DDL Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información Diseño Lógico Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información Del MER al MR Ing. Alfonso Vicente, PMP
Lenguaje de consulta de Hibernate
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
PRIVILEGIOS DE ACCESO EN INFORMIX
Características Objeto Relacionales en Oracle
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
Unidad 3 Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
Lenguaje Estructurado de Consultas (Structured Query Language – SQL)
Tema 3. Optimización de Código
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
MySQL M.C. Pedro Bello López.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Bases de Datos Relacionales
Subconsultas Avanzadas
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.
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
Bases de Datos Oracle Optimización
UNITA - IBARRA TRIGGERS
BASE DE DATOS BY: Julián Villar Vázquez.
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.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
Métrica v2.1 Técnicas: Modelado de datos (Parte 2)
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?
CAPITULO 4 Despliegue de Datos Desde Múltiples Tablas
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 12 Otros Objetos de la Base de Datos.
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
Consultas SQL (Base de Datos)
LENGUAJE SQL.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Metodología de la programación
Lenguaje Estructurado de Consulta
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
Instrucciones para crear tablas My SQL. A nivel teórico, existen dos lenguajes para el manejo de bases de datos: DDL (Data Definition Language) Lenguaje.
SQL Sigla del nombre “Structured Query Language”.
Instrucciones para administrar bases de datos. Instrucciones para administrar una base de datos Para crear la base de datos debemos emplear las diferentes.
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.
SQL Lenguaje Estructurado de Consulta MATERIA: diseñar sistemas de información ALUMNO: sarmiento flores Liliana Guadalupe GRUPO: 4° “A” TURNO: matutino.
Laboratorio de optimización de BD
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
JOIN EN MYSQL Bueno en esta presentación mostrare cosas acerca de los usos de la sentencia JOIN en mysql , mediante esta presentación planeo mostrar los.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Comandos DDL Los comandos DDL son las siglas de Data Definition Language, y se corresponde con el conjunto de órdenes que permiten definir las estructuras.
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.
Stored Procedures vs. Programación Tradicional
QUÉ ES UNA BASE DE DATOS? Es un Conjunto de Información, que está clasificada de distintas maneras; pero que comparten entre sí algún tipo de vínculo,
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.
Copyright  Oracle Corporation, All rights reserved. 12 Otros Objetos de la Base de Datos.
Transcripción de la presentación:

Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP

Agenda Noción de performance Acceso secuencial Otras formas de acceso Conceptos Índices Optimizador Planes de acceso

Agenda Estructura Acceso por índices Índices implícitos Sentencia CREATE INDEX Mejores prácticas Conceptos Índices Optimizador Planes de acceso

Agenda Función del optimizador Estadísticas Hints Conceptos Índices Optimizador Planes de acceso

Agenda Etapas en la ejecución de SQL Reuso del plan de acceso SQL dinámico y SQL estático Revisión del plan de acceso Conceptos Índices Optimizador Planes de acceso

Agenda Noción de performance Acceso secuencial Otras formas de acceso Conceptos Índices Optimizador Planes de acceso

Conceptos Noción de performance Normalmente la performance se asocia a la idea de rapidez para realizar un trabajo Es un concepto general que puede tener varias métricas Tiempo de respuesta: tiempo medido desde el punto de vista del usuario desde que envía una solicitud hasta que obtiene una respuesta Throughput: cantidad de trabajo por unidad de tiempo. Según el contexto el trabajo se puede medir en bytes, número de operaciones de E/S, operaciones lógicas, etc

Conceptos Noción de performance La principal causa de una performance pobre es un diseño pobre (normalización, SQL, algoritmos) Ejemplo: el programa que se enlentecía por las tardes Un programa debía generar números secuenciales dentro de cada día El algoritmo consistía en probar el 1, si ya había sido dado probar el 2, si ya había sido dado probar el 3, y así sucesivamente...

Conceptos Acceso secuencial Imagine el siguiente algoritmo interno para resolver una consulta en: personas(id, nombre, apellido, telefono) select telefono from personas where nombre = 'Juan' and apellido = 'López' t := la primer tupla de personas mientras (t sea una tupla) si (t.nombre= 'Juan' y t.apellido = 'López') retorno t.telefono t := siguiente tupla de personas retorno {} ¿Qué puede decir sobre esta forma de acceso?

Conceptos Otras formas de acceso ¿Con qué velocidad buscamos en la guía telefónica? Paso 0: Tenemos N páginas, abrimos al medio Paso 1: Buscamos en N/2 páginas, abrimos al medio Paso 2: Buscamos en N/4 páginas, abrimos al medio Paso k: Buscamos en N/2^k páginas, llegamos a la página! Cuando llegamos: N/2^k = 1 N = 2^k k = log 2 N El número de pasos crece con las páginas, pero de forma logarítmica (mil páginas = 10 pasos, 1 millón: 20 pasos)

Agenda Estructura Acceso por índices Índices implícitos Sentencia CREATE INDEX Mejores prácticas Conceptos Índices Optimizador Planes de acceso

Índices Estructura Las tablas mantienen una columna oculta con un identificador de tupla (llamémosle ROWID) PERSONAS | ROWID | ID | NOMBRE | APELLIDO | TELEFONO | | 10 | 1 | Juan | Martínez | | | 11 | 2 | Rodrigo | Giménez | | | 27 | 3 | María | Pérez | | | 80 | 4 | Juan | López | |

Índices Estructura Los índices (generalmente) son estructuras arborescentes, ordenadas por algunas columnas, y con los ROWID | | Martínez | 10 | | | | Giménez | 11 | | | | Pérez | 27 | | | | López | 10 | |

Índices Estructura Normalmente no son árboles binarios, sino árboles B Estas estructuras deben actualizarse a medida que se modifica la instancia mediante sentencias DML

Índices Acceso por índices Si buscamos por apellido y tenemos un índice por la columna apellido, la búsqueda en el índice será mucho más rápida (orden logarítmico vs. orden lineal) Luego, utilizando el ROWID de las tuplas que matchean con nuestra búsqueda, llegamos a las tuplas en la tabla de forma directa Dependiendo de la consulta, podría ni siquiera ser necesario llegar a la tabla: select count(*) from personas where apellido = 'López';

Índices Índices implícitos Al definir una PK o una UK, los RDBMSs crean índices de forma implícita (si ya no existe uno por esas columnas) Esto es porque el RDBMS debe asegurar que cada tupla tiene valores diferentes por cada clave, o sea que en cada INSERT y UPDATE debe buscar si el nuevo valor existe (y debe hacerlo rápido) El índice es otro objeto de esquema dentro de la base. Los que son creados implícitamente tendrán un nombre sin semántica (e.g. SYS000142)

Índices Sentencia CREATE INDEX Podemos querer crear un índice por columnas que no sean PK ni UK (por ejemplo, para mejorar la performance de consultas por nombre y apellido) create [unique] index on ( [asc|desc],..., [asc|desc] ); Ejemplo create index personas_ape_nom on personas (apellido, nombre); En general, cada RDBMS tiene muchas más opciones

Índices Sentencia CREATE INDEX También podemos querer crear un índice por columnas que sean PK o UK, para asignarles un nombre y evitar que se creen de forma implícita create table PERSONAS (... ); create unique index IX_PERSONAS_ID on personas (id); alter table personas add constraint PK_PERSONAS primary key (id); No se creará un índice implícito porque ya existe uno

Índices Mejores prácticas No siempre es mejor acceder por índice que acceder secuencialmente a la tabla Los índices pueden mejorar la performance de las sentencias que tienen predicado (SELECT, UPDATE, DELETE), pero necesitan ser mantenidos en cada sentencia DML (INSERT, UPDATE, DELETE) Necesitamos tener alguna idea de cuándo conviene crear índices, y qué índices crear

Índices Mejores prácticas Si consultaremos frecuentemente una tabla grande por columnas que no están al comienzo de ningún índice, podemos considerar crear un índice por esas columnas Las columnas más selectivas deberían ubicarse primero Ejemplo: ¿qué índice convendría crear? select nombre, apellido, telefono from personas where departamento = 5 and apellido = 'López'; select count(distinct departamento) from personas; 10 select count(distinct apellido) from personas; 1000

Agenda Función del optimizador Estadísticas Hints Conceptos Índices Optimizador Planes de acceso

Optimizador Función del optimizador El optimizador es quién decide, para cada sentencia, cómo accede a los datos (tablas e índices disponibles), tratando de elegir el mejor algoritmo de acceso A medida que la instancia (y esquema) cambia, el mejor algoritmo de acceso también cambia El optimizador es parte del RDBMS y funciona sólo, sin que debamos hacer nada ¿Cómo hace el optimizador para conocer sobre la instancia?

Optimizador Estadísticas El optimizador se basa en estadísticas que toma de vez en cuando y mediante las cuales sabe sobre la distribución de los datos en las tablas y en las columnas Las estadísticas mantienen datos como el número de tuplas de cada tabla, y de cada columna datos como el menor y el mayor valor, el número de valores distintos, los límites de quintiles, el número de nulls, etc Según el RDBMS, el proceso que recolecta estadísticas podría correr de forma automática (por tiempo o según los cambios) o podríamos tener que correrlo explícitamente

Optimizador Hints Algunos RDBMSs permiten agregar hints (sugerencias) a las sentencias, para sugerirle al optimizador un algoritmo de acceso Esto puede ser útil debido a que el optimizador no siempre elige el mejor plan de acceso posible El optimizador podría decidir mal debido a: Estadísticas desactualizadas Estadísticas con poco nivel de detalle (o sampling) Un error de cálculo :)

Agenda Etapas en la ejecución de SQL Reuso del plan de acceso SQL dinámico y SQL estático Revisión del plan de acceso Conceptos Índices Optimizador Planes de acceso

Etapas en la ejecución de SQL Preparar: Implica tomar el texto del SQL y generar un plan de acceso y variables de bind Ejecutar: Implica seguir el plan de acceso (utilizando las variables de bind) para lograr el objetivo de la sentencia Imagine que en una base se ejecuta veces al día la misma consulta con valores diferentes: select nombre, apellido, telefono from personas where departamento = ? and apellido = ?

Planes de acceso Reuso del plan de acceso El plan de acceso podría reutilizarse Preparar la sentencia una única vez (tal vez en tiempo de compilación) y generar el plan de acceso Ejecutarla N veces, con el plan ya obtenido Esto tiene ventajas (no se incurre en el costo de la preparación) y desventajas (si la instancia cambia, el optimizador no puede ayudarnos porque ya no interviene)

Planes de acceso SQL dinámico y SQL estático Podemos beneficiarnos del uso de SQL estático utilizando código compilado, por ejemplo stored procedures o PreparedStatements en Java

Planes de acceso Revisión del plan de acceso Revisar el plan de acceso de una sentencia es la mejor manera de asegurarse que se está utilizando el mejor plan de acceso posible La forma de hacerlo es diferente en cada RDBMS, aunque normalmente siempre hay alguna interfaz que lo muestra en forma gráfica En el plan de acceso, se debería mirar: El costo (el global, y los pasos más costosos) La existencia de TABLE SCANS

Planes de acceso Revisión del plan de acceso En Oracle, mediante SQL *Plus: SQL> explain plan for select sueldo from empleados where nombre = 'Luis' and apellido = 'Rodriguez'; Explained. SQL> select * from table(dbms_xplan.display); | Id | Operation |Name |Rows|Bytes|Cost (%CPU)|Time | | 0 | SELECT STATEMENT | | 1| 31| 3 (0)|00:00:01 | |* 1 | TABLE ACCESS FULL|EMPLEADOS| 1| 31| 3 (0)|00:00:01 | filter("NOMBRE"='Luis' AND "APELLIDO"='Rodriguez')

Planes de acceso Revisión del plan de acceso En Oracle, mediante SQL Developer

Planes de acceso Revisión del plan de acceso Después de crear un índice, el plan cambia. Primero accede al índice EMPS_NOM_APE y después a la tabla, con el ROWID (directamente a la tupla que se necesita) SQL> create index emps_nom_ape on empleados(nombre, apellido); Index created. Plan de acceso: |Id|Operation |Name |Rows|Bytes|Cost (%CPU)|Time | | 0|SELECT STATEMENT | | 1| 31| 1 (0) | 00:00:01 | | 1| TABLE ACCESS BY INDEX ROWID|EMPLEADOS | 1| 31| 1 (0) | 00:00:01 | |*2| INDEX RANGE SCAN |EMPS_NOM_APE| 1| | 1 (0) | 00:00:01 |