DesenoFisico MySQL

140
BD3: Dise˜ no F´ ısico - MySQL Bases de Datos III Dise˜ no F´ ısico - MySQL Enxe˜ nar´ ıa Inform´ atica Curso 2013/2014 Miguel R. Luaces Laboratorio de Bases de Datos Universidade da Coru˜ na Enxe˜ nar´ ıa Inform´ atica Miguel R. Luaces ([email protected]) - Juan Ram´on L´ opez Rodr´ ıguez

description

disño fisico Mysql

Transcript of DesenoFisico MySQL

Page 1: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Bases de Datos III

Diseno Fısico - MySQL

Enxenarıa Informatica

Curso 2013/2014

Miguel R. LuacesLaboratorio de Bases de Datos

Universidade da Coruna

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 2: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 3: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 4: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

MySQL Community Server

Version actual: 5.6.17

Documentacion: http://dev.mysql.com/doc/

Funciona sobre todas las plataformas: Mac OS X, Windows,GNU/Linux, Solaris, FreeBSD

Punto diferenciador: arquitectura diferente a otros SGBDs

Orientado a entornos de gran demanda (ej.: aplicaciones web)

OLTPAplicaciones incrustadasData warehouseIndexado de contenido

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 5: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

MariaDB

An enhanced, drop-in replacement for MySQL

Version actual: 5.5.36

Documentacion: https://kb.askmonty.org/en/

Funciona sobre todas las plataformas: Mac OS X, Windows,GNU/Linux

Mejoras sobre MySQL 5.5:

Mas motores de almacenamiento (ej.: No-SQL)OptimizacionesExtensiones (ej.: virtual columns)Completamente Open Source

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 6: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Arquitectura de MySQL

Clientes

Conexión / Control de subprocesos

Caché de consultas

Analizador sintáctico

optimizador

Motores de almacenamiento

API del motor de almacenamiento

(“Iniciar transacción”, “recuperar registro con

clave x”)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 7: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Arquitectura de MySQL

Cada consulta es atendida por un thread del pool servidor

La cache consultas almacena sentencias select junto con su resultado

Si la consulta no esta en cache, tras el analisis sintactico, se realizala optimizacion del plan de ejecucion

Reescritura de la consultaDeterminacion del orden de acceso a las tablasSeleccion de los ındices a utilizarInclusion de las caracterısticas especıficas de los motores dealmacenamiento

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 8: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Arquitectura de MySQL

Caracterıstica unica: separacion de tareas de servidor (conexiones,procesamiento de consultas, optimizacion) de tareas dealmacenamiento y recuperacion de datos

Se puede elegir el motor de almacenamiento a nivel de tabla

Se pueden cargar motores de almacenamiento en tiempo de ejecucion

Describiremos brevemente los siguientes aspectos de MySQL:

Control de concurrenciaGestion de transaccionesMotores de almacenamientoCriterios de seleccion

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 9: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Control de concurrencia

Los bloqueos permiten evitar que un cliente lea un fragmento dedatos mientras otro lo esta cambiando

Hay dos tipos de bloqueos: compartidos (lectura) y exclusivos(escritura)

Los SGBD permiten distintas granularidades a los bloqueos (tabla,pagina o fila)

Los bloqueos de fila minimizan la cantidad de datos por lo queaumenta la concurrencia

Los bloqueos de tabla minimizan el consumo de memoria por lo queaumenta el rendimiento

Cada motor de almacenamiento de MySQL define su propia polıticay granularidad. El servidor no es consciente de los bloqueos.

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 10: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Control de concurrencia

MyISAM, Memory y Merge realizan bloqueos a nivel de tabla

Cada motor lo implementa a su modo con optimizaciones paramejorar el rendimientoNecesita muy poca memoriaIdeal en el caso de que las lecturas sean mucho mas frecuentes quelas modificacionesEs eficiente en el caso de modificaciones simultaneas en varias filas

InnoDB realiza bloqueos a nivel de fila

Permite la maxima concurrencia a costa de mayor consumo dememoriaIdeal en el caso de cambios frecuentes o transacciones largasEs muy eficiente en el caso de cancelacion de transacciones

El servidor de MySQL puede bloquear tablas independiente del motorpara garantizar correccion de sentencias DDL como ALTER TABLE

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 11: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Gestion de transacciones

MySQL incluye motores transaccionales (InnoDB) y notransaccionales (MyISAM, Memory)

El estandar SQL define cuatro niveles de aislamiento:

Read uncommitedRead commitedRepeatable readSerializable

Las figuras de las siguientes diapositivas se extrajeron de aquı:http://www.byteslounge.com/tutorials/spring-transaction-isolation-tutorial

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 12: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Gestion de transacciones

Read uncommited

No hay bloqueos, por lo que una transaccion lee datos sin confirmarde otra transaccionPermite lecturas sucias porque la segunda transaccion podrıa sercancelada

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 13: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Gestion de transacciones

Read commited

Los bloqueos de escritura se mantienen hasta el fin de la transaccionLos de lectura se liberan al finalizar la lecturaUna transaccion solo lee datos de transacciones confirmadasPermite lecturas no-repetibles porque los datos podrıan cambiardespues de leidos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 14: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Gestion de transacciones

Repeatable read

Todos los bloqueos se mantienen durante toda la transaccionCualquier fila que lea una transaccion sera igual en sucesivas lecturasComo no hay bloqueo de rangos, permite lecturas fantasmaEs la predeterminada en InnoDB

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 15: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Gestion de transacciones

Serializable

Aislamiento completo de las transacciones usando bloqueos de rango.InnoDB permite el nivel de aislamiento serializable medianteMultiversion Concurrency Control (MVCC)

Mantiene instantaneas de los datos tal y como existıan en undeterminado momentoDiferentes transacciones ven simultaneamente datos distintos en lasmismas tablasEvita la necesidad de bloquear filas en modo lectura

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 16: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Gestion de transacciones

Interbloqueos (Deadlocks)

El funcionamiento de los bloqueos es especıfico del motor dealmacenamientoLos interbloqueos son inevitables ya que ocurren por conflictos realesen las transaccionesLos interbloqueos producen consultas lentas o que sobrepasan tiempomaximoLa solucion consiste en reanudar alguna de las transaccionesInnoDB detecta dependencias circulares y reanuda la transaccion conlos bloqueos de fila menos exclusivos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 17: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Gestion de transacciones

Registro de transacciones (Write-ahead logging)

El almacenamiento inmediato de los cambios en los datos es lentoLos cambios realizan en la copia en memoria de la pagina de discoEl almacenamiento en disco se realiza mediante un registro detransacciones usando escritura secuencial (y por tanto, rapida)Los datos en disco se escriben cuando la pagina se elimina dememoriaEn caso de fallo del servidor, los cambios se pueden recuperar

Uso de varios motores de almacenamiento en transacciones

Cada motor de almacenamiento gestiona el funcionamiento de lastransaccionesNo se pueden combinar de forma fiable motores de almacenamientodiferentes en una transaccionPor ejemplo, los cambios en tablas MyISAM no se pueden deshacercon un rollbackMySQL no informa del error de ninguna manera

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 18: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: MyISAM

Motor predeterminado para las tablas hasta MySQL 5.1

No soporta transacciones ni claves foraneas, y solo permite bloqueosa nivel de tabla

El tamano maximo de una tabla es 256 TB

Cada tabla se almacena en un fichero del sistema operativo

Variantes:

Tablas con filas de tamano fijo (estaticas) y tamano variable(dinamicas)Tablas comprimidas y de solo lectura

El espacio usado en disco es mınimoOptimo para soportes de solo lectura y/o lentosSe construyen con la utilidad myisampack

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 19: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: InnoDB

Motor predeterminado para las tablas desde MySQL 5.5Soporta transacciones, claves foraneasy bloqueos a nivel de filaEl tamano maximo de una tabla es 64 TBLas tablas se almacenan en archivos de datos administrados por elmotor y que pueden utilizar particiones raw

Indices agrupados (clustered indexes)Se crea un ındice para la clave principal de la tabla que se almacenaen las mismas paginas que las filasLas busquedas por clave principal son rapidas porque ahorran unacceso a discoLos ındices secundarios (todos los demas) siempre incluyen losatributos de la clave principal para usar el ındice agrupado en lasbusquedas

Inconvenientes:Tiene problemas de escalabilidad debido al soporte transaccionalCambios en la estructura de las tablas implican copiar todos losdatos y recrear los ındices

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 20: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: Memory

Tablas que se guardan en la memoria del servidor y que no permitenla persistencia

No soportan transacciones ni claves foraneas. Los bloqueos son anivel de tabla

El tamano maximo de una tabla depende de la memoria del servidor

Permite un acceso muy rapido a los datos (un orden de magnitudmas rapido que el motor MyISAM)

El espacio ocupado por una tabla solo se devuelve al borrar o recrearla tabla

Ejemplos de posibles usos:

Tablas de busqueda rapida (i.e. codigos postales)Guardar en cache datos agregados periodicamenteResultados intermedios de procesosMySQL lo usa para procesar consultas que necesitan tablastemporales

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 21: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: otros

Motor Merge

