Proyecto integrador. Las TIC en la sociedad S4.pptx
Mysql Motores
1. Administración de MySQL
Mysql Storage Engines
Iñaki Rodríguez
(irodriguez@ackstorm.es / irodriguez@virtualminds.es)
http://www.ackstorm.es
http://www.virtualminds.es
2. Administración MySQL: ¿Qué era MySQL?
Simple
No transaccional
Rápido acceso
Fácil de usar
Desarrollada por una pequeña empresa
GPL
11/4/08 /home/irodriguez/mysql-motores.odp page 2
3. Administración MySQL: ¿Qué es MySQL?
Version Comercial y GPL (community)
Transaccional
Alta disponibilidad (réplica y clustering)
Semi modular
Triggers, store procedures, vistas,...
Multiples motores de BBDD
Motores de terceros
Sun Microsystems
11/4/08 /home/irodriguez/mysql-motores.odp page 3
5. Administración MySQL: Motores
Almacenan datos e índices
Características propias
Abstracción
SHOW ENGINES
Varios motores para una sola BBDD
Disco, Memoria y Remoto
11/4/08 /home/irodriguez/mysql-motores.odp page 5
7. Administración MySQL: MyISAM - Generalidades
No transaccional
Bloqueo a nivel de tabla
Ventaja: no hay deadlocks
Desventaja: Desaconsejado en lecturas/escrituras
Rapidez en consultas
Portable
Flag estado en índices
Lecturas o Escrituras pero no ambas
11/4/08 /home/irodriguez/mysql-motores.odp page 7
8. Administración MySQL: MyISAM - Bloqueos
A nivel de tabla
Inserciones concurrentes
OPTIMIZE TABLE defragmenta la tabla
Prioridades (Escrituras vs. Consultas)
LOW_PRIORITY
HIGH_PRIORITY
DELAYED
11/4/08 /home/irodriguez/mysql-motores.odp page 8
9. Administración MySQL: MyISAM – Formatos
FIXED
Ventaja: Búsquedas más rápidas
Ventaja: Tamaño fijo de registro
Desvantaja: Ocupan más espacio
DYNAMIC
Ventaja: Ocupan menos
Desventaja: Más fragmentación
Desventaja: Más lenta
COMPRESED
Ventaja: Ocupan mucho menos espacio
Desventaja: Solo lectura
11/4/08 /home/irodriguez/mysql-motores.odp page 9
10. Administración MySQL: MyISAM – Ficheros
Definición de estructura: .frm
Datos: .MYD
Índices: MYI
11/4/08 /home/irodriguez/mysql-motores.odp page 10
11. Administración MySQL: MERGE - Generalidades
Colección de tablas MyISAM
Tienen que ser idénticas
Más lentas que MyISAM
Operaciones soportadas:
SELECT, DELETE, UPDATE
INSERT: Con clausula en CREATE TABLE
create table t1(texto varchar(100)) ENGINE=MYISAM;
create table t2(texto varchar(100)) ENGINE=MYISAM;
create table total(texto varchar(100)) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
11/4/08 /home/irodriguez/mysql-motores.odp page 11
12. Administración MySQL: MERGE - Ficheros
Definición de estructura: .frm y .MRG
Datos: .MYD del conjunto
Índices: MYI del conjunto
t1
t2
#INSERT_METHOD=LAST
11/4/08 /home/irodriguez/mysql-motores.odp page 12
16. Administración MySQL: InnoDB – Transaction Isolation
READ UNCOMMITED
Transacciones incompletas
READ COMMITED
Misma consulta, resultados distintos
REPEATABLE READ
Por defecto
Consistencia
SERIALIZABLE
Igual que la anterior
+ registro consultado no puede cambiarse hasta COMMIT
11/4/08 /home/irodriguez/mysql-motores.odp page 16
17. Administración MySQL: InnoDB – Transaction Isolation
Configuración por defecto desde my.cnf
[mysqld]
transaction-isolation = READ-COMMITED
Desde la sesión
SET GLOBAL TRANSACTION ISOLATION LEVEL nivel;
SET SESSION TRANSACTION ISOLATION LEVEL nivel;
SET TRANSACTION ISOLATION LEVEL nivel;
11/4/08 /home/irodriguez/mysql-motores.odp page 17
18. Administración MySQL: InnoDB - Bloqueos
No locks en consultas (multi-version)
Row-level locking
N clientes -> mismo registro (lectura)
N clientes -> distinto registro (escritura)
N clientes -> mismo registro (escritura / imposible)
Sin posibilidad de lectura salco READ UNCOMMITED
Tratamiendo de Deadlocks
Detectado: ROLLBACK menos registros
Sin detectar: Timeout y ROLLBACK
11/4/08 /home/irodriguez/mysql-motores.odp page 18
19. Administración MySQL: InnoDB – Buffers y Logs
Buffer de datos
innodb_buffer_pool_size (8MB por defecto)
Reduce el acceso a disco
Buffer de transacciones
innodb_log_buffer_size (1MB por defecto)
Entre 1MB y 8MB (más no recomendable)
Log de transacciones
ib_logfile0 / ib_logfile1
innodb_log_files_in_group = n
innodb_log_file_size = nnM
Escritura del buffer a disco cada segundo
11/4/08 /home/irodriguez/mysql-motores.odp page 19
20. Administración MySQL: InnoDB – Transaction buffer
Cada transacción se guarda en memoria y luego se
escribe en disco
Dos operaciones: write y flush (buffer FS)
Control del E/S generado
innodb_flush_log_at_trx_commit = n
0 – W/F cada segundo. Perdida en caída
1 – ACID Compliance: W/F después de cada COMMIT
2 – W en commit. Flush cada segundo. Más segura que 0
11/4/08 /home/irodriguez/mysql-motores.odp page 20
21. Administración MySQL: InnoDB – Ficheros
Definición de la tabla: .frm
Tablespace
Índices y datos en un solo espacio
Compartido para todas las tablas
También pueden repartirse en varios tablespace
Fichero o raw
innodb_data_file_path = ibdata1:10M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_data_file_path =
ibdata1:10M:autoextend:max:50M
innodb_data_file_path = /dev/sda1:10Gnewraw
innodb_data_file_path = /dev/sda1:10Graw
SHOW ENGINE INNODB STATUS
11/4/08 /home/irodriguez/mysql-motores.odp page 21
22. Administración MySQL: MEMORY
Velocidad tremenda
Estructura de tabla en disco, datos e índices en
memoria
No sobrevive a un reinicio, la estructura sí
No pueden usarse ni TEXT ni BLOB
Indices
HASH: Para operaciones de comparacion (= / <=>)
BTREE: Para el resto
11/4/08 /home/irodriguez/mysql-motores.odp page 22
23. Administración MySQL: ARCHIVE
Se usa para almacenar grandes cantidades de
datos
Compresión en cada inserción
Sin índices
No soporta AUTO_INCREMENT
Datos y definición: .ARZ y .ARM
.ARN en proceso OPTIMIZE TABLE
Lock a nivel de tabla
11/4/08 /home/irodriguez/mysql-motores.odp page 23
24. Administración MySQL: FEDERATED - Generalidades
Tabla en servidor remoto
Nueva en MySQL 5.x
Definición en local
No transaccional
SELECT, DELETE, UPDATE, e INSERT
Sin bloqueos
11/4/08 /home/irodriguez/mysql-motores.odp page 24
25. Administración MySQL: FEDERATED - Conexión
Datos de conexión en comentario
Nodo1 (192.168.1.1)
CREATE TABLE FED_TBL ( texto varchar(100) NOT NULL);
Nodo2 (192.168.1.2)
CREATE TABLE FED_TBL (texto varchar(100) NOT NULL) ENGINE=FEDERATED
COMMENT=’mysql://user:pass@192.168.1.1/dbname/FED_TBL;
Las querys se ejecutan en remoto
11/4/08 /home/irodriguez/mysql-motores.odp page 25
26. Administración MySQL: NDB
Primer sistema en Cluster
Mysql > 4.1
HA
Alto rendimiento
Escalable
Detalles para otra charla ;)
11/4/08 /home/irodriguez/mysql-motores.odp page 26