Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing....
-
Upload
reina-hipolito -
Category
Documents
-
view
10 -
download
3
Transcript of Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing....
![Page 1: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/1.jpg)
Maestría en Bioinformática
Bases de Datos y Sistemas de Información
Nociones de performance
Ing. Alfonso Vicente, [email protected]
![Page 2: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/2.jpg)
Agenda
Noción de performance Acceso secuencial Otras formas de acceso
ConceptosÍndices
OptimizadorPlanes de acceso
![Page 3: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/3.jpg)
Agenda
Estructura Acceso por índices Índices implícitos Sentencia CREATE INDEX Mejores prácticas
ConceptosÍndices
OptimizadorPlanes de acceso
![Page 4: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/4.jpg)
Agenda
Función del optimizador Estadísticas Hints
ConceptosÍndices
OptimizadorPlanes de acceso
![Page 5: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/5.jpg)
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
OptimizadorPlanes de acceso
![Page 6: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/6.jpg)
Agenda
Noción de performance Acceso secuencial Otras formas de acceso
ConceptosÍndices
OptimizadorPlanes de acceso
![Page 7: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/7.jpg)
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
![Page 8: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/8.jpg)
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...
![Page 9: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/9.jpg)
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 personasmientras (t sea una tupla)
si (t.nombre= 'Juan' y t.apellido = 'López') retorno t.telefonot := siguiente tupla de personas
retorno {}
• ¿Qué puede decir sobre esta forma de acceso?
![Page 10: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/10.jpg)
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 = log2 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)
![Page 11: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/11.jpg)
Agenda
Estructura Acceso por índices Índices implícitos Sentencia CREATE INDEX Mejores prácticas
ConceptosÍndices
OptimizadorPlanes de acceso
![Page 12: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/12.jpg)
Í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 | 5551122 |+----------+----------+----------+----------+----------+| 11 | 2 | Rodrigo | Giménez | 5553344 |+----------+----------+----------+----------+----------+| 27 | 3 | María | Pérez | 5556677 |+----------+----------+----------+----------+----------+| 80 | 4 | Juan | López | 5558899 |+----------+----------+----------+----------+----------+
![Page 13: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/13.jpg)
Í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 | | +---+----------+----+---+
![Page 14: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/14.jpg)
Índices
Estructura
• Normalmente no son árboles binarios, sino árboles B
• Estas estructuras deben actualizarse a medida que se modifica la instancia mediante sentencias DML
![Page 15: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/15.jpg)
Í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';
![Page 16: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/16.jpg)
Í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)
![Page 17: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/17.jpg)
Í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 <nombre>on <table> ( <col1> [asc|desc], ..., <colN> [asc|desc] );
• Ejemplo
create index personas_ape_nomon personas (apellido, nombre);
• En general, cada RDBMS tiene muchas más opciones
![Page 18: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/18.jpg)
Í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_IDon personas (id);
alter table personasadd constraint PK_PERSONASprimary key (id);
• No se creará un índice implícito porque ya existe uno
![Page 19: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/19.jpg)
Í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
![Page 20: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/20.jpg)
Í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; 10select count(distinct apellido) from personas; 1000
![Page 21: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/21.jpg)
Agenda
Función del optimizador Estadísticas Hints
ConceptosÍndices
OptimizadorPlanes de acceso
![Page 22: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/22.jpg)
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?
![Page 23: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/23.jpg)
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
![Page 24: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/24.jpg)
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 :)
![Page 25: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/25.jpg)
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
OptimizadorPlanes de acceso
![Page 26: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/26.jpg)
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 10.000 veces al día la “misma consulta” con valores diferentes:
select nombre, apellido, telefono from personas where departamento = ? and apellido = ?
![Page 27: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/27.jpg)
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)
![Page 28: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/28.jpg)
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
![Page 29: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/29.jpg)
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
![Page 30: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/30.jpg)
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 |----------------------------------------------------------------------
1 - filter("NOMBRE"='Luis' AND "APELLIDO"='Rodriguez')
![Page 31: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/31.jpg)
Planes de acceso
Revisión del plan de acceso
• En Oracle, mediante SQL Developer
![Page 32: Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy.](https://reader036.fdocuments.net/reader036/viewer/2022062618/55027d8b4a795996568b4e4c/html5/thumbnails/32.jpg)
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 |--------------------------------------------------------------------------------