mysql motores

28
Administración de MySQL Iñaki Rodríguez ([email protected] / [email protected]) http://www.ackstorm.es http://www.virtualminds.es Mysql Storage Engines

Upload: inaki-rodriguez

Post on 23-Jun-2015

3.047 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Mysql Motores

Administración de MySQL

Iñaki Rodríguez

([email protected] / [email protected])

http://www.ackstorm.es

http://www.virtualminds.es

Mysql Storage Engines

Page 2: Mysql Motores

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

Page 3: Mysql Motores

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?

Page 4: Mysql Motores

11/4/08 /home/irodriguez/mysql-motores.odp page 4

Administración MySQL: ¿Qué es MySQL?

Page 5: Mysql Motores

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

Page 6: Mysql Motores

11/4/08 /home/irodriguez/mysql-motores.odp page 6

Administración MySQL: Motores

MyISAM

MERGE

InnoDB

Memory

Archive

Federated

NDB

PRINCIPALES MOTORESPRINCIPALES MOTORES

Page 7: Mysql 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

Page 8: Mysql Motores

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

Page 9: Mysql Motores

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

Page 10: Mysql Motores

11/4/08 /home/irodriguez/mysql-motores.odp page 10

Administración MySQL: MyISAM – Ficheros

Definición de estructura: .frm

Datos: .MYD

Índices: MYI

Page 11: Mysql Motores

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;

Page 12: Mysql Motores

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

Page 13: Mysql Motores

¿Café?

Page 14: Mysql Motores

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

Page 15: Mysql Motores

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

Page 16: Mysql Motores

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

Page 17: Mysql Motores

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;

Page 18: Mysql Motores

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

Page 19: Mysql Motores

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

Page 20: Mysql Motores

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

Page 21: Mysql Motores

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

Page 22: Mysql Motores

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

Page 23: Mysql Motores

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

Page 24: Mysql Motores

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

Page 25: Mysql Motores

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

Page 26: Mysql Motores

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 ;)

Page 27: Mysql Motores

11/4/08 /home/irodriguez/mysql-motores.odp page 27

Administración MySQL: ¿Preguntas?

¿Preguntas?

Page 28: Mysql Motores

11/4/08 /home/irodriguez/mysql-motores.odp page 28

Administración MySQL

GRACIAS