Académique Documents
Professionnel Documents
Culture Documents
no Fsico - MySQL
Miguel R. Luaces
Laboratorio de Bases de Datos
Universidade da Coru
na
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
MariaDB
An enhanced, drop-in replacement for MySQL
Versi
on actual: 5.5.36
Documentaci
on: https://kb.askmonty.org/en/
Funciona sobre todas las plataformas: Mac OS X, Windows,
GNU/Linux
Mejoras sobre MySQL 5.5:
M
as motores de almacenamiento (ej.: No-SQL)
Optimizaciones
Extensiones (ej.: virtual columns)
Completamente Open Source
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Arquitectura de MySQL
Clientes
Cach de
consultas
Analizador
sintctico
optimizador
API del motor de
almacenamiento
(Iniciar transaccin,
recuperar registro con
clave x)
Motores de almacenamiento
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on 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 realiza
la optimizaci
on del plan de ejecuci
on
Reescritura de la consulta
Determinaci
on del orden de acceso a las tablas
Selecci
on de los ndices a utilizar
Inclusi
on de las caractersticas especficas de los motores de
almacenamiento
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Arquitectura de MySQL
Caracterstica u
nica: separaci
on de tareas de servidor (conexiones,
procesamiento de consultas, optimizaci
on) de tareas de
almacenamiento y recuperaci
on 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 concurrencia
Gesti
on de transacciones
Motores de almacenamiento
Criterios de selecci
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Control de concurrencia
Los bloqueos permiten evitar que un cliente lea un fragmento de
datos 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 que
aumenta la concurrencia
Los bloqueos de tabla minimizan el consumo de memoria por lo que
aumenta el rendimiento
Cada motor de almacenamiento de MySQL define su propia poltica
y granularidad. El servidor no es consciente de los bloqueos.
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Control de concurrencia
MyISAM, Memory y Merge realizan bloqueos a nivel de tabla
Cada motor lo implementa a su modo con optimizaciones para
mejorar el rendimiento
Necesita muy poca memoria
Ideal en el caso de que las lecturas sean mucho m
as frecuentes que
las modificaciones
Es eficiente en el caso de modificaciones simult
aneas en varias filas
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Gestion de transacciones
MySQL incluye motores transaccionales (InnoDB) y no
transaccionales (MyISAM, Memory)
El estandar SQL define cuatro niveles de aislamiento:
Read uncommited
Read commited
Repeatable read
Serializable
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Gestion de transacciones
Read uncommited
No hay bloqueos, por lo que una transacci
on lee datos sin confirmar
de otra transacci
on
Permite lecturas sucias porque la segunda transacci
on podra ser
cancelada
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Gestion de transacciones
Read commited
Los bloqueos de escritura se mantienen hasta el fin de la transacci
on
Los de lectura se liberan al finalizar la lectura
Una transacci
on s
olo lee datos de transacciones confirmadas
Permite lecturas no-repetibles porque los datos podran cambiar
despues de leidos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Gestion de transacciones
Repeatable read
Todos los bloqueos se mantienen durante toda la transacci
on
Cualquier fila que lea una transacci
on ser
a igual en sucesivas lecturas
Como no hay bloqueo de rangos, permite lecturas fantasma
Es la predeterminada en InnoDB
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Gestion de transacciones
Serializable
Aislamiento completo de las transacciones usando bloqueos de rango.
InnoDB permite el nivel de aislamiento serializable mediante
Multiversion Concurrency Control (MVCC)
Mantiene instant
aneas de los datos tal y como existan en un
determinado momento
Diferentes transacciones ven simult
aneamente datos distintos en las
mismas tablas
Evita la necesidad de bloquear filas en modo lectura
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Gestion de transacciones
Interbloqueos (Deadlocks)
El funcionamiento de los bloqueos es especfico del motor de
almacenamiento
Los interbloqueos son inevitables ya que ocurren por conflictos reales
en las transacciones
Los interbloqueos producen consultas lentas o que sobrepasan tiempo
m
aximo
La soluci
on consiste en reanudar alguna de las transacciones
InnoDB detecta dependencias circulares y reanuda la transacci
on con
los bloqueos de fila menos exclusivos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Gestion de transacciones
Registro de transacciones (Write-ahead logging)
El almacenamiento inmediato de los cambios en los datos es lento
Los cambios realizan en la copia en memoria de la p
agina de disco
El almacenamiento en disco se realiza mediante un registro de
transacciones usando escritura secuencial (y por tanto, r
apida)
Los datos en disco se escriben cuando la p
agina se elimina de
memoria
En caso de fallo del servidor, los cambios se pueden recuperar
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Optimo
para soportes de s
olo lectura y/o lentos
Se construyen con la utilidad myisampack
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Inconvenientes:
Tiene problemas de escalabilidad debido al soporte transaccional
Cambios en la estructura de las tablas implican copiar todos los
datos y recrear los ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Motor Blackhole
No almacena datos. Todas las inserciones se descartan
Mantiene un registro de operaciones realizadas
Posibles usos: auditora, algunas configuraciones de replicaci
on
Motor CSV
Tablas creadas sobre archivos con valores separados por comas
(comma-separated values)
No admite ndices
Posibles usos: intercambio de datos con aplicaciones externas
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
En funci
on de la concurrencia en las operaciones:
Depende de la carga de trabajo esperada
Si s
olo hay inserciones y lecturas: MyISAM
Si queremos una mezcla de operaciones concurrentes sin
interferencia, necesitamos un motor con bloqueo a nivel de fila
(InnoDB)
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
En funci
on de la necesidad de operaciones especiales:
S
olo InnoDB incluye ndices agrupados y optimizaciones basadas en
ellos
InnoDB s
olo permite b
usquedas de texto completo desde la versi
on
5.6.4
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Servicio de cotizaciones
Si es una herramienta de consumo interno con un n
umero limitado
de usuarios, MyISAM
Si es un servicio web con mucho tr
afico, miles de usuarios y
alimentaci
on de cotizaciones en tiempo real, InnoDB
Una consulta no debe esperar
Miles de usuarios intentando leer mientras simult
aneamente se
actualizan filas requiere bloqueos a nivel de fila
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Introducci
on a MySQL
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Definicion de replicacion
Consiste en configurar uno o varios servidores como esclavos - o
replicas - de otro servidor
Problema a resolver: mantener los datos de los servidores
sincronizados
Base para construir aplicaciones extensas y de alto rendimiento
Admite diferentes topologas
Muchos esclavos pueden conectarse a un maestro
Un esclavo puede, a su vez, actuar como maestro
Se puede replicar:
todo el servidor
determinadas bases de datos
s
olo algunas tablas
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Balanceo de carga
Permite distribuir peticiones de datos entre varios servidores
Copias de seguridad
La carga de la copia se realiza sobre el esclavo, no sobre el servidor
original
Un servidor replicado no es una copia de seguridad
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Funcionamiento de la replicacion
El maestro registra todos sus cambios como eventos del registro
binario (binary log)
El esclavo copia los eventos del registro binario a su registro de
repetici
on (relay log)
El esclavo repite todos los eventos del registro de repeticion sobre
sus propios datos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Funcionamiento de la replicacion
El registro binario de mySQL:
Registra todas las operaciones del servidor que modifican datos (o
podran modificarlos, por ejemplo, un DELETE con filtro) con
independencia de los motores de almacenamiento
Esta formado por una secuencia de eventos, cada de uno de ellos
formado por:
La fecha y hora del evento (un timestamp)
Identificador del servidor de origen (evita bucles infinitos)
Byte de desplazamiento del evento siguiente
Id del thread que ejecut
o el evento en el servidor de origen
Tipo de evento (por ejemplo, Query)
Detalles del evento
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Funcionamiento de la replicacion
El registro binario de mySQL permite tres tipos de replicacion:
Basada en sentencias (statement-based replication)
Se registra la instrucci
on que cambia los datos en el maestro
La utilizada por defecto. Sencilla de implementar y compacta.
Estable desde MySQL 3.23
Hay instrucciones que no se pueden replicar (detalles en el manual)
BD3: Dise
no Fsico - MySQL
Replicaci
on
Funcionamiento de la replicacion
El proceso para configurar la replicaci
on es el siguiente:
Configurar cuentas de replicaci
on en cada servidor
El thread E/S del esclavo hace una conexi
on TCP/IP al maestro
para leer el registro binario. Por lo tanto, necesita una cuenta de
usuario 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 repetici
on
Inidicar al esclavo como conectarse al maestro y desde que punto del
registro binario hay que replicar
Opcionalmente, activar el registro binario y configurar su
actualizaci
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Funcionamiento de la replicacion
Es posible replicar s
olo parte de los eventos de un servidor,
utilizando diferentes tipos de filtros
Filtros sobre el registro binario del maestro
Filtros sobre el registro de repetici
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Las restricciones en la replicaci
on son las siguientes:
Cada esclavo s
olo puede tener un maestro
Un maestro puede tener muchos esclavos
Un esclavo puede actuar tambien como maestro
Arbol
o pir
amide
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Un maestro, m
ultiples esclavos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Un maestro, m
ultiples esclavos
La topologa mas sencilla y mas com
un
Todas las escrituras se realizan en el maestro, las lecturas se pueden
realizar en cualquier servidor
El n
umero de esclavos esta limitado por la capacidad de
procesamiento 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 un
desastre
Retrasar un esclavo en el tiempo para facilitar la recuperaci
on
Utilizar un esclavo para copia de seguridad, para pruebas o para
desarrollo
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Maestro-maestro en modo activo-activo
S
olo se recomienda si tenemos datos bien particionados y buen
reparto de privilegios
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Maestro-maestro en modo activo-pasivo
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Anillo
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Anillo
Tres o mas maestros
Cada servidor es un esclavo del servidor que esta antes en el anillo, y
maestro del servidor que esta despues
Configuraci
on simetrica, failover facil.
Es una configuraci
on fragil:
Depende enormemente de que todos los nodos funcionen
correctamente
Difcil que esten todos sincronizados a la vez: detener alg
un nodo es
complicado
Si eliminamos un nodo sin tener cuidado, sus eventos pueden
propagarse de forma infinita por el anillo. El u
nico nodo que filtra un
evento es el que lo ha generado!
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Maestro, maestro de distribuci
on, esclavos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Maestro, maestro de distribuci
on, esclavos
Similar a la topologa maestro-esclavos, pero no sobrecarga al
maestro principal
El maestro principal s
olo tiene un esclavo que a su vez act
ua como
maestro de distribuci
on
El maestro de distribuci
on usa el motor BlackHole que graba en el
registro binario pero no mantiene tablas ni datos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Arbol
o pir
amide
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Topologas de replicacion
Arbol
o pir
amide
Si hay muchos esclavos, puede ser mas rentable un dise
no en
piramide
Esto alivia la carga del maestro y la redistribuye por los diferentes
esclavos
Desventaja: fallos en niveles intermedios afectan a un gran n
umero
de servidores
Ademas, cuantos mas niveles intermedios, mas difcil y complicado
es manejar los fallos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Replicaci
on
Problemas en la replicacion
La replicaci
on implica varias tareas complejas:
Medir el desfase de los esclavos para saber en que estado se
encuentran
Determinar la consistencia de los esclavos con respecto al maestro
Resincronizar un esclavo con el maestro
Intercambiar un esclavo por un maestro
La replicaci
on s
olo escala las lecturas, no las escrituras
La distribuci
on de la carga debe ser realizada por otro software
La complejidad de la replicaci
on se ve claramente en la longitud de
la secci
on del manual
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Introduccion
Recuperaci
on no es restauraci
on
Restaurar: recuperar datos desde una copia de seguridad y cargarlos
en una base de datos
Recuperar: todo el proceso de rescatar un sistema o parte de el.
Incluye todos los pasos para lograr que un servidor vuelva a ser
completamente funcional y operativo:
Restaurar copia de seguridad
Reiniciar servidor
Cambiar configuraci
on
Calentar las cach
es del servidor
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Introduccion
El mejor sistema de copias de seguridad no es suficiente. Un buen
plan de recuperaci
on es fundamental
El procedimiento de recuperaci
on es complejo. Es f
acil cometer
errores
Las copias de seguridad son rutinarias y no se realizan bajo
situaciones de presi
on extrema. La recuperaci
on se hace en medio de
una situaci
on de crisis
Una persona puede planear, dise
nar e implementar las copias de
seguridad, pero podra no estar disponible cuando se produzca el
desastre. Es necesario formar a personal cualificado para que se
encargue de la recuperaci
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Cuanto m
as nos permitamos perder, m
as f
acil es hacer la copia
Las copias de seguridad en MySQL son mucho m
as complicadas de
lo que parece
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Copias l
ogicas o sin procesar?
Copia l
ogica: en un formato que MySQL puede interpretar (SQL,
CSV)
Copia sin procesar: los archivos de mySQL tal y como est
an
almacenados en disco
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Restauraci
on
Ejecutar el script SQL o importar el CSV con LOAD DATA INFILE
INTO TABLE
Problemas:
En el volcado SQL los esquemas y datos almacenados juntos, en el
volcado CSV no hay esquemas
Los archivos pueden ser enormes (y los editores de texto no podr
an
abrirlos)
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Restauraci
on:
MyISAM: bloquear las tablas y copiar los archivos de datos
InnoDB: parar el servidor y sustituir los archivos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Copia de seguridad y recuperaci
on
Restauraci
on:
Restaurar la copia completa y ejecutar todos los registro binarios
Restauraci
on a un punto concreto del tiempo
Localizar el punto de tiempo en los registros binarios y ejecutar hasta
esa posici
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Contenidos
1
Introducci
on a MySQL
Replicaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Planificar el crecimiento
Estimar hw., capacidad de red y otros recursos para la carga futura
prevista
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Escalabilidad
en sistemas que tienen que mantener un rendimiento estable bajo
Util
carga de trabajo cambiante
Generalmente se utilizan medidas de tiempo de respuesta probando con
diferentes intensidades de carga
La intensidad de carga se varia cambiando (entre otros):
El tama
no de la base datos
El n
umero de conexiones concurrentes
El hw. disponible
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Super Smack
Pruebas de comparaci
on + Prueba de estres + Herramienta de
generaci
on de carga para MySQL y PostgreSQL
M
ultiples usuarios, carga datos de prueba (aleatorios)
Lenguaje neutro (smack) para definir clientes, tablas, consultas, etc.
Desarrollo parado
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
httpload
Utiliza un archivo de entrada con muchas URLs de las que elige
aleatoriamente
Prueba lo m
as r
apido que pueda, o seg
un una velocidad establecida
(-rate)
Tambien simula usuarios concurrentes (-parallel)
JMeter
Aplicaci
on Java para medir el rendimiento de otros programas
Simula usuarios reales (tiempo de escalada configurable)
Interfaz gr
afica que permite reproducir prueba fuera de lnea
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Perfilado de aplicaciones
Contenidos
1
Introducci
on a MySQL
Replicaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Perfilado de aplicaciones
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Perfilado de aplicaciones
Proceso de perfilado
Es necesario incluir c
odigo de perfilado en las aplicaciones que tome
mediciones de:
Tiempo total de ejecuci
on de la p
agina
Tiempo de ejecuci
on de las consultas
Tiempo de llamadas a recursos externos (servicios web)
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Perfilado de aplicaciones
Perfilado en MySQL
MySQL mantiene dos registros de consultas: el registro general y el
registro de consultas lentas
El registro general
Se guardan todas las consultas que se reciben aunque por error no se
terminen ejecutando
Se guardan los eventos de conexi
on y desconexi
on
Sin tiempos de ejecuci
on: de poco interes para el perfilado
BD3: Dise
no Fsico - MySQL
Medici
on de rendimiento y perfilado
Perfilado de aplicaciones
Perfilado en MySQL
Desde la versi
on 5.1.28, MySQL permite realizar perfilado de los
recursos usados en una sesi
on
Se activa mediante la variable profiling
Se consulta mediante SHOW PROFILES y SHOW PROFILE [FOR
QUERY n]
Registra multitud de variables para cada uno de los estados de todas
las consultas ejecutadas
Los datos se pueden consultar agregados o a nivel de consulta
individual
Los datos se guardan en memoria mientras dure la sesi
on
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Evitar valores NULL. Indicar NOT NULL siempre que sea posible
Complicado optimizar si hay columnas con valores NULL
Columnas NULL usan mas espacio de almacenamiento y requieren
procesamiento especial. (i.e. byte adicional en ndice)
A ser posible, usar cero, valor especial, cadena vaca, . . .
Proceso:
Paso 1: Determinar tipo de datos: numerico, cadena, temporal
Paso 2: Elegir tipo especfico
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
VARCHAR
Menos espacio por ser longitud variable
1 o 2 bytes adicionales para almacenar longitud (varchar(10): hasta
11 bytes; varchar(1000): hasta 1002 bytes)
Filas ocupan menos, pero pueden crecer m
as adelante
(fragmentaci
on, reasignaci
on de espacio)
Vale la pena cuando la longitud m
axima de columna es mucho mayor
que la media y hay pocas actualizaciones, o cuando el cjto. caracteres
complejo, codificaci
on variable (UTF-8).
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
BLOB y TEXT
Guardan grandes cantidades de datos (binarios y de cadena)
Cada motor, diferente gesti
on
Evitar usarlos en el ORDER BY ya que el motor Memory no permite
campos TEXT ni BLOB, as que habra que usar myISAM para la
tabla temporal de ordenaci
on)
Truco (longitud lo bastante corta para que la tabla no sobrepase
tmp table size) ORDER BY SUBSTRING(columna text, longitud)
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Elegir tama
no mas peque
no necesario dejando espacio para
crecimiento futuro
Por ejemplo: un entero (4 bytes) para c
odigos de provincias implica
mucho espacio en claves externas
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on 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 recuperan
punteros a las filas en la tabla
Si se define el ndice sobre varias columnas el orden en el que se
indican las columnas es muy importante ya que MySQL solo busca
eficientemente 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 (no
en capa de servidor), por lo que no todos los motores admiten todos
los tipos de ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on 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 usa
compresi
on mientras que InnoDB no usa compresion
Idea general: todos los valores se almacenan en orden y se accede
mediante un arbol en el que cada hoja esta a la misma distancia de
la raz y las paginas de hojas contienen punteros a los registros de la
tabla.
Agiliza acceso a los datos. Se realiza un acceso al nodo raz y e va
descendiendo por las ramas escogiendo punteros adecuados hasta
llegar al valor correcto.
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Arbol
B y B+
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on 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 m
as a la izquierda
apellidos = Allen and nombre like C %
Coincidencia con rango de valores
apellidos >= Allen % and apellidos <= Barrimore %
Cl
ausulas ORDER BY por los campos del ndice
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Arbol
B y B+
Limitaciones. No son u
tiles en:
B
usquedas que no empiezan en la parte m
as izquierda de las
columnas 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 primera
condici
on de rango. Por ejemplo:
apellidos = Allen AND nombre >= J AND fnac = 23-12-1976
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Indices Hash
S
olo soportado por el motor Memory (el indice por defecto)
Para cada fila se crea un c
odigo hash con las columnas indizadas
El ndice es una tabla hash con apuntadores de fila (muy compactos)
Las colisiones de la funci
on hash se almacenan con una lista enlazada
s
Util
olo para b
usquedas que usan todas las columnas del ndice. No
admiten coincidencia parcial de clave
Problemas
No se pueden usar los ndices para ordenar ya que el ndice ordena
por hash, no por el valor original.
No evita leer las filas ya que en el ndice s
olo se almacena un punto
al registro
S
olo permite comparaciones de igualdad (=, IN) pero no consultas
de rangos (>100)
Las colisiones de la funci
on hash ralentizan el acceso y el
mantenimiento
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on 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 ya
que en vez de punteros a registros almacenan valores de clave
primaria
No todos los motores los admiten
InnoDB lo hace implcito con la clave primaria, con un ndice u
nico
sin valores NULL, o con una clave interna oculta
Inconvenientes:
S
olo ahorra E/S si los datos no caben en memoria
La velocidad de inserci
on depende del orden de inserci
on (lo mejor,
en el orden de la clave primaria)
La actualizaci
on es costosa debido a la reubicaci
on de p
aginas
P
aginas m
as sujetas a fragmentaci
on al insertar filas nuevas
Pueden ser m
as lentas para escaneos completos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Otros ndices
Indices espaciales (arbol R)
S
olo en motor MyISAM
S
olo para los tipos de datos y operaciones de geometra espacial
(GEOMETRY)
El soporte espacial de MySQL no es muy completo
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Tablas de contadores
Se aconseja que las tablas de contadores sean independientes
Resulta en tablas rapidas y peque
nas
Un contador es esencialmente un semaforo que crea problemas de
concurrencia
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;
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de esquemas e ndices
Desnormalizacion
Las actualizaciones normalizadas son mas rapidas que las no
normalizadas
En los datos normalizados no hay redundancia por lo que hay menos
datos que modificar
No tener redundancia implica un menor uso de DISTINCT o
GROUP BY
Las tablas normalizadas son mas peque
nas por lo que encajan mejor
en memoria
Sin embargo, en un esquema normalizado las recuperaciones
implican combinaciones que son costosas
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Introduccion
El hardware y el software sobre los que se ejecuta SGBD determinan
la eficiencia de MySQL (tama
no de disco, memoria disponible,
recursos de CPU, red . . . )
Se necesitan directrices para resolver cuellos de botella del hardware
y del sistema operativo
Prestaremos atenci
on a los siguientes aspectos
Selecci
on de CPU
Equilibrar recursos de memoria y disco
Elegir discos (RAID, NAS)
Configuraci
on de red
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Introduccion
Cuellos de botella comunes:
Saturaci
on de CPU. Com
un cuando MySQL trabaja con datos que
caben en memoria o pueden ser ledos de disco tan r
apido como sea
necesario. Ejemplos: ops. criptogr
aficas intensivas, combinaciones sin
ndices
Saturaci
on E/S. Se trabaja con m
as datos de los que caben en
memoria. Se vaca cache para traer m
as datos, y al rato los datos
vaciados se tienen que volver a cargar
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on 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 a
una CPU. Problemas de escala con muchas CPU
En funci
on del tipos de rendimiento deseable:
Baja latencia
Tiempo de respuesta r
apido para cada consulta.
Mejor CPUs r
apidas porque cada petici
on s
olo aprovecha una CPU.
Alto rendimiento:
Muchas peticiones simult
aneas.
Mejor muchas CPUs, pero como MySQL escala mal no funciona el
cuantas m
as mejor.
Al final: meter m
as CPUs hasta que deje de compensar y llegados a
ese punto: intentar que sean lo m
as r
apidas posible.
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Seleccion de la CPU
Cuando compensan muchas CPUs?
MySQL puede aprovechar CPUs secundarias para tareas en segundo
plano (ops. de red, limpieza de b
uferes InnoDB)
Esas tareas son menores en comparaci
on con la ejecuci
on de
peticiones de los usuarios
Muchas CPUs compensan realmente si:
Muchas conexiones que acceden a tablas diferentes (no compiten por
bloqueos)
Rendimiento total del servidor m
as importante que el tiempo de
respuesta de una petici
on particular
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Unidad de cache
Unidad de datos m
as peque
na con la que puede trabajar el motor de
almacenamiento
InnoDB: 16KB
Fila 100 Bytes puede necesitar cargar 32 KB en cach
e (datos e ndice)
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Seleccion de discos
Factores a tener en cuenta:
Capacidad de almacenamiento
No suele ser un problema (tama
no actual de los discos m
as que
suficiente)
Pr
actica est
andar: combinar discos peque
nos y RAID
Ventajoso tener m
as capacidad de la necesaria: aumenta la localidad
de los datos
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Seleccion de discos
Selecci
on de RAID
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Seleccion de discos
M
ultiples vol
umenes D
onde colocamos los archivos?
Archivos de datos e ndice
Archivos de registros transaccionales
Archivos de registros binarios
Archivos de registro general (registros de errores, registro de
peticiones, registro de consultas lentas, . . . )
Archivos y tablas temporales
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Seleccion de discos
M
ultiples vol
umenes
Usar m
ultiples vol
umenes puede ayudarnos a gestionar E/S pesada
Regla cl
asica: registros transaccionales y archivos de datos en
vol
umenes diferentes
E/S secuencial de tx. no interfiere con E/S aleatoria de datos
Ventaja real:
En caso de fallo, mucho m
as seguro tenerlos separados
Si se pierden los datos: se pueden recuperar usando el registro
Recuperaci
on point-in-time
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Seleccion de discos
Dedicar discos a registros transaccionales depende del coste, no del
rendimiento
Ejemplo:
4 discos duros: 2 para datos, 2 para registros transaccionales
1/2 del disco perdido para datos
1 disco para un trabajo trivial (la cach
e del disco hace todo el trabajo)
Configuraci
on tpica:
SO, swap y registros binarios en RAID 1
Resto: un u
nico volumen en RAID 5 o RAID 10
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on de hw. y sw.
Configuracion de red
El mayor problema es la latencia
En una aplicaci
on tpica hay muchas transferencias peque
nas y se
suman los retrasos de cada transmisi
on
La causa principal es la perdida de paquetes, 1 % de perdida produce
degradaci
on significativa
Optimizaciones:
Pocas conexiones, peticiones o resultados grandes: aumentar el
tama
no del buffer TCP
Aumenta el n
umero de paquetes que se pueden mandar de una
tacada
Modificable en origen y destino
S
olo conexiones locales: acortar timeout de cierre de conexi
on (por
defecto, un minuto)
Otras: Eliminar latencia resoluci
on DNS: skip name resolve
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Contenidos
1
2
3
4
Introducci
on a MySQL
Replicaci
on
Copia de seguridad y recuperaci
on
Medici
on de rendimiento y perfilado
Medici
on del rendimiento
Perfilado de aplicaciones
Optimizaci
on
Optimizaci
on de esquemas e ndices
Optimizaci
on de hw. y sw.
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Introduccion
No existe el archivo de configuraci
on
optimo.
Cada servidor necesita una configuraci
on diferente, dependiendo de:
hardware
tama
no datos,
tipos de consultas
Requisitos del sistema (tiempo de respuesta, duraci
on tx,
consistencia, . . . )
La configuraci
on de MySQL predeterminada esta pensada para no
utilizar muchos recursos.
No da por hecho m
aquina dedicada.
Reserva recursos suficientes para iniciar MySQL y ejecutar consultas
sobre pocos datos
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Introduccion
La configuraci
on permanente MySQL se almacena fichero my.cnf
Se configura mediante la asignaci
on de valores a variables
Es posible ejecutar m
ultiples instancias desde una sola configuracion
con secciones independientes.
Ambitos
de las variables:
Global (se aplican al servidor y a cada conexi
on)
Sesi
on (se aplican a una conexi
on especfica)
Especficas para un objeto
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Introduccion
El proceso debe ser el siguiente:
Preparar y realizar mediciones de prueba antes de empezar a ajustar
servidor
Pruebas que representen carga de trabajo real
Incluir consultas complejas
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Introduccion
No comenzar a ajustar configuraci
on sin un esquema y consultas
estables
Todos los ndices creados
Si modificamos esquema despues de ajustar configuraci
on: volver a
empezar
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Memoria para el SO
Necesario reservar memoria para que el SO haga su trabajo
Mejor indicador de asignaci
on correcta: poco intercambio de
memoria virtual
Normalmente: 1-2 GB (incluso en m
aquinas con mucha memoria
fsica)
Asignar siempre algo de memoria adicional (para tareas peri
odicas
que consuman mucha memoria, copias de seguridad . . . )
No tener en cuenta memoria para caches (esa la tratamos aparte)
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Buena soluci
on: observar servidor con carga de trabajo real y
comprobar cu
anta memoria utiliza
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Cache de subprocesos
Pool de procesos libres preparada para conexiones nuevas
Entra conexi
on: se le asigna proceso de la cache
Conexi
on se cierra: proceso vuelve a estar disponible en la cache
Si no hay sitio: el proceso se destruye
N
umero maximo de subprocesos en cache: thread_cache_size
Monitorizaci
on:
Intentar mantener threads_created entre 1-10 por segundo
Revisar threads_connected para configurar el tama
no de la cache
de forma que sea capaz de contener la fluctuaci
on tpica de la carga
de trabajo
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Problemas:
Si servidor se detiene y los bloques no se han volcado, ndice queda
da
nado
Si se retrasan muchas escrituras, las tablas tardan m
as en cerrarse
Demasiados bloques sucios en cache: no dejan espacio para nuevos:
consultas pueden retrasarse
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Supervisi
on del rendimiento:
Anotar valor m
aximo de variable innodb_os_log_written a
intervalos de 10-100 segundos
Usarlo para determinar tama
no del registro y del buffer del registro
M
aximo 100 KB/s : buffer de registros de 1 MB lleno en 10 seg
Archivos de registro de 256 MB: 2.560 segundos de entradas en el
registro
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Tama
no buffer: por defecto, 1 MB
Rango recomendado: 1-8 MB
Al volcar buffer a archivos de log: se vuelcan estos a almacenamiento
duradero
Podemos perder como maximo 1 segundo de transacciones
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Concurrencia
InnoDB antes de MySQL 5.1 responde mal a situaciones de alta
concurrencia
Unica
soluci
on: limitar concurrencia
(innodb_thread_concurrency)
Formula u
til (en la practica, puede ser mejor usar valor mas
peque
no):
concurrencia = num CPUs * num discos * 2
Antes, InnoDB tena muchos semaforos MUTEX
Ahora la concurrencia es mucho mejor en InnoDB, pero la mejora de
la cache de threads qued
o la rama abandonada de MySQL 6.0 y se
ha recuperado en MariaDB
Enxe
nara Inform
atica
BD3: Dise
no Fsico - MySQL
Optimizaci
on
Optimizaci
on del servidor
Miguel R. Luaces
Laboratorio de Bases de Datos
Universidade da Coru
na
Enxe
nara Inform
atica