Entendiendo y Optimizando MySQL



Documentos relacionados
Arquitectura de sistema de alta disponibilidad

Modelo de Clustering. Microsoft SQL Server

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

Conoce los problemas más comunes que afectan el desempeño de RDBMS y como MySQL los resuelve

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

Motores de almacenamiento en MySQL 5.0 por Mario López y Juan A. Sánchez

Servidores corporativos Linux

4. Programación Paralela

SAQQARA. Correlación avanzada y seguridad colaborativa_

Novedades en Q-flow 3.02

Guía Rápida de Puesta en Marcha de MailStore

Capítulo 5. Cliente-Servidor.

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

Capítulo 12: Indexación y asociación

GlusterFS. Una visión rápida a uno de los más innovadores sistema de archivos distribuido

Operación Microsoft Access 97

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Guía de instalación y configuración de IBM SPSS Modeler Social Network Analysis 16

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

- Bases de Datos - - Diseño Físico - Luis D. García

Nuevas tendencias: Virtualización de computadores / servidores

Descripción. Este Software cumple los siguientes hitos:

Ventajas del almacenamiento de datos de nube

Soporte y mantenimiento de base de datos y aplicativos

Tema: CREACIÓN DE CONSULTAS E INFORMES EN UNA BASE DE DATOS CON MICROSOFT ACCESS 2013.

PROYECTO FINAL. Se deberán configurar y administrar cada uno de los servicios mencionados anteriormente bajo los siguientes lineamientos.

ESQUEMAS DE SISTEMAS VOIP CON ALTA DISPONIBILIDAD Y ALTO RENDIMIENTO

Consultas con combinaciones

Motores MySQL. José Manuel Gómez. Departamento de Lenguajes y Sistemas Informáticos

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas:

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Formularios. Formularios Diapositiva 1

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

PROGRAMACIÓN PÁGINAS WEB CON PHP

Práctica 5. Curso

Microsoft SQL Server Conceptos.

select nombre from profesores where categoria='aso6';

DISEÑO DE SOFTWARE INTEGRADO Unidad I: Introducción al Diseño de Software Integrado. Profesor: Cristián Chávez T

Estructuras de Datos y Algoritmos. Árboles de Expresión

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Manual De Instalación MySQl 5.1 MANUAL DE INSTALACIÓN Y CONFIGURACIÓN DE MYSQL

Guía de Instalación para clientes de WebAdmin

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

FP BÁSICA Ofimática y archivo de Documentos

CURSOS Y DESCRIPCIÓN / ADMINISTRACIÓN DE BASE DE DATOS

Familia de Windows Server 2003

- MANUAL TÉCNICO - Implantación de software de Marketing Online

Guía Rápida de Inicio

MATERIAL 2 EXCEL 2007

Módulo: Ahorra espacio ÍNDICE 1. QUÉ ES WINRAR? 3

Componentes de Integración entre Plataformas Información Detallada

Administración avanzada de paquetes. apt-proxy.

Windows Server Windows Server 2003

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

RAID. Redundant Array of Independent Disks. Rafael Jurado Moreno Fuente: Wikipedia

Bases de Datos en Visual FoxPro. Administrador de proyectos

PLATAFORMA SAP HANA Diez preguntas principales al elegir una base de datos in-memory. Empiece aquí

PROGRAMA FORMATIVO. Administración de Bases de Datos Oracle

LLEVE SU NEGOCIO al SIGUIENTE NIVEL. digitalice todos sus documentos y procesos.

Guía de Laboratorio Base de Datos I.

El outsourcing o tercerización u operador logístico

Guía de instalación de la carpeta Datos de IslaWin

Bases de Datos 2. Teórico

Curso de seguridad informática en el entorno docente. Sesión 4. PONENTE: Jaime López Soto.

Programación páginas web. Servidor (PHP)

Manual de instalación Actualizador masivo de Stocks y Precios