Combinacion de varias tablas MyISAM en una unica tabla virtualPermite la particion de informacion en diferentes bloquesPosibles usos: gestion de archivos de log, superar la limitacion detamano de archivo del SO

Motor Blackhole

No almacena datos. Todas las inserciones se descartanMantiene un registro de operaciones realizadasPosibles usos: auditorıa, algunas configuraciones de replicacion

Motor CSV

Tablas creadas sobre archivos con valores separados por comas(comma-separated values)No admite ındicesPosibles usos: intercambio de datos con aplicaciones externas

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 22: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: seleccion

Dado que podemos elegir el motor de almacenamiento para cadatabla, necesitamos conocer como se va a utilizar cada tabla, comofunciona la aplicacion, y su evolucion potencial

En funcion del uso de transacciones:

Si la aplicacion requiere transacciones, la unica opcion es InnoDBSi no requieren transacciones y las consultas son SELECT e INSERT,MyISAM es buena opcion

En funcion de la concurrencia en las operaciones:

Depende de la carga de trabajo esperadaSi solo hay inserciones y lecturas: MyISAMSi queremos una mezcla de operaciones concurrentes sininterferencia, necesitamos un motor con bloqueo a nivel de fila(InnoDB)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 23: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: seleccion

En funcion de las copias de seguridad:

Algunos motores (InnoDB) no permiten la copia de seguridad con elSGBD on-lineSi se puede detener el servidor: cualquier motor.El uso de multiples motores complica el proceso de copia deseguridad

En funcion de la necesidad de operaciones especiales:

Solo InnoDB incluye ındices agrupados y optimizaciones basadas enellosInnoDB solo permite busquedas de texto completo desde la version5.6.4

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 24: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: cambios

Metodos para el cambio de motor de almacenamiento de tablas

Mediante la sentencia ALTER TABLERealizando una copia de seguridad, y editando el fichero de volcadoCreando una nueva tabla e insertando los datos mediante unasentencia INSERT INTO

En todos los casos, las opciones especıficas del motor dealmacenamiento se pierden

Todos los metodos son lentos pues implican la copia de los datos

El metodo basado en ALTER TABLE implica un bloqueo deescritura en la tabla

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 25: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: ejemplos

Registro de llamadas de central telefonica en tiempo realLa velocidad es el requisito principal. MyISAM impone unasobrecarga baja y permite miles de inserciones por segundoSi son necesarios informes de resumen, la recopilacion de datosralentiza las insercionesAlternativas:

Realizar la recopilacion en horas de poca cargaReplicar la base de datos en un segundo servidor esclavo en el que seharan las consultasParticionar el registro de llamadas por mes, semana o dıa, y crear unatabla de tipo Merge para las consultas

Servicio de cotizacionesSi es una herramienta de consumo interno con un numero limitadode usuarios, MyISAMSi es un servicio web con mucho trafico, miles de usuarios yalimentacion de cotizaciones en tiempo real, InnoDB

Una consulta no debe esperarMiles de usuarios intentando leer mientras simultaneamente seactualizan filas requiere bloqueos a nivel de fila

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 26: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Introduccion a MySQL

Motores de almacenamiento: ejemplos

Boletines de anuncios y foros de discusion

Cientos de aplicaciones PHP y Perl que dan soporte a este tipo desitios WebNo suelen tener en cuenta la eficiencia de la BD

Ejecutan muchas consultas para cada solicitud que sirvenMuchos usan tablas monolıticas con mucha actividad pesada delectura y escrituraLa carga suele ser mediana o pequena, MyISAM no es imprescindibleInnoDB no es capa de ejecutar rapidamente esta consulta sinoptimizaciones por parte del usuario

SELECT COUNT(*) FROM TABLE

Aplicaciones distribuidas en DVD / USB

El motor MyISAM trabaja directamente sobre el sistema de ficherosUtilizando el formato comprimido se optimiza el acceso a disco,aunque la BD es de solo lectura

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 27: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 28: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Definicion de replicacion

Consiste en configurar uno o varios servidores como esclavos - oreplicas - de otro servidor

Problema a resolver: mantener los datos de los servidoressincronizados

Base para construir aplicaciones extensas y de alto rendimiento

Admite diferentes topologıas

Muchos esclavos pueden conectarse a un maestroUn esclavo puede, a su vez, actuar como maestro

Se puede replicar:

todo el servidordeterminadas bases de datossolo algunas tablas

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 29: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Problemas resueltos por la replicacion

Distribucion de datosNo exige un ancho de banda intensivo y funciona con una conexionintermitenteUtil para mantener una copia de los datos en una ubicaciongeograficamente distante

Balanceo de cargaPermite distribuir peticiones de datos entre varios servidores

Alta disponibilidad y failoverLos esclavos ayudan a reducir el tiempo de caıda del servidor principal

Prueba de actualizaciones de MySQLConfiguramos un servidor esclavo con la nueva version de MySQL, yla utilizamos para ver que las aplicaciones siguen funcionando

Copias de seguridadLa carga de la copia se realiza sobre el esclavo, no sobre el servidororiginalUn servidor replicado no es una copia de seguridad

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 30: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Funcionamiento de la replicacion

El maestro registra todos sus cambios como eventos del registrobinario (binary log)El esclavo copia los eventos del registro binario a su registro derepeticion (relay log)El esclavo repite todos los eventos del registro de repeticion sobresus propios datos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 31: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Funcionamiento de la replicacion

El registro binario de mySQL:

Registra todas las operaciones del servidor que modifican datos (opodrıan modificarlos, por ejemplo, un DELETE con filtro) conindependencia de los motores de almacenamiento

Esta formado por una secuencia de eventos, cada de uno de ellosformado por:

La fecha y hora del evento (un timestamp)Identificador del servidor de origen (evita bucles infinitos)Byte de desplazamiento del evento siguienteId del thread que ejecuto el evento en el servidor de origenTipo de evento (por ejemplo, Query)Detalles del evento

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 32: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Funcionamiento de la replicacion

El registro binario de mySQL permite tres tipos de replicacion:

Basada en sentencias (statement-based replication)Se registra la instruccion que cambia los datos en el maestroLa utilizada por defecto. Sencilla de implementar y compacta.Estable desde MySQL 3.23Hay instrucciones que no se pueden replicar (detalles en el manual)

Basada en filas (row-based replication)Se registran las filas cambiadas y el cambio realizadoPermite la replicacion de cualquier instruccionEl registro aumenta de tamanoNo es facil auditar los cambios realizados

Mixta (mixed-format replication)MySQL decide en funcion de la instruccion que se ejecuta si se usareplicacion basada en sentencias o en filasSe usa la replicacion basada en sentencias a no ser que la instruccionno sea seguraVer la descripcion en el manual

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 33: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Funcionamiento de la replicacion

El proceso para configurar la replicacion es el siguiente:

Configurar cuentas de replicacion en cada servidor

El thread E/S del esclavo hace una conexion TCP/IP al maestropara leer el registro binario. Por lo tanto, necesita una cuenta deusuario en el maestro con los permisos apropiados

Configurar maestro

Activar el registro binario y asignarle un id al servidor

Configurar esclavo

Asignarle un id al servidor y activar el registro de repeticionInidicar al esclavo como conectarse al maestro y desde que punto delregistro binario hay que replicarOpcionalmente, activar el registro binario y configurar suactualizacion

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 34: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Funcionamiento de la replicacion

Es posible replicar solo parte de los eventos de un servidor,utilizando diferentes tipos de filtros

Filtros sobre el registro binario del maestroFiltros sobre el registro de repeticion

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 35: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Las restricciones en la replicacion son las siguientes:

Cada esclavo solo puede tener un maestroUn maestro puede tener muchos esclavosUn esclavo puede actuar tambien como maestro

Estas restricciones permiten diferentes topologıas con diferentesaplicaciones

Un maestro, multiples esclavosMaestro-maestro en modo activo-activoMaestro-maestro en modo activo-pasivoAnilloMaestro, maestro de distribucion, esclavosArbol o piramide

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 36: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Un maestro, multiples esclavos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 37: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Un maestro, multiples esclavos

La topologıa mas sencilla y mas comun

Todas las escrituras se realizan en el maestro, las lecturas se puedenrealizar en cualquier servidor

El numero de esclavos esta limitado por la capacidad deprocesamiento y el ancho de banda del maestro

Variantes:

Usar cada esclavo para funciones diferentes (ej.: ındices diferentes,motores diferentes)Tener un esclavo en un centro remoto para recuperarse de undesastreRetrasar un esclavo en el tiempo para facilitar la recuperacionUtilizar un esclavo para copia de seguridad, para pruebas o paradesarrollo

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 38: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Maestro-maestro en modo activo-activo

Cada maestro es a su vez esclavo del otroCualquier servidor se puede utilizar para cualquier operacionPosible uso: oficinas separadas geograficamente, donde cada oficinanecesita su copia local de los datosProblemas: cambios conflictivos

Actualizacion simultanea de la misma fila en ambos servidoresInserciones simultaneas con columnas AUTO INCREMENT¿Y si la replicacion se detiene por un tiempo? ¿Como reenganchamosdespues?

Solo se recomienda si tenemos datos bien particionados y buenreparto de privilegios

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 39: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Maestro-maestro en modo activo-pasivo

