Está en la página 1de 4

Sistema Administrador de Base de Datos (DBMS)

MySQL

1. Estructura del sistema MySQL

Motores de almacenamiento
El elemento ms notable de la arquitectura de MySQL es la denominada
arquitectura de motores de almacenamiento reemplazables (pluggable storage
engine architecture). La idea de esa arquitectura es hacer una interfaz
abstracta con funciones comunes de gestin de datos en el nivel fsico. De ese
modo, el gestor de almacenamiento puede intercambiarse, e incluso un mismo
servidor MySQL puede utilizar diferentes motores de almacenamiento para
diferentes bases de datos o para diferentes tablas en la misma base de datos.

Esto permite utilizar el motor de almacenamiento ms adecuado para cada


necesidad concreta.
As, las interfaces definidas por MySQL aslan el resto de los componentes de la
arquitectura de las complejidades de la gestin fsica de datos, facilitando el
mantenimiento de los motores de almacenamiento. Esto permite que ciertos
motores de almacenamiento no implementen parte de los servicios, lo cual les
hace inapropiados para algunas aplicaciones pero ms eficientes para otros.
Los elementos que puede implementar un motor de almacenamiento son los
siguientes:
Concurrencia. Es responsabilidad del motor implementar una poltica de
bloqueos (o no implementar ninguna). Una estrategia de bloqueos por fila
permite una mayor concurrencia, pero tambin consume ms tiempo de
procesamiento en aplicaciones en las que la concurrencia no es realmente
grande.
Soporte de transacciones. No todas las aplicaciones necesitan soporte de
transacciones.
Comprobacin de la integridad referencial, declarada como restricciones en el
DDL de SQL.
Almacenamiento fsico, incluyendo todos los detalles de la representacin en
disco de la informacin.
Soporte de ndices. Dado que la forma y tipo de los ndices depende mucho de
los detalles del almacenamiento fsico, cada motor de almacenamiento
proporciona sus propios mtodos de indexacin.
Cachs de memoria. La eficiencia de los cachs de datos en memoria depende
mucho de cmo procesan los datos las aplicaciones. MySQL implementa cachs
comunes en el gestor de conexiones y la cach de consultas, pero algunos
motores de almacenamiento pueden implementar cachs adicionales.
Otros elementos para ayudar al rendimiento, como puede ser el uso de
mltiples hilos para operaciones paralelas o mejoras de rendimiento para la
insercin masiva.
La sentencia SHOW ENGINES nos muestra la lista de motores en MySQL,
incluyendo el motor por defecto y los que no estn disponibles con la
configuracin actual. El resultado para MySQL 5.1. es el siguiente:
Engine

Support

MyISAM

YES

Comment
Default engine as of MySQL 3.23 with great
performance

MEMORY

YES

InnoDB

DEFAULT

BerkeleyDB

NO

BLACKHOLE

YES

EXAMPLE
ARCHIVE
CSV
ndbcluster
FEDERATED
MRG_MYISA
M
ISAM

NO
YES
NO
NO
YES

Hash based, stored in memory, useful for


temporary tables
Supports transactions, row-level locking, and
foreign keys
Supports transactions and page-level locking
/dev/null storage engine (anything you write to it
disappears)
Example storage engine
Archive storage engine
CSV storage engine
Clustered, fault-tolerant, memory-based tables
Federated MySQL storage engine

YES

Collection of identical MyISAM tables

NO

Obsolete storage engine

De la tabla anterior solo podemos tener nociones iniciales del tipo de gestor, y
dirigirnos a alguno de ellos para casos concretos, por ejemplo, ndbcluster tiene
caractersticas nicas si necesitamos soporte para alta disponibilidad.
El motor InnoDB, soporta transacciones a cambio de un sacrificio de la
velocidad de lectura y escritura en un factor 1:10.
El motor MyISAM, este se caracteriza principalmente por ofrecer una
lectura y escritura rpidas. Adems, es el nico motor que posibilita la
bsqueda fulltext.
Adems de InnoDB y MyISAM existen los siguientes motores con unas
caractersticas muy especiales:
MEMORY: Mantiene los datos en memoria, lo que permite obtener una
velocidad muy alta. Por contra, los datos se pierden al apagar el servidor.
MERGE: Posibilita acceder a varias tablas con la misma estructura como
si se tratase de una misma tabla.
BLACKHOLE: Procesa todas las consultas pero no almacena los datos en
ningn sitio. Es como un agujero negro.

Gestor de conexiones
Un gestor de conexin representa una agrupacin de conexiones, en lugar de
una nica conexin de red cliente-servidor de MySQL.
La agrupacin de conexiones consiste en una conexin maestra, y
opcionalmente cualquier nmero de conexiones esclavas.
El gestor de conexiones de MySQL puede configurarse para limitar el nmero
de conexiones concurrentes.

La gestin de conexiones es responsable de mantener las mltiples conexiones


de los clientes. Un gestor de conexiones inexistente o laxo simplemente creara
una conexin por cada cliente conectado. No obstante, las conexiones
consumen recursos de mquina, y crearlas y destruirlas son tambin procesos
costosos.
La idea de los pools de conexiones: hay un nmero de conexiones disponibles,
y cada vez que una aplicacin hace una solicitud, se le asigna una conexin del
pool que no est ocupada.
Dado que las conexiones consumen recursos, es mejor limitar este nmero que
llevar a una carga excesiva en el servidor, que podra acabar en una cada del
sistema o un comportamiento impredecible. Ntese que gracias a los pools de
conexiones, puede darse servicio a muchas conexiones concurrentes con un
nmero limitado de conexiones que se reutilizan.
El gestor de conexiones tambin se ocupa de la autentificacin de los usuarios.
La autentificacin por defecto se basa en el nombre de usuario, la mquina
desde la que se conecta y la password.