H E R R A M I E N T A S D E A N Á L I S I S D E D A T O S HERRAMIENTAS DE ANÁLISIS DE DATOS

Studium, Campus Virtual de la Universidad de Salamanca.

STRATO LivePages Inicio rápido

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

Administración de Bases de Datos; Remota e In-Situ.

Sistema Inteligente de Exploración

Resumen. Funcionamiento. Advertencia

Estimado usuario. Tabla de Contenidos

Manual de usuario de IBAI BackupRemoto

Microsoft Dynamics. Migración de FRx 6.7 a Management Reporter for Microsoft Dynamics ERP

Instalar y configurar W3 Total Cache

Formas de llevar a cabo un backup de una base de datos MySQL

Estructura de una BD Oracle. datafiles redo log controlfiles tablespace objetos Estructura lógica. Tablespaces tablespace SYSTEM

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Base de Datos Práctica 1.

BASES DE DATOS - Microsoft ACCESS 2007-

Introducción a Computación

Tema 6. Gestión de la memoria

Hi-Spins. Hi-Spins - Novedades v

Acronis License Server. Guía del usuario

arquitectura que maneja. Encontraremos también los diferentes servidores que

Expansión en línea de la Capacidad RAID & Migración del nivel RAID

Restricciones (constraints) FOREIGN KEY

Manual de NetBeans y XAMPP

LABORATORIO 9. Replicación de base de datos en SQL Server

Transcripción:

Grupo de Usuarios de Linux Universidad Carlos III de Madrid. 10 de Noviembre de 2010

Indice Arquitectura 1 Arquitectura 2 3 4 5

Arquitectura Sistema de Gestión de Bases de Datos. GPL. Escrito en C y C++. Multiplataforma. Mas de 6 millones de instalaciones.

Indice Arquitectura 1 Arquitectura 2 3 4 5

Arquitectura Arquitectura

Indice Normalización Índices 1 2 Normalización Índices 3 4 5

Normalización Índices Nuestros esquemas e índices dependen de la funcionalidad. Es tan importante el que, como el como. Todo el diseño debe tener en cuenta los casos de uso. Es muy diferente un diseño para lectura, escritura o baja latencia. Todo deriva en un compromiso entre el rendimiento en diferentes situaciones.

Indice Normalización Índices 1 2 Normalización Índices 3 4 5

Normalización Índices Normalización Reestructuración de nuestras tablas. Busca eliminar redundancia. Se aplican una serie de formas normales. Normalmente es una buena política.

Normalización Índices Des-normalización A veces la normalización es ineficiente. La redundancia puede producir incrementos de rendimiento significativos. Bases de datos con mucha lectura y poca escritura. Bases de datos con necesidades de latencias muy bajas.

Indice Normalización Índices 1 2 Normalización Índices 3 4 5

Normalización Índices Índices Estructuras auxiliares para búsquedas. Aceleran las consultas (cuando tienen datos suficientes). Pueden resolver la consulta entera (si los datos necesarios están contenidos). Hacen referencia a uno o mas campos. Los índices de varios campos tienen un orden concreto. (A,B)!= (B,A) Cada índice incrementa el espacio consumido y decrementa la velocidad de escritura.

Normalización Índices Arboles B Este es tipo de índice mas habitual. El formato interno del árbol depende del S.E. Este tipo de índice permite las siguientes consultas: El valor completo del índice. Valores en la parte izquierda del índice. Rangos de valores. Una parte exacta (a la izquierda), y el resto como un rango. Consultas de solo el índice.

Normalización Índices Tablas hash Para cada columna, se calcula un hash y se asocia al índice. Solo permite búsquedas exactas. Las búsquedas son muy rápidas. Es el tipo por defecto del S.E. Memory. Este modo no esta disponible en MyISAM o InnoDB, pero se puede emular.

Spatial indexes Normalización Índices Índices especiales para GIS.

Normalización Índices Full text Índices para búsquedas sobre el contenido. Solo disponibles en MyISAM (por ahora).

