Upload
inaki-rodriguez
View
3.045
Download
0
Embed Size (px)
Citation preview
Administración de MySQL
Iñaki Rodríguez
([email protected] / [email protected])
http://www.ackstorm.es
http://www.virtualminds.es
Mysql Storage Engines
11/4/08 /home/irodriguez/mysql-motores.odp page 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 3
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
Administración MySQL: ¿Qué es MySQL?
11/4/08 /home/irodriguez/mysql-motores.odp page 4
Administración MySQL: ¿Qué es MySQL?
11/4/08 /home/irodriguez/mysql-motores.odp page 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 6
Administración MySQL: Motores
MyISAM
MERGE
InnoDB
Memory
Archive
Federated
NDB
PRINCIPALES MOTORESPRINCIPALES MOTORES
11/4/08 /home/irodriguez/mysql-motores.odp page 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 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 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 10
Administración MySQL: MyISAM – Ficheros
Definición de estructura: .frm
Datos: .MYD
Índices: MYI
11/4/08 /home/irodriguez/mysql-motores.odp page 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 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
¿Café?
11/4/08 /home/irodriguez/mysql-motores.odp page 14
Administración MySQL: InnoDB - Generalidades
Motor de terceros (ahora de Oracle)
Transaccional ACID Compliant
InnoDB Tablespace
Row-Locking
Foreign Keys / Integridad referencial
No tan rápida como MyISAM
Aplicaciones de negocio
Posibles deadlocks
11/4/08 /home/irodriguez/mysql-motores.odp page 15
Administración MySQL: InnoDB - Transacciones
Innodb es ACID Compliant
Atomic
Consistent
Isolated
Durable
SET AUTOCOMMIT = 0
START TRANSACTION / COMMIT / ROLLBACK
SAVEPOINT / ROLLBACK TO SAVEPOINT
11/4/08 /home/irodriguez/mysql-motores.odp page 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 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 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 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 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 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 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 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 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 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:[email protected]/dbname/FED_TBL;
Las querys se ejecutan en remoto
11/4/08 /home/irodriguez/mysql-motores.odp page 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 27
Administración MySQL: ¿Preguntas?
¿Preguntas?
11/4/08 /home/irodriguez/mysql-motores.odp page 28
Administración MySQL
GRACIAS