Uno de los servidores es un servidor “pasivo” de solo lecturaPermite intercambiar los papeles de forma muy sencilla: lasconfiguraciones son simetricasMantenimiento, optimizacion de tablas, actualizaciones del sistemaoperativo no implican inactividad del sistema.Por ejemplo, ALTER TABLE bloquea toda la tabla, incluyendolecturas y escrituras sobre la misma. Para no ralentizar el sistema:

Detenemos los hilos esclavos en el maestro activoHacemos el cambio en el maestro pasivoCambiamos los papeles de activo y pasivoReiniciamos los hilos esclavos en el antiguo maestro activo

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 40: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Anillo

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 41: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Anillo

Tres o mas maestros

Cada servidor es un esclavo del servidor que esta antes en el anillo, ymaestro del servidor que esta despues

Configuracion simetrica, failover facil.

Es una configuracion fragil:

Depende enormemente de que todos los nodos funcionencorrectamenteDifıcil que esten todos sincronizados a la vez: detener algun nodo escomplicadoSi eliminamos un nodo sin tener cuidado, sus eventos puedenpropagarse de forma infinita por el anillo. ¡El unico nodo que filtra unevento es el que lo ha generado!

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 42: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Maestro, maestro de distribucion, esclavos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 43: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Maestro, maestro de distribucion, esclavos

Similar a la topologıa maestro-esclavos, pero no sobrecarga almaestro principal

El maestro principal solo tiene un esclavo que a su vez actua comomaestro de distribucion

El maestro de distribucion usa el motor BlackHole que graba en elregistro binario pero no mantiene tablas ni datos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 44: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Arbol o piramide

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 45: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Topologıas de replicacion

Arbol o piramide

Si hay muchos esclavos, puede ser mas rentable un diseno enpiramide

Esto alivia la carga del maestro y la redistribuye por los diferentesesclavos

Desventaja: fallos en niveles intermedios afectan a un gran numerode servidores

Ademas, cuantos mas niveles intermedios, mas difıcil y complicadoes manejar los fallos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 46: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Replicacion

Problemas en la replicacion

La replicacion implica varias tareas complejas:

Medir el desfase de los esclavos para saber en que estado seencuentran

Determinar la consistencia de los esclavos con respecto al maestro

Resincronizar un esclavo con el maestro

Intercambiar un esclavo por un maestro

La replicacion solo escala las lecturas, no las escrituras

La distribucion de la carga debe ser realizada por otro software

La complejidad de la replicacion se ve claramente en la longitud dela seccion del manual

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 47: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 48: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Introduccion

Recuperacion no es restauracionRestaurar: recuperar datos desde una copia de seguridad y cargarlosen una base de datosRecuperar: todo el proceso de rescatar un sistema o parte de el.Incluye todos los pasos para lograr que un servidor vuelva a sercompletamente funcional y operativo:

Restaurar copia de seguridadReiniciar servidorCambiar configuracionCalentar las caches del servidor

Utilidades de las copias de seguridadRecuperacion ante desastres. Un error importante corrompe los datoso el servidorRecuperacion ante cambios no deseados. La gente cambia de idea, yocurre mas a menudo que los desastresAuditorıas. Necesidad de recuperar datos o esquema en algunmomento del pasado (ej. temas judiciales)Pruebas. La manera mas facil de cargar un servidor de pruebas condatos es usando una copia de seguridad

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 49: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Introduccion

El mejor sistema de copias de seguridad no es suficiente. Un buenplan de recuperacion es fundamental

El procedimiento de recuperacion es complejo. Es facil cometererroresLas copias de seguridad son rutinarias y no se realizan bajosituaciones de presion extrema. La recuperacion se hace en medio deuna situacion de crisisUna persona puede planear, disenar e implementar las copias deseguridad, pero podrıa no estar disponible cuando se produzca eldesastre. Es necesario formar a personal cualificado para que seencargue de la recuperacion

Alternativas que no son copias de seguridad

La replicacion no es una copia de seguridadUsar discos en RAID¿Como nos recuperamos en estos casos de un DROP DATABASE?

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 50: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Estrategia para la copia de seguridad

No olvidar realizar copias de seguridad de recursos no obvios

Registro binario y registro de transacciones de InnoDBCodigo: disparadores y procedimientos almacenados (estan en la BDmysql)Configuracion del servidor y de la replicacionFicheros seleccionados del SO (trabajos cron, configuraciones deusuario y de grupo, scripts administrativos, reglas sud0, etc)

¿Que podemos permitirnos perder?La respuesta a esa pregunta guıa la estrategia de copia de seguridad

¿Basta con la copia de la noche anterior y podemos perder el trabajode hoy?¿Necesitamos retroceder a un instante de tiempo predeterminado?

Cuanto mas nos permitamos perder, mas facil es hacer la copiaLas copias de seguridad en MySQL son mucho mas complicadas delo que parece

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 51: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Tipos de copia de seguridad

¿Copias calientes, templadas o frıas?

Calientes: sin detener el servidor ni bloquear las tablasTempladas: sin detener el servidor pero bloqueando las tablasFrıas: deteniendo el servidor

¿Copias logicas o sin procesar?

Copia logica: en un formato que MySQL puede interpretar (SQL,CSV)Copia sin procesar: los archivos de mySQL tal y como estanalmacenados en disco

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 52: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Tipos de copia de seguridad

Inconvenientes de copias calientes

Buferes sucios en el grupo de buffers de InnoDB (u otras caches)Datos modificados mientras se esta haciendo la copia

Inconvenientes de copias frias

Desconectar servidor es costoso, aun si se minimiza el tiempo decopia de seguridadLas paginas sucias en grupo de buffers InnoDB requieren tiempo paravolcarse a discoReiniciar tambien requiere tiempo: abrir tablas, calentar caches, etc.

Inconvenientes de copias templadas

Tiempo de espera indeterminado debido al proceso de adquirirbloqueos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 53: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Tipos de copia de seguridad

Ventajas de las copias logicas

Archivos que se pueden manipular e inspeccionar con editores detextosFaciles de restaurarSe pueden restaurar en una maquina diferenteIndependientes del motor de almacenamientoSe pueden retocar para exportar a otros SGBD

Desventajas de las copias logicas

El servidor debe hacer el trabajo de generarlasPueden llegar a ocupar mucho mas que los datos en algunos casosLa reconstruccion implica volver a ejecutar todas las sentencias yregenerar todos los ındices.

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 54: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Tipos de copia de seguridad

Ventajas de las copias sin procesar

No hay trabajo adicional: se copian los archivos tal cualLa restauracion puede ser sencillısima: para MyISAM, simplementecopiar los archivos en su sitio; InnoDB, en cambio, obliga a detenerel servidorLa restauracion es mas rapida: no hay que ejecutar sentencias, nireconstruir ındices

Desventajas de las copias sin procesar

Suelen ocupar mucho mas espacio que las copias logicas (porejemplo, el espacio de tabla InnoDB incluye mucho espacio sinutilizar)No siempre se pueden mover a traves de las plataformas, SO yversiones de SQL (mayusculas/minusculas, representacion puntoflotante)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 55: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Procedimiento de copia logica

Copia

Realizar un volcado SQL con mysqldump o CSV con SELECT *INTO OUTFILE

Restauracion

Ejecutar el script SQL o importar el CSV con LOAD DATA INFILEINTO TABLE

Problemas:

En el volcado SQL los esquemas y datos almacenados juntos, en elvolcado CSV no hay esquemasLos archivos pueden ser enormes (y los editores de texto no podranabrirlos)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 56: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Procedimiento de copia logica

Hay que asegurar que los datos son consistentes en un punto detiempo determinado (por ejemplo, en una BD de comercioelectronico debe haber una factura por cada pago). Es complicadoen copias calientes

En motores transaccionales: realizar la copia en una transaccionEn motores no transaccionales, bloquear todas las tablas que sedeben copiar juntasEsto no nos protege de una aplicacion mal disenada (por ejemplo, siel pago y la factura se registran en dos transacciones distintas)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 57: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Procedimiento de copia sin procesar

Copia

MyISAM: bloquear las tablas y copiar los archivos de datosInnoDB:

Bloquear las tablas no es suficiente porque los cambios se reflejan enel registro de transacciones y no en el espacio de tablasAlternativa: parar el servidor o usar tecnicas de gestion de ficheros delSO (por ejemplo, LVM)

Restauracion:

MyISAM: bloquear las tablas y copiar los archivos de datosInnoDB: parar el servidor y sustituir los archivos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 58: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Copia de seguridad y recuperacion

Procedimiento de copias de seguridad incrementales

Activar el registro binario de mySQL

Copia:

Realizar copias completas con los procedimientos anterioresRealizar copias incrementales del registro binario

Restauracion:

Restaurar la copia completa y ejecutar todos los registro binarios

Restauracion a un punto concreto del tiempo

Localizar el punto de tiempo en los registros binarios y ejecutar hastaesa posicion

Eliminar el resultado de una instruccion

Localizar la instruccion y ejecutar el registro binario hasta esaposicion y desde despues de esa posicion

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 59: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 60: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento y perfilado

El objetivo de la optimizacion es aumentar el rendimiento de MySQL