Normalización Índices Clustered indexes No es otro tipo de índice, es un concepto. Consiste en incluir los datos de la fila, dentro del índice de la clave primaria. Esto permite que la búsqueda de la clave primaria de como resultado la fila, sin necesidad de ningún salto extra. InnoDB implementa este tipo de árbol B.

Normalización Índices Coverage indexes Extraer los datos directamente del índice. Solo si todos los datos están contenidos en el índice. Supone un incremento significativo del rendimiento.

Indice El servidor La cache El parser El optimizador Storage Engines 1 2 3 El servidor La cache El parser El optimizador Storage Engines 4 5

El servidor La cache El parser El optimizador Storage Engines El servidor Espera las conexiones de los usuarios. Hace la autenticación de usuarios. Comprueba si la consulta esta en la cache. Si la consulta esta en la cache, devuelve el resultado. Si la consulta no esta en la cache, la pasa al parser.

Indice El servidor La cache El parser El optimizador Storage Engines 1 2 3 El servidor La cache El parser El optimizador Storage Engines 4 5

El servidor La cache El parser El optimizador Storage Engines La cache La cache almacena resultados asociados a hash de consultas. Cualquier modificación en una tabla relacionada con una consulta, caduca esa consulta.

Indice El servidor La cache El parser El optimizador Storage Engines 1 2 3 El servidor La cache El parser El optimizador Storage Engines 4 5

El servidor La cache El parser El optimizador Storage Engines El parser Recibe una consulta en SQL, y la convierte en una estructura de árbol. Pasa la estructura de árbol al optimizador.

Indice El servidor La cache El parser El optimizador Storage Engines 1 2 3 El servidor La cache El parser El optimizador Storage Engines 4 5

El servidor La cache El parser El optimizador Storage Engines El optimizador Utiliza la estructura de árbol para hacer optimizaciones. Mediante datos estadísticos del S.E. y algoritmos de optimización hace diferentes pruebas. Escoge la prueba que le haya dado un valor mas óptimo. Algunos ejemplos de algoritmos de optimización: Reordenación de Joins Aplicación de reglas algebraicas. Evaluación y reducción de expresiones constantes.... Como resultado del optimizador se obtiene el execution plan que se aplica a los S.E.

Indice El servidor La cache El parser El optimizador Storage Engines 1 2 3 El servidor La cache El parser El optimizador Storage Engines 4 5

El servidor La cache El parser El optimizador Storage Engines Recibe peticiones simples de acceso a datos. Mediante estas operaciones simples se satisface el execution plan. Cada S.E. tiene funcionalidades y capacidades diferentes.

El servidor La cache El parser El optimizador Storage Engines MyISAM El tipo por defecto de MySQL. Muy rápido Lock por tablas Índices B-Tree y Full-Text Tablas comprimidas (solo lectura)

El servidor La cache El parser El optimizador Storage Engines InnoDB Transaccional. Lock por filas. Integridad referencial. Índices B+Tree con clustered index.

El servidor La cache El parser El optimizador Storage Engines Memory (Heap) Tablas en memoria. Muy rápidas. Se pierden todos los datos al reiniciar el mysql. Índices Hash y B-Tree.

El servidor La cache El parser El optimizador Storage Engines CSV Lock por tabla. Gestiona los datos como ficheros CSV. Útil para gestionar datos compartidos con otras aplicaciones que solo entienden CSV.

El servidor La cache El parser El optimizador Storage Engines BlackHole Transaccional. Lock por filas. Descarta cualquier insert. El sistema de logs sigue funcionando.

El servidor La cache El parser El optimizador Storage Engines Archive Transaccional. Lock por filas. Base de datos orientada a escritura. Ideal para almacenar logs.

El servidor La cache El parser El optimizador Storage Engines Federated Tabla virtual, traduce las consultas a consultas DBMS. Por ahora solo permite acceso a otros MySQLs.

El servidor La cache El parser El optimizador Storage Engines Otros Maria BerkeleyDB Merge NDB Falcon...