Los elementos a optimizar son muchos. Ej: esquemas, ındices,consultas, configuracion del servidor, hardware, software, aplicaciones

Necesitamos dos practicas basicas:Medicion del rendimiento. Responde a ¿Como se ejecuta?

Permiten evaluar el desempeno del SGBDPermiten determinar la capacidad maxima del sistemaPermiten discriminar los cambios que importan de los que noMuestran como se ejecuta la aplicacion con datos diferentes

Perfilado. Responde a ¿Por que se ejecuta ası?

Indica cuanto contribuye cada elemento de un sistema al coste deproducir el resultadoLugares donde se pierde mas tiempoLugares donde se consumen mas recursos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 61: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Contenidos

1 Introduccion a MySQL

2 Replicacion

3 Copia de seguridad y recuperacion

4 Medicion de rendimiento y perfilado

Medicion del rendimiento

Perfilado de aplicaciones

5 Optimizacion

Optimizacion de esquemas e ındices

Optimizacion de hw. y sw.

Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 62: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Objetivos de las medidas

Las medidas de rendimiento permiten realizar las siguientes tareas:

Medir rendimiento actual de nuestra aplicacion

Necesario para poder comparar efecto de cambiosDiagnosticar problemas no previstos

Validar la escalabilidad del sistema

Pruebas comparativas con cargas masivas

Planificar el crecimiento

Estimar hw., capacidad de red y otros recursos para la carga futuraprevista

Probar la capacidad de adaptacion a entornos cambiantes

Picos esporadicos, configuraciones diferentes de servidores

Probar configuraciones diferentes de hw., sw. y so.

¿RAID5 o RAID10? ¿nucleo 2.4 o 2.6 de Linux? ¿escala bien condoble de memoria?

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 63: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Estrategias para medir

Existen dos estrategias en la medida de rendimiento:

Aplicacion como un todo

La preocupacion ultima es el rendimiento de toda la aplicacionMySQL no es siempre el cuello de botella. Una prueba de pilacompleta pude revelarloLos puntos de referencia para medir rendimiento son buenos sireflejan el comportamiento real de toda la aplicacion. Es mas difıcil sisolo probamos una parte de ella

Aislar mySQL (SGBD, en general)

Es difıcil aislar puntos de referencia y de configuracion de laaplicacionAcercamiento paulatino: empezar por mySQLInteresan medidas de rendimiento cortas, con “tiempo de ciclo mascorto”Facil aislar consultas tıpicas y repetirlas muchas veces

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 64: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Ejemplos de medidas de rendimiento

Transacciones por unidad de tiempo (clasica)

Se ajusta bien a aplicaciones interactivas de multiples usuarios, OLTPUnidad tıpica: transacciones por segundo

Tiempo de respuesta (latencia)

Mide tiempo total requerido por una tarea (ej: milesimas, minutos)La ejecucion repetida permite derivar tiempos de respuesta mınimo,maximo o medioLos tiempos mınimos y maximos no son muy utiles porque no sonrepetibles, cuanto mas tiempo se ejecute la medida, mas extremosseran, y varıan mucho entre diferentes ejecucionesEn general es mejor agregar utilizando percentiles (ej: el 95 % de lasrespuestas se responden en menos de 5 ms)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 65: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Ejemplos de medidas de rendimiento

Concurrencia

Medimos el rendimiento de la aplicacion bajo diferentes niveles deconcurrenciaUn ejemplo de medida: numero solicitudes atendidas respecto a lassolicitadas en un segundoEs importante mediar las consultas que se realizan, no las conexionesestablecidas, ya que los servidores y los clientes actuales incluyen un poolde conexionesNo solo es un resultado, tambien es una propiedad que debemosconfigurar en nuestras pruebas

Escalabilidad

Util en sistemas que tienen que mantener un rendimiento estable bajocarga de trabajo cambianteGeneralmente se utilizan medidas de tiempo de respuesta probando condiferentes intensidades de cargaLa intensidad de carga se varia cambiando (entre otros):

El tamano de la base datosEl numero de conexiones concurrentesEl hw. disponible

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 66: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Errores comunes en las medidas

Algunos errores comunes en la definicion de medidas de rendimiento:

Usar un subconjunto no representativo de los datos

Utilizar datos sinteticos distribuidos uniformemente

Definir un escenario con un solo usuario

Medir en un solo servidor el rendimiento de una aplicacion distribuida

Fallo en imitar el comportamiento del usuario: clics en vınculos unotras otro sin parar, en una aplicacion web

Ejecutar consultas identicas en un bucle, olvidando posibles perdidasen cache

No detectar los errores en el proceso de medida (ej: que unaoperacion lenta se agilice mucho puede ser debido a un error desintaxis en SQL)

Olvidar tener en cuenta latencia del servidor despues de reinicio

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 67: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Planificacion de medidas de rendimiento

Proceso de planificacion de una medida de rendimiento

Identificar el objetivo de la medida y definir indicadores paraevaluarlo

Un objetivo mal definido: “El nuevo ındice agiliza las consultas”Un objetivo bien definido: “El nuevo ındice reduce el tiempo derespuesta de la consulta en un 10 %”

Decidir si usaremos una prueba estandar o una prueba de disenopropio

Definir un plan de toma de medidas porque tendremos que repetir laprueba varias veces y necesitamos reproducirla exactamente

Datos de partida de la pruebaPasos seguidos para configurar sistemaPlan de calentamientoDocumentacion de los parametrosAlmacenamiento de los resultados

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 68: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Planificacion de medidas de rendimiento

Proceso de planificacion de una medida de rendimiento

Realizar la toma de medidas

Usar diferentes intervalos de tiempo para cubrir todas las actividades delsistemaDebemos asegurar que la prueba es significativa y repetible (ej: usandouna instantanea de los datos, usando el servidor en caliente)Debemos tener cuidado con la carga externa y con las tareas periodicasCambiar la menor cantidad de parametros posible en cada prueba (losindependientes)Es recomendable automatizar las ejecuciones de las pruebas (scripts,makefiles)El numero de repeticiones depende del grado de certeza que se quieraalcanzar. Comunmente:

Ejecutar varias veces y eliminar los resultados discrepantesEjecutar hasta que los resultados no varıen demasiado (reducir la varianza)Utilizar tecnicas estadısticas

Analizar los resultados

Los resultados agregados permiten dar una idea general de la medidaLos resultados detallados permiten detectar picos ocultos por laagregacion

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 69: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Herramientas para medidas de rendimiento

Herramientas especıficas de mySQL

mysqlslap

Incluido desde la version 5.1 con mySQLSimula carga en el servidor e informa sobre el tiempoMuy configurable, ej: numero de conexiones concurrentesPermite una instruccion SQL en lınea de comandos o un archivo coninstrucciones SQL

MySQL Benchmark suite