Indice Estrategia de ejecución Analizando el rendimiento 1 2 3 4 Estrategia de ejecución Analizando el rendimiento 5

Estrategia de ejecución Analizando el rendimiento El cliente envía una query al servidor. Este comprueba si esta en la cache. Si esta, devuelve el resultado. Si no lo esta, pasa la query al parser. Este convierte la query en un árbol y lo pasa al optimizador. El optimizador procesa el árbol y obtiene un execution plan. Se ejecuta el execution plan sobre los S.E. que corresponda. Si es necesario se procesa el resultado en una tabla temporal. Se almacena en la cache el resultado, y se devuelve al cliente.

Indice Estrategia de ejecución Analizando el rendimiento 1 2 3 4 Estrategia de ejecución Analizando el rendimiento 5

Estrategia de ejecución Analizando el rendimiento Estrategia de ejecución Toda query en mysql es un join. Mysql crea un bucle de ejecución recursivo. Si tiene que buscar en n tablas busca en la primera. Cuando encuentra un resultado empieza a buscar en la segunda. Así hasta la ultima, en la cual, al encontrar resultado, devuelve la fila. Al terminar cualquiera de las tablas, hace backtracking.

Estrategia de ejecución Analizando el rendimiento Sobre la estrategia de ejecución Algunas optimizaciones se entienden por la estrategia de mysql. Es muy importante el orden de las tablas. Es muy importante la elección correcta de los índices.

Indice Estrategia de ejecución Analizando el rendimiento 1 2 3 4 Estrategia de ejecución Analizando el rendimiento 5

Estrategia de ejecución Analizando el rendimiento Errores comunes Solicitar mas columnas de las que necesitas. Solicitar mas filas de las que necesitas. Solicitar datos no indexados.

Estrategia de ejecución Analizando el rendimiento Analizando el rendimiento Log de consultas lentas Explain para ver el execution plan SHOW STATUS LIKE last query cost ; El query cost es por lo que se guía el optimizador para elegir el execution plan. El profiler de mysql.

Estrategia de ejecución Analizando el rendimiento Forzando las cosas Normalmente no es necesario forzar las cosas. STRAIGHT JOIN fuerza el orden de los joins al especificado en la consulta. USE INDEX, IGNORE INDEX o FORCE INDEX fuerza, usa o ignora un índice concreto. SQL CACHE o SQL NO CACHE le dice al mysql si es o no candidato para cache.

Indice Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster 1 2 3 4 5 Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster

Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster Escalado vertical Ampliar o mejorar el hardware. MySQL no se adapta muy bien al escalado vertical. Depende mucho del tipo de uso que se haga del MySQL.

Indice Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster 1 2 3 4 5 Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster

Escalado horizontal Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster Distribución de los datos. Varias opciones: Replicación (y uso de los esclavos para lectura). Distribución (por clave) Distribución (por funcionalidad) Combinación de las anteriores.

Indice Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster 1 2 3 4 5 Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster

Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster Escalado hacia atrás Eliminación de datos ya no necesarios. Datos de carácter histórico que pueden ser eliminados o migrados.

Indice Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster 1 2 3 4 5 Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster

Escalado vertical Escalado horizontal Escalado hacia atrás Escalado con cluster Escalado con cluster MySQL Cluster es una implementación de distribución de datos transparente. Distribuye los datos entre un conjunto de nodos. Da buen rendimiento para consultas simples y pocos datos. Se comporta mal con consultas complejas y que requieran comunicación entre nodos.

Otra información útil Cierre Referencias Manual oficial de mysql (mysql.com). O Reilly - High Performance MySQL (Second Edition). Apress - Pro MySQL.

Otra información útil Cierre Qué queda en el tintero? Alta disponibilidad Replicación Optimizaciones de configuración. Optimizaciones de SSOO. Optimizaciones de Hardware....

Dudas Otra información útil Cierre...

Fin Otra información útil Cierre Gracias por venir.