Incluido desde la version 5.0 con mySQLMide lo rapido que ejecuta el servidor las consultasMuchas pruebas predefinidas, que permiten comparar diferentesmotores de almacenamiento y configuracionesMejorable (un solo usuario, el conjunto de datos es pequeno, y usaun solo proceso (no multiples CPU)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 70: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Herramientas para medidas de rendimiento

Herramientas especıficas de mySQL

sysbench

Tests predefinidos para medir rendimiento de servidor y SGBDPruebas de rendimiento de CPU, memoria, threads, etc.Pruebas de rendimiento de la E/S de archivos: comparar discosduros, tarjetas RAID, modos RAID, etc.Pruebas de comparacion OLTPDesarrollo parado

Super Smack

Pruebas de comparacion + Prueba de estres + Herramienta degeneracion de carga para MySQL y PostgreSQLMultiples usuarios, carga datos de prueba (aleatorios)Lenguaje neutro (smack) para definir clientes, tablas, consultas, etc.Desarrollo parado

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 71: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Medicion del rendimiento

Herramientas para medidas de rendimiento

Herramientas de pila completa

Ab

Incluida con el servidor HTTP ApacheCalcula el numero de solicitudes que puede servir por segundoSolo prueba una URL todo lo rapido que pueda

httpload

Utiliza un archivo de entrada con muchas URLs de las que eligealeatoriamentePrueba lo mas rapido que pueda, o segun una velocidad establecida(-rate)Tambien simula usuarios concurrentes (-parallel)

JMeter

Aplicacion Java para medir el rendimiento de otros programasSimula usuarios reales (tiempo de escalada configurable)Interfaz grafica que permite reproducir prueba fuera de lınea

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 72: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Perfilado de aplicaciones

Contenidos

1 Introduccion a MySQL

2 Replicacion

3 Copia de seguridad y recuperacion

4 Medicion de rendimiento y perfilado

Medicion del rendimiento

Perfilado de aplicaciones

5 Optimizacion

Optimizacion de esquemas e ındices

Optimizacion de hw. y sw.

Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 73: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Perfilado de aplicaciones

Objetivos del perfilado

El perfilado de un sistema nos indica cuanto contribuye cadaelemento al coste total de produccion de un resultado

Permite entender por que un sistema se ejecuta como lo hace

Es necesesario considerar el sistema completo porque:Si nos centramos en ejecutar, analizar, y optimizar consultasperdemos mucha informacion

Procesamiento de resultados en memoriaLlamadas a recursos externosAlgoritmos poco optimos

Si nos limitamos a medir tiempo de respuesta del servidor web

No tenemos estadısticas del sistema que permitan determinar queesfuerzo permite una mayor mejora

El cuello de botella puede estar en otra parte.

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 74: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Perfilado de aplicaciones

Proceso de perfilado

Es necesario incluir codigo de perfilado en las aplicaciones que tomemediciones de:

Tiempo total de ejecucion de la paginaTiempo de ejecucion de las consultasTiempo de llamadas a recursos externos (servicios web)

Es una sobrecarga al sistema, por lo que es necesario aplicar tacticascomo

Solo realizar el perfilado en un porcentaje pequeno de las peticionesGuardar los datos en memoria y hacerlos persistentes en bloque

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 75: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Perfilado de aplicaciones

Perfilado en MySQL

MySQL mantiene dos registros de consultas: el registro general y elregistro de consultas lentas

El registro general

Se guardan todas las consultas que se reciben aunque por error no seterminen ejecutandoSe guardan los eventos de conexion y desconexionSin tiempos de ejecucion: de poco interes para el perfilado

El registro de consultas lentas

Registra las consultas ejecutadas que sobrepasan un determinadotiempoSe puede configurar para registrar tambien las consultas que noutilizan ındicesGuarda tiempos de ejecucion: permite perfiladoEs difıcil de utilizar:

Una consulta es lenta porque tarda mas de lo esperado, no porquetarda mas que un umbral de tiempoHay consultas que no tienen que usar el ındice de ningun modo

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 76: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Medicion de rendimiento y perfilado

Perfilado de aplicaciones

Perfilado en MySQL

Desde la version 5.1.28, MySQL permite realizar perfilado de losrecursos usados en una sesion

Se activa mediante la variable profilingSe consulta mediante SHOW PROFILES y SHOW PROFILE [FORQUERY n]Registra multitud de variables para cada uno de los estados de todaslas consultas ejecutadasLos datos se pueden consultar agregados o a nivel de consultaindividualLos datos se guardan en memoria mientras dure la sesion

La estrategia de analisis de resultados puede ser:

Comprobar que consultas tienen mas impactoComprobar el plan de ejecucion de esas consultas con EXPLAINRealizar los ajustes necesariosRepetir el analisis

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 77: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 78: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Optimizacion de esquemas e ındices

Optimizar esquema mal disenado o mal indizado mejora delrendimiento en ordenes de magnitud

Sin embargo, hay que tener cuidado con los efectos secundarios

Un nuevo ındice INSERT y UPDATE mas lentasLas tablas de resumen y los contadores agilizan consultas, pero elmantenimiento es mas costosoLos cambios requieren conocer todo el sistema y cada elementoafectado

Describiremos estas tecnicas:

Eleccion de tipos de datos optimos y seleccion de clave primariaDistintos tipos de ındices: B+, Hash y agrupadosEstrategias de indexadoIndices para ordenacionTablas de cache y de resumenTablas de contadoresDesnormalizacion

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 79: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Eleccion de tipos de datos optimos

Elegir adecuadamente el tamano es importante

Usar el tipo de datos mas pequeno posible

Menos espacio en disco, memoria y CPU

Cuanto mas sencillos mejor

Tipos de datos simples, menos ciclos de CPU.Por ejemplo, enteros para IPs, y no cadenas (una IP es un entero de32 bits sin signo): INET ATON(), INET NTOA()

Evitar valores NULL. Indicar NOT NULL siempre que sea posible

Complicado optimizar si hay columnas con valores NULLColumnas NULL usan mas espacio de almacenamiento y requierenprocesamiento especial. (i.e. byte adicional en ındice)A ser posible, usar cero, valor especial, cadena vacıa, . . .

Proceso:

Paso 1: Determinar tipo de datos: numerico, cadena, temporalPaso 2: Elegir tipo especıfico

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 80: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Eleccion de tipos de datos optimos

DATETIME vs. TIMESTAMPDatetime: Entero empaquetado (YYYMMDDHHMMSS) de 8 bytes.Mayor rango de valores (1001-9999, con precision de 1 segundo).Timestamp: Entero de 4 bytes. Numero de segundos desde 0:00 del1/1/1970 en meridiano Greenwich. Mitad de espacio y utiliza zonahoraria.

CHAR vs. VARCHARCHAR

Longitud fijaVale la pena para valores muy cortos o cuando todos los valorestienen aprox. la misma longitud.

VARCHARMenos espacio por ser longitud variable1 o 2 bytes adicionales para almacenar longitud (varchar(10): hasta11 bytes; varchar(1000): hasta 1002 bytes)Filas ocupan menos, pero pueden crecer mas adelante(fragmentacion, reasignacion de espacio)Vale la pena cuando la longitud maxima de columna es mucho mayorque la media y hay pocas actualizaciones, o cuando el cjto. caracterescomplejo, codificacion variable (UTF-8).

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 81: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Eleccion de tipos de datos optimos

VARCHAR(5) vs. VARCHAR(200)

Un texto de cuatro caracteres ocupa lo mismo en ambos casos, nohay diferencia en almacenamiento secundarioMySQL asigna fragmentos de tamano fijo a la memoriaTabla temporal para ordenacion: reservarıa espacio para el maximotamano posible (motor Memory necesita filas de tamano fijo)Mejor reservar el tamano justo

BLOB y TEXT

Guardan grandes cantidades de datos (binarios y de cadena)Cada motor, diferente gestionEvitar usarlos en el ORDER BY ya que el motor Memory no permitecampos TEXT ni BLOB, ası que habrıa que usar myISAM para latabla temporal de ordenacion)Truco (longitud lo bastante corta para que la tabla no sobrepasetmp table size) ORDER BY SUBSTRING(columna text, longitud)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 82: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Eleccion de tipos de datos optimos

ENUM en lugar de cadenasAhorro de espacioEs solucion solo para listas fijas de cadenas. Ampliarla: ALTERTABLEAdemas: sobrecarga de conversion de valores (por ejemplo, alconcatenar o al comparar)Usar solo si la lista de cadenas no va a cambiar en el futuro

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 83: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Seleccion de clave primaria

Debe ser el mismo tipo en todas las tablas relacionadas ya que tiposdistintos afectan al rendimiento debido a las conversiones

InnoDB no permite claves foraneas si no hay coincidencia exactaConversiones de tipo implıcitas pueden provocar errores difıciles dedetectar

Elegir tamano mas pequeno necesario dejando espacio paracrecimiento futuro

Por ejemplo: un entero (4 bytes) para codigos de provincias implicamucho espacio en claves externas

Las cadenas de caracteres son una mala eleccion porque ocupanmucho espacio y son mas lentas que los enterosLas cadenas de caracteres aleatorias (estilo UUID) implican:

ralentizacion de los INSERT ya que el valor se inserta en una posicionaleatoria del ındice que puede crear fragmentacion de paginasmal rendimiento de las caches ya que se elimina la localidadralentizacion de los SELECT porque filas adyacentes en el resultadoquedan dispersas en disco y memoria si las filas se almacenanordenadas por clave

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 84: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Revision de los esquemas generados automaticamente

Proceso tradicional: Modelado conceptual, logico y fısico

Proceso de mapeado objeto-relacional: anotacion de clases ycreacion de esquemas

Proceso model-driven engineering: modelado conceptual y creacionautomatica de esquemas

Posibles problemas

Uso reiterado de tipos VARCHAR sin lımiteTipos de datos en columnas de combinacion que no coincidenEl objetivo principal es que cualquier clase puede ser almacenada encualquier SGBD, lo que puede provocar:

Tablas con cada propiedad de un objeto en una filaVersiones de cada propiedad usando timestamps

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 85: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Indices

Mas importantes a medida que nuestros datos crecen

Por ejemplo, en una consulta como

SELECT first_name FROM actor where actor_id=5;

Si hay ındice sobre actor id se busca sobre el ındice y se recuperanpunteros a las filas en la tabla

Si se define el ındice sobre varias columnas el orden en el que seindican las columnas es muy importante ya que MySQL solo buscaeficientemente el prefijo en la parte mas a la izquierda del ındice

Crear un ındice sobre dos columnas no es lo mismo que crear dosındices de una sola columna independientes

Los ındices se implementan a nivel de motor de almacenamiento (noen capa de servidor), por lo que no todos los motores admiten todoslos tipos de ındices

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 86: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Arbol B y B+

Admitido por todos los motores (menos Archive)Cada motor lo implementa a su modo. Por ejemplo, MyISAM usacompresion mientras que InnoDB no usa compresionIdea general: todos los valores se almacenan en orden y se accedemediante un arbol en el que cada hoja esta a la misma distancia dela raız y las paginas de hojas contienen punteros a los registros de latabla.Agiliza acceso a los datos. Se realiza un acceso al nodo raız y e vadescendiendo por las ramas escogiendo punteros adecuados hastallegar al valor correcto.

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 87: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Arbol B y B+

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 88: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Arbol B y B+

Tipos de consulta que pueden usar ındice de un arbol B

Coincidencia con valor completo.

apellidos = ’Allen’ and nombre = ’Cuba’ and fnac = ’01-01-1960’

Coincidencia parcial con prefijo de columna

apellidos like ’A %’

Coincidencia parcial con prefijo mas a la izquierda

apellidos = ’Allen’ and nombre like ’C %’

Coincidencia con rango de valores

apellidos >= ’Allen %’ and apellidos <= ’Barrimore %’

Clausulas ORDER BY por los campos del ındice

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 89: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Arbol B y B+

Limitaciones. No son utiles en:

Busquedas que no empiezan en la parte mas izquierda de lascolumnas indizadas. Ejemplos:

nombre = ’Cuba’ and fnac = ’01-01-1960’

apellidos like ’ %Z’

No permiten saltar columnas del ındice. Ejemplo:

apellidos = ’Allen’ and fnac = ’01-01-1960’

No se optimiza el acceso a columnas a la derecha de la primeracondicion de rango. Por ejemplo:

apellidos = ’Allen’ AND nombre >= ’J’ AND fnac = ’23-12-1976’

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 90: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Indices Hash

Solo soportado por el motor Memory (el indice por defecto)Para cada fila se crea un codigo hash con las columnas indizadasEl ındice es una tabla hash con apuntadores de fila (muy compactos)Las colisiones de la funcion hash se almacenan con una lista enlazadaUtil solo para busquedas que usan todas las columnas del ındice. Noadmiten coincidencia parcial de claveProblemas

No se pueden usar los ındices para ordenar ya que el ındice ordenapor hash, no por el valor original.No evita leer las filas ya que en el ındice solo se almacena un puntoal registroSolo permite comparaciones de igualdad (=, IN) pero no consultasde rangos (>100)Las colisiones de la funcion hash ralentizan el acceso y elmantenimiento

Es posible simular ındice hash con una columna extra, un arbol B+ ytriggers

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 91: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Indices agrupados

Las filas de las tablas se guardan en las paginas hoja del ındice

Las filas con valores de clave adyacentes se guardan juntas

Ahorra operaciones de E/S en consultas con datos relacionados

Los ındices tradicionales pueden ocupar mas espacio del esperado yaque en vez de punteros a registros almacenan valores de claveprimaria

No todos los motores los admiten

InnoDB lo hace implıcito con la clave primaria, con un ındice unicosin valores NULL, o con una clave interna ocultaInconvenientes:

Solo ahorra E/S si los datos no caben en memoriaLa velocidad de insercion depende del orden de insercion (lo mejor,en el orden de la clave primaria)La actualizacion es costosa debido a la reubicacion de paginasPaginas mas sujetas a fragmentacion al insertar filas nuevasPueden ser mas lentas para escaneos completos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 92: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Otros ındices

Indices espaciales (arbol R)

Solo en motor MyISAMSolo para los tipos de datos y operaciones de geometrıa espacial(GEOMETRY)El soporte espacial de MySQL no es muy completo

Indices de texto completo

Solo en el motor MyISAMPermite busquedas de palabras clave en textos y calculo derelevanciasSoporta conceptos de recuperacion de informacion (stopwords,lematizacion, busqueda booleana)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 93: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: aislar columnas

Aislar la columna en las consultas para que no forme parte de unaexpresion ni sea argumento de funciones

Ejemplos que no usan el ındice:

SELECT actor_id FROM actor WHERE actor_id+1=5;

SELECT ... WHERE TO_DAYS(CURRENT_DATE) - TO_DAYS(date_col) <= 10;

Ejemplos que usan el ındice:

SELECT actor_id FROM actor WHERE actor_id=4;

SELECT ... WHERE date_col >= DATE_SUB(CURRENT_DATE, INTERVAL 10

DAY);

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 94: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: Construir ındices sobre prefijos

Permite indexar columnas de caracteres largas

Indexar solo los primeros caracteres en lugar de todo el valor

Es necesario buscar el tamano idoneo que mantiene el ındicealtamente selectivo

Selectividad = Valores diferentes indexados / Valores totalesBastante largo para proporcionar buena selectividadBastante corto como para ahorrar espacio

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 95: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: Construir ındices sobre prefijos

Distribucion de los valores diferentes

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 96: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: Construir ındices sobre prefijos

Calculo de las selectividades

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 97: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: Construir ındices sobre prefijos

Distribucion con prefijo de 3 caracteres

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 98: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: Construir ındices sobre prefijos

Distribucion con prefijo de 4 caracteres

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 99: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: Construir ındices sobre prefijos

Distribucion con prefijo de 7 caracteres

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 100: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Estrategias de indexado: Indices de cobertura

Incluır en el ındice todas las columnas necesarios para resolver unaconsultaMySQL puede utilizar ındices para recuperar valores de una columnasin tener que acceder para nada a la filaVentajas:

Como las entradas del ındice son mas pequenas que el tamano totalde la fila encajan mejor en memoria y caben en cache de los motoresde almacenamientoComo los ındices se ordenan por valor los accesos de rango requierenmenos E/SSe evitan bloqueos porque si no accedemos a la fila, no hace faltabloquearla

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 101: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Usar ındices para ordenacion

MySQL ordena los resultados usando dos metodos: escaneando unındice en orden (rapido) o mediante ordenacion de archivos (lento)

El escaneado del ındice solo se puede hacer si cubre el where y elorder by (las condiciones y columnas forman un prefijo del ındice)

Ejemplos en los que no lo cubre:

Se ordena de forma descendente (el ındice ordena de formaascendente)Se usa en el order by una columna que no esta en el ındice

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 102: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Tablas de cache y resumen

Crear tablas de resumen o de cache independientes de los datos departida

Tablas de resumen: Resultados obtenidos con GROUP BY (datosplegados)Tablas de cache: Datos que se recuperan frecuentemente del esquema

Funciona si podemos tolerar datos ligeramente desactualizados

Debemos decidir si se actualizan las tablas en tiempo real o de formaperiodica

La reconstruccion debe hacerse usando tablas sombreadas parapoder seguir usando las tablas resumen antiguas

Cuando tenemos lista la nueva tabla resumen, cambiamos el nombre

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 103: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Tablas de contadores

Se aconseja que las tablas de contadores sean independientes

Resulta en tablas rapidas y pequenas

Un contador es esencialmente un semaforo que crea problemas deconcurrencia

CREATE TABLE hit_counter (cnt int unsigned not null);

UPDATE hit_counter SET cnt=cnt+1;

Se recomienda paralelizar mediante contadores parciales:

CREATE TABLE hit_counter (slot tinyint unsigned not null

primary key, cnt int unsigned not null);

UPDATE hit_counter SET cnt=cnt+1 WHERE slot=RAND()*100;

SELECT SUM(cnt) FROM hit_counter;

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 104: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de esquemas e ındices

Desnormalizacion

Las actualizaciones normalizadas son mas rapidas que las nonormalizadas

En los datos normalizados no hay redundancia por lo que hay menosdatos que modificar

No tener redundancia implica un menor uso de DISTINCT oGROUP BY

Las tablas normalizadas son mas pequenas por lo que encajan mejoren memoria

Sin embargo, en un esquema normalizado las recuperacionesimplican combinaciones que son costosas

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 105: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 106: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Introduccion

El hardware y el software sobre los que se ejecuta SGBD determinanla eficiencia de MySQL (tamano de disco, memoria disponible,recursos de CPU, red . . . )

Se necesitan directrices para resolver cuellos de botella del hardwarey del sistema operativo

Prestaremos atencion a los siguientes aspectos

Seleccion de CPUEquilibrar recursos de memoria y discoElegir discos (RAID, NAS)Configuracion de red

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 107: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Introduccion

Cuellos de botella comunes:

Saturacion de CPU. Comun cuando MySQL trabaja con datos quecaben en memoria o pueden ser leıdos de disco tan rapido como seanecesario. Ejemplos: ops. criptograficas intensivas, combinaciones sinındicesSaturacion E/S. Se trabaja con mas datos de los que caben enmemoria. Se vacıa cache para traer mas datos, y al rato los datosvaciados se tienen que volver a cargar

Posibles errores de interpretacion:

Escasez de memoria se puede interpretar como falta de capacidadE/SBus de memoria saturado se puede interpretar como problema de laCPU

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 108: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Seleccion de la CPU

¿CPU rapida o muchas CPUs no tan rapidas?

MySQL aprovecha mal el paralelismo ya que asigna una operacion auna CPU. Problemas de escala con muchas CPU

En funcion del tipos de rendimiento deseable:Baja latencia

Tiempo de respuesta rapido para cada consulta.Mejor CPUs rapidas porque cada peticion solo aprovecha una CPU.

Alto rendimiento:

Muchas peticiones simultaneas.Mejor muchas CPUs, pero como MySQL escala mal no funciona el“cuantas mas mejor”.Al final: meter mas CPUs hasta que deje de compensar y llegados aese punto: intentar que sean lo mas rapidas posible.

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 109: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Seleccion de la CPU

¿Cuando compensan muchas CPUs?

MySQL puede aprovechar CPUs “secundarias” para tareas en segundoplano (ops. de red, limpieza de buferes InnoDB)Esas tareas son “menores” en comparacion con la ejecucion depeticiones de los usuariosMuchas CPUs compensan realmente si:

Muchas conexiones que acceden a tablas diferentes (no compiten porbloqueos)Rendimiento total del servidor mas importante que el tiempo derespuesta de una peticion particular

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 110: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Equilibrar recursos memoria / disco

Disponer de mucha memoria evita E/S del discoEs necesario encontrar un equilibrio entre el tamano de memoria ydisco teniendo en cuenta rendimiento y costeEjemplo: Lecturas aleatorias o secuenciales

Discos actuales: 200 operaciones E/S por segundo, 200 MB/segundode forma secuencialMemoria actual: 1.300 millones de operaciones E/S por segundo,10.000 MB/segundo de forma secuencialAcceso aleatorio: 200 filas/segundo de disco, 100.000 filas/segundode memoriaAcceso secuencial: 2 millones de filas/segundo de disco, 10 millonesde filas/segundo de memoria

Resultado: Lecturas aleatorias o secuencialesAccesos aleatorios: 500 veces mas rapidos en memoria que en discoAccesos secuenciales: 5 veces mas rapidos en memoria que en discoSe ahorra mucho mas trabajo almacenando lecturas aleatorias encacheAnadir memoria es la solucion para solucionar problemas de E/SaleatoriaEnxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 111: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Equilibrar recursos memoria / disco

Cache de las BDs (ej. grupo de buferes InnoDB) funciona mejor quecache de SO (generalista)

Mas conocimiento sobre los datos que necesitaLogica para fines especialesNo necesita llamadas al sistema

Aspectos a tener en cuenta al considerar el tamano de la cacheConjunto de trabajo

Datos que la aplicacion necesita en la cache en memoriaIncluye datos e ındices

Unidad de cache

Unidad de datos mas pequena con la que puede trabajar el motor dealmacenamientoInnoDB: 16KBFila 100 Bytes puede necesitar cargar 32 KB en cache (datos e ındice)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 112: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Equilibrar recursos memoria / disco

Perdida de cache: datos no en cache, hay que ir a buscarlos a discoForma facil de medirla: por el uso CPU (90 % tiempo CPU, 10 %E/S -> proporcion perdida cache buena)Buscar proporcion de perdida aceptable

No se arregla simplemente anadiendo mas memoria (ej., deficienciaspor tamano de unidad de cache)Ejemplo:

Sistema con 10 GB de memoria con 10 % perdidaSi fuese lineal: 11 % mas de memoria (11,1 GB) nos darıa 0 % deperdidaEn realidad, bajar a 1 % podrıa requerir 500 GB de memoria

La escalibilidad la determina el eslabon mas debilEjemplo:

sistema con 16 GB memoria, 20 GB datos y mucho disco libre quefunciona bienAlgunos componentes pueden estar a mas del 50 % de su capacidadmaxima (ej. 80 % de numero maximo de operaciones de E/S)Aumentar a 40 GB datos (doble) no se puede soportar aumentandosimplemente la memoria: la velocidad de transferencia del discofunciona a tope!!

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 113: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Seleccion de discos

Factores a tener en cuenta:Capacidad de almacenamiento

No suele ser un problema (tamano actual de los discos mas quesuficiente)Practica estandar: combinar discos pequenos y RAIDVentajoso tener mas capacidad de la necesaria: aumenta la localidadde los datos

Velocidad de transferencia: no suele ser un factor que limite lasaplicaciones onlineTiempo de acceso: es el factor determinante para agilizar busquedasaleatoriasTamano fısico: discos mas pequenos son mas rapidos y ocupanmenos (fısicamente)El aprovechamiento depende del motor. InnoDB escala bien entre 10y 20 discos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 114: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Seleccion de discos

Seleccion de RAID

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 115: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Seleccion de discos

Multiples volumenes ¿Donde colocamos los archivos?

Archivos de datos e ındiceArchivos de registros transaccionalesArchivos de registros binariosArchivos de registro general (registros de errores, registro depeticiones, registro de consultas lentas, . . . )Archivos y tablas temporales

Por defecto, todos los archivos en un unico directorio

InnoDB:

datos e ındices en un unico conjunto de archivosSolo los archivos de definicion de tablas van aparte, en el directoriode cada base de datos

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 116: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Seleccion de discos

Multiples volumenes

Usar multiples volumenes puede ayudarnos a gestionar E/S pesadaRegla clasica: registros transaccionales y archivos de datos envolumenes diferentes

E/S secuencial de tx. no interfiere con E/S aleatoria de datos

En realidad, no es tal ventaja

Escrituras en registro son pequenasCaches RAID agrupan escrituras: se convierten en muchas menosescrituras por segundoNo interfieren con E/S de datos

Ventaja real:

En caso de fallo, mucho mas seguro tenerlos separadosSi se pierden los datos: se pueden recuperar usando el registroRecuperacion point-in-time

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 117: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Seleccion de discos

Dedicar discos a registros transaccionales depende del coste, no delrendimiento

Ejemplo:4 discos duros: 2 para datos, 2 para registros transaccionales

1/2 del disco perdido para datos1 disco para un trabajo trivial (la cache del disco hace todo el trabajo)

10 discos duros: 2 para datos, 2 para registros transaccionales

Proporcionalmente menos caro

Configuracion tıpica:

SO, swap y registros binarios en RAID 1

Resto: un unico volumen en RAID 5 o RAID 10

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 118: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion de hw. y sw.

Configuracion de red

El mayor problema es la latencia

En una aplicacion tıpica hay muchas transferencias pequenas y sesuman los retrasos de cada transmision

La causa principal es la perdida de paquetes, 1 % de perdida producedegradacion significativa

Optimizaciones:Pocas conexiones, peticiones o resultados grandes: aumentar eltamano del buffer TCP

Aumenta el numero de paquetes que se pueden mandar “de unatacada”Modificable en origen y destino

Solo conexiones locales: acortar timeout de cierre de conexion (pordefecto, un minuto)Otras: Eliminar latencia resolucion DNS: skip name resolve

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 119: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Contenidos

1 Introduccion a MySQL2 Replicacion3 Copia de seguridad y recuperacion4 Medicion de rendimiento y perfilado

Medicion del rendimientoPerfilado de aplicaciones

5 OptimizacionOptimizacion de esquemas e ındicesOptimizacion de hw. y sw.Optimizacion del servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 120: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Introduccion

No existe el archivo de configuracion optimo.Cada servidor necesita una configuracion diferente, dependiendo de:

hardwaretamano datos,tipos de consultasRequisitos del sistema (tiempo de respuesta, duracion tx,consistencia, . . . )

La configuracion de MySQL predeterminada esta pensada para noutilizar muchos recursos.

No da por hecho maquina dedicada.Reserva recursos suficientes para iniciar MySQL y ejecutar consultassobre pocos datos

Para definir configuracion a medida:Partir de alguno de los ficheros de configuracion de ejemplo.No esperar muchas mejoras con cada cambioInicialmente, cambios que duplican o triplican rendimientoDespues, mejoras incrementales

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 121: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Introduccion

La configuracion permanente MySQL se almacena fichero my.cnf

Se configura mediante la asignacion de valores a variables

Es posible ejecutar multiples instancias desde una sola configuracioncon secciones independientes.

Ambitos de las variables:

Global (se aplican al servidor y a cada conexion)Sesion (se aplican a una conexion especıfica)Especıficas para un objeto

Valores demasiado altos generan problemas (i.e. quedarnos sinmemoria)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 122: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Introduccion

El proceso debe ser el siguiente:Preparar y realizar mediciones de prueba antes de empezar a ajustarservidor

Pruebas que representen carga de trabajo realIncluir consultas complejas

Definir un sistema de supervision para medir si cambio mejora oempeora rendimientoCambiar una o dos variables, un poco, cada vez, y hacer prueba demedicionAjustar hasta que todo funciona “bastante bien”No insistir a menos que creamos que podemos obtener mejorasignificativa (el esfuerzo no compensa)

Los “acantilados” son tıpicos: incrementamos variable un poco ymejora rendimiento; la incrementamos un poco mas, y elrendimiento cae en picado

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 123: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Introduccion

No comenzar a ajustar configuracion sin un esquema y consultasestables

Todos los ındices creadosSi modificamos esquema despues de ajustar configuracion: volver aempezar

Describiremos estos aspectos

Ajuste de uso de memoriaAjustes de cachesAjustes E/SConcurrencia

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 124: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste de uso de memoria

Comenzar con el lımite superior de memoria disponible para MySQL

Restar la memoria que necesita SO para ejecutarse bien

Restar la memoria necesaria para cada conexion (buffer ordenacion,tablas temporales)

Usar el resto memoria para las caches de MySQL

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 125: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste de uso de memoria

Lımite superior de memoria

Inicial: memoria fısica del servidorKernel Linux limita tamano maximo memoria para un proceso (engeneral, parametros especıficos del SO como el tamano de pilas . . . )Librerıas (glibc) tambien pueden fijar sus propios lımites

Memoria para el SO

Necesario reservar memoria para que el SO haga su trabajoMejor indicador de asignacion correcta: poco intercambio dememoria virtualNormalmente: 1-2 GB (incluso en maquinas con mucha memoriafısica)Asignar siempre algo de memoria adicional (para tareas periodicasque consuman mucha memoria, copias de seguridad . . . )No tener en cuenta memoria para caches (esa la tratamos aparte)

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 126: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste de uso de memoria

Necesidades de memoria por conexion

Cada conexion, pequena cantidad de memoria para mantenerseabiertaTambien, pequena cantidad para ejecutar una consulta dadaNecesitamos memoria suficiente para momentos de picos de cargaDifıcil de predecir. No es necesario suponer peor caso. Ejemplo:

Configurar para 100 conexiones simultaneasFijamos tamano maximo buffer ordenacion (uno por conexion) en 256MBPeor caso: pico de carga supondrıa 25 GB (Muy poco probable)

Buena solucion: observar servidor con carga de trabajo real ycomprobar cuanta memoria utiliza

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 127: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste de uso de memoria

Toda la memoria que no se use: dedicada a caches

MySQL necesita mas memoria para caches que para el resto deelementos

Cache del SO trabaja para MySQL. . . pero MySQL necesita mucha memoria para sı mismo

Caches mas importantes:

Cache de claves MyISAMGrupo de buferes InnoDBCache de subprocesos

Existen otras caches, pero no requieren mucha memoria

Mas facil ajustar servidor que usa un unico motor de almacenamiento

Mezcla de motores: difıcil encontrar equilibrio

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 128: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Cache de claves MyISAM

Para almacenar ındices (no datos, MyISAM lo delega en el sistemaoperativo)

Si solo usamos MyISAM: dedicar mucha memoria a esta cache

Si se usa tambien InnoDB: ajustar al 25-30 % de la cantidad dememoria reservada para las caches

Una predeterminada, pero se pueden crear mas

key_buffer_1.key_buffer_size=1G

key_buffer_2.key_buffer_size=1G

Para asignar ındices a un buffer:

CACHE INDEX t1, t2 in key_buffer_1;

LOAD INDEX INTO CACHE t1,t2;

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 129: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Cache de claves MyISAM

Supervisar rendimiento buffer:% buffer en uso

100-

((key_blocks_unused*key_cache_block_size)*100/key_buffer_size)

% de aciertos:100-((key_reads*100)/key_read_requests)

Fallos por segundo:key_reads/uptime

El % aciertos es el menos significativo porque depende mucho de laaplicacionEl numero de fallos por segundo es el mas significativoEl % buffer en uso permite conocer si hemos reservado demasiadoespacioAunque no se usen tablas MyISAM hay que reservar espacio a lacache porque MySQL las usa para ciertas operaciones

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 130: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Cache de claves MyISAM

El tamano de bloque de la cache de claves MyISAM es configurablea partir de MySQL 5.1

Debe ser el mismo tamano que el bloque del SO para ahorrar lecturas

Ejemplo: bloque MyISAM 1 KB, SO 4 KB

MyISAM solicita bloque de claves de 1KB del discoSO recupera 4KB del disco, guarda en cache y entrega bloque de1KB a MyISAMSO libera cache al cargar nuevos datosMyISAM modifica bloque de 1KB y pide al SO que escriba en discoSO vuelve a leer mismos 4KB, modifica bloque 1 KB y graba endisco 4KBSi bloque MyISAM fuese de 4KB: ahorramos la lectura del pasoanterior

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 131: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Conjunto de buferes InnoDB

Si usamos tablas InnoDB el conjunto de buferes necesitara masmemoria que cualquier otra opcion

Almacenan ındices, datos de filas, buffer de inserciones, bloqueos,otras estructuras internas

Habitual: reservar 80 % de la memoria fısica de la maquina

Cuando el % de paginas sucias excede el umbral establecido unproceso automatico inicia el volcado a disco

Valor predeterminado del % de paginas sucias es el 90 %

Si subimos el umbral tolera mejor picos de actualizaciones

Si bajamos umbral: tarda menos en cerrarse (se acumulan menospaginas que grabar)

Si el tamano demasiado grande se ralentiza el arranque y la paradadel servidor

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 132: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Cache de subprocesos

Pool de procesos libres preparada para conexiones nuevas

Entra conexion: se le asigna proceso de la cacheConexion se cierra: proceso vuelve a estar disponible en la cacheSi no hay sitio: el proceso se destruye

Numero maximo de subprocesos en cache: thread_cache_size

Monitorizacion:

Intentar mantener threads_created entre 1-10 por segundoRevisar threads_connected para configurar el tamano de la cachede forma que sea capaz de contener la fluctuacion tıpica de la cargade trabajo

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 133: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Cache de tablas MyISAM

Guarda objetos que representan tablas

Necesita poca memoria, ayuda a conservar recursos

Dos partes:Cache de definicion de tablas (table_definition_cache)

Contenido del archivo .frm analizado sintacticamenteA poder ser, fijar tamano para que quepan todas las definiciones denuestras tablas

Cache de tablas abiertas (table_open_cache)

Descriptores de archivos (datos, ındices)

Si un proceso necesita acceso a una tabla puede obtener descriptordesde la cache

Si la variable opened_tables demasiado grande, o estaincrementando: aumentar cache

Aumentar numero de archivos que pueden permanecer abiertos:open_files_limit

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 134: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste E/S: MyISAM

Cada escritura en cache de claves (ındices), por defecto, se grabainmediatamente a disco

Es posible retrasar escrituras para realizarlas por lotes (variabledelay_key_write)

OFF: bloques se graban inmediatamente a disco (en cuando tablaquede desbloqueada)ON: se retrasan escrituras hasta cierre de tabla (si es una tablamarcada con DELAY KEY WRITE)ALL: todas las tablas tienen escritura retardada

Problemas:

Si servidor se detiene y los bloques no se han volcado, ındice quedadanadoSi se retrasan muchas escrituras, las tablas tardan mas en cerrarseDemasiados bloques sucios en cache: no dejan espacio para nuevos:consultas pueden retrasarse

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 135: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste E/S de InnoDB: Registro de transacciones

Para ahorrar E/S aleatorias en paginas de datos se grabasecuencialmente las ops. en el registro (de transacciones

Transacciones persistentes aun sin haber volcado datos a disco

Proceso de vaciado en segundo plano convierte registro de tx en opsde volcado de datos secuenciales mas eficientes

Tamano del archivo de log: vital para rendimiento de la escritura

Dividido en varios archivos. Registro circular unico.

Tamano total: suma del tamano de los archivos

Predeterminado: dos archivos de 5 MB (10 MB totales)

Lımite superior: 4 GB

Tamano tıpico para alto rendimiento: 256 MB

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 136: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste E/S de InnoDB: Registro de transacciones

Tamano ideal registro, valorar:

Carga actualizaciones rutinarias de datosTiempo de recuperacion requerido en caso de caıda del sistema

Si registro demasiado pequeno: InnoDB realizara mas vaciados

Si registro demasiado grande: mucho trabajo para InnoDB cuando setenga que recuperar

Escaneo del registroExaminar archivos de datosAplicar cambios a los archivos de datos

Supervision del rendimiento:

Anotar valor maximo de variable innodb_os_log_written aintervalos de 10-100 segundosUsarlo para determinar tamano del registro y del buffer del registroMaximo 100 KB/s : buffer de registros de 1 MB lleno en 10 segArchivos de registro de 256 MB: 2.560 segundos de entradas en elregistro

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 137: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste E/S de InnoDB: Buffer del registro de transacciones

Se guarda registro de los cambios en un buffer en memoria

El buffer se vuelca a disco (a los archivos del registro detransacciones):

Cuando buffer de registros se llenaCuando se confirma una transaccionUna vez por segundo

Tamano buffer: por defecto, 1 MB

Rango recomendado: 1-8 MB

Al volcar buffer a archivos de log: se vuelcan estos a almacenamientoduradero

Podemos perder como maximo 1 segundo de transacciones

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 138: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Ajuste E/S de InnoDB: Buffer de doble escritura

Para evitar danos con escritura de disco parcial de datos de tablas

Buffer de doble escritura: estructura en cache de tablas InnoDB

Tamano suficiente para contener bloque contiguo de 100 paginas dedisco

Cuando se vuelca grupo de paginas a disco:

Se vuelcan primero a buffer dobleDespues, se vuelcan a disco

Si error en InnoDB, cuando se recupere puede detectar escriturasparciales en disco o en doble buffer

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 139: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Concurrencia

InnoDB antes de MySQL 5.1 responde mal a situaciones de altaconcurrencia

Unica solucion: limitar concurrencia(innodb_thread_concurrency)

Formula util (en la practica, puede ser mejor usar valor maspequeno):

concurrencia = num CPUs * num discos * 2

Antes, InnoDB tenıa muchos semaforos MUTEX

Ahora la concurrencia es mucho mejor en InnoDB, pero la mejora dela cache de threads quedo la rama abandonada de MySQL 6.0 y seha recuperado en MariaDB

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez

Page 140: DesenoFisico MySQL

BD3: Diseno Fısico - MySQL

Optimizacion

Optimizacion del servidor

Bases de Datos III

Diseno Fısico - MySQL

Enxenarıa Informatica

Curso 2013/2014

Miguel R. LuacesLaboratorio de Bases de Datos

Universidade da Coruna

Enxenarıa Informatica Miguel R. Luaces ([email protected]) - Juan Ramon Lopez Rodrıguez