Resumen
MySQL es un sistema de administracion de base de datos
relacional. Logicamente, los datos se estructuran en tablas que
se relacionan entre si por un campo comun. MySQL incorpora una
caracteristica unica llamada "motores de almacenamiento", que nos
permite seleccionar el tipo de almacenamiento interno de cada
tabla, en base al que mejor se adecue a una situacion particular,
entre los mas populares se encuentran MyISAM e InnoDB. MySQL
utiliza indices para la optimizacion de consultas,
los cuales facilitan a MySQL recuperar eficientemente los datos
de una tabla.
Palabras Clave—Motor de Almacenamiento,
indices, espacio en disco.
1
INTRODUCCION
Esta investigacion, no se concentraraen los aspectos
tecnicos de los diferentes motores de almacenamiento, sino que se
concentrarasobre como y donde estos diferentes motores pueden ser
empleados de la mejor manera. Tambien se incluye un analisis
detallado de la estructura y utilizacion de los indices y sus
beneficios.
A continuacion se describe brevemente lo que es un motor
de almacenamiento y la indexacion:
El servidor MySQL incorpora una caracteristica unica
llamada "motores de almacenamiento", que nos permite seleccionar
el tipo de almacenamiento interno de cada tabla, en base al que
mejor se adecue a una situacion particular. Dicha seleccion, la
hace el desarrollador a nivel de tabla, y no afecta a la manera
en que el servidor interactua con el cliente: los comandos SQL
seran los mismos sea cual sea el motor de almacenamiento
escogido. El cliente no necesita saber como se guardan los
datos.
El motor de almacenamiento es quien
almacenara, manejaray recuperara informacion de una tabla en
particular. Comparando MyISAM vs InnoDB, ninguno se destaca como
la solucion para la mayoria de los casos. Cada uno tiene sus pros
y sus contras, por lo tanto al momento de decidir que motor de
almacenamiento a utilizar dependeramucho del escenario donde se
aplique.
En la optimizacion de consultas se hace
uso del indexado, la indexacion puede aumentar
drasticamente el rendimiento al buscar y recuperar datos de la
base de datos. Los diferentes motores de almacenamiento ofrecen
diferentes tecnicas de indizacion y algunos pueden ser mas
adecuados para el tipo de datos que se encuentren.
2 MOTORES DE
ALMACENAMIENTO
2.1 ¿Que es un Motor de
Almacenamiento?
Los datos en MySQL se almacena en archivos o memoria
usando una variedad de diferentes tecnicas. Cada una de estas
tecnicas emplean diferentes mecanismos de almacenamiento, la
indexacion facilita, los niveles de bloqueo y, en definitiva,
proporciona una gama de diferentes funciones y capacidades. Al
elegir una tecnica diferente podemos ganar mas velocidad o
funcionalidad de los beneficios que mejoren la funcionalidad de
nuestra aplicacion.
Por ejemplo, si trabajamos con una gran cantidad de
datos temporales, podemos hacer uso del motor de almacenamiento
MEMORY, que almacena todos los datos de las tablas en la memoria.
Alternativamente, podemos querer una base de datos que soporte
transacciones para garantizar la capacidad de datos.
Cada una de estas diferentes tecnicas y suites de
funcionalidad en el sistema de MySQL que se denomina un motor de
almacenamiento tambien conocido como tipo de tabla. Por defecto,
MySQL viene con una serie de diferentes motores de almacenamiento
preconfigurado y habilitado en el servidor MySQL.
Podemos seleccionar el motor de
almacenamiento a utilizar en un servidor, base de datos e incluso
la tabla base, proporcionandonos mayor flexibilidad a la hora de
elegir la forma en que la informacion se almacenara, como se
indexa y quecombinacion de rendimiento y funcionalidad deseamos
utilizar con los datos.
Esta flexibilidad de elegir la forma en que los datos
son almacenados y la indexacion es una de las principales razones
por las queMySQL es tan popular; otros sistemas de bases de
datos, incluidas la mayoria de las opciones comerciales, soportan
un unico tipo de almacenamiento de base de datos.
Lamentablemente, el "tamaño de un enfoque unico para
todos" en estas otras soluciones significa un sacrificio en el
rendimiento de la funcionalidad, o tener que pasar horas o
incluso dias de ajuste adecuado para la base de datos. Con MySQL,
podemos cambiar el motor que estamos utilizando.
2.2 Diferenciando
los Motores
La mayoria de las personas que utilizan MySQL saben que
MyISAM e InnoDB son los dos motores de almacenamientos mas
comunes en MySQL. Tambien es sabido, que la mayoria no toma en
cuenta el motor de almacenamiento al crear una tabla y acepta el
que viene por default en la base de datos.
Con el fin de tomar una decision acerca de cual motor
elegir, primero tenemos que pensar en las diferentes
funcionalidades basicas en cada uno de los motores que nos
permitan diferenciarlos entre ellos. En general podemos dividir
la funcionalidad basica en cuatro partes, el apoyo sobre campos y
tipos de datos, tipos de bloqueo, indizacion y
transacciones.
• Campos y Tipos de Datos:
Aunque todas los motores soportan los tipos comunes datos, es
decir, enteros, reales y caracteres, no todos los motores apoyan
otros tipos de campo, en particular la BLOB "grandes objetos
binarios" o tipos de texto. Otros motores pueden soportar anchuta
de caracter y tamaños de datos limitado.
Mientras estas limitaciones, afectan directamente a la
informacion que tiende tambien a tener un efecto relacionado con
los tipos de busquedas que se realizan, o sobre los indices que
se creen sobre esa informacion. A su vez, estas diferencias
pueden afectar el rendimiento y la funcionalidad de la
aplicacion, es por ello que se pueden tomar decisiones a cerca de
la funcionalidad del motor de almacenamiento que se elija para el
tipo de datos que se estealmacenando.
• El Bloqueo: El bloqueo
dentro de las bases de datos, define como es controlado el acceso
y la actualizacion de informacion. Cuando un objeto en la base de
datos establoqueado para la actualizacion, otros procesos no
pueden modificar o en algunos casos leer los datos hasta que la
actualizacion ha terminado.
• Indexacion: la indexacion
puede aumentar drasticamente el rendimiento al buscar y recuperar
datos de la base de datos. Los diferentes motores de
almacenamiento ofrecen diferentes tecnicas de indizacion y
algunos pueden ser mas adecuados para el tipo de datos que se
encuentren.
Algunos motores de almacenamiento simplemente no
soportan la indexacion, ya sea porque todos los que utilizan la
indexacion de las tablas fundamentales o porque el metodo de
almacenamiento de datos no permite la indexacion.
• Transacciones: Las
transacciones proporcionan fiabilidad de los datos durante la
actualizacion o insercion de la informacion permitiendo
añadir datos a la base de datos, pero solo depositan estos
datos cuando las condiciones y otras etapas en la ejecucion de la
aplicacion han finalizado con exito. Por ejemplo, cuando la
transferencia de informacion de una cuenta a otra deberiamos usar
transacciones para asegurarnos de que tanto la domiciliacion
bancaria de una cuenta y el credito se ha completado
correctamente. Si bien el proceso ha fallado, podriamos cancelar
la transaccion y los cambios se perderian. Si el proceso es
completado, entonces lo confirmariamos depositando los
cambios.
2.3 Tipos de
Motores de MySQL
MySQL dispone de una docena de motores de almacenamiento
propios, mas los motores externos desarrollados por terceras
partes que se pueden incorporar al servidor. Algunos de los mas
conocidos son: MyISAM, InnoDB, HEAP, NDB. En este capitulo se le
daramayor enfasis a los motores MyISAM e InnoDB, los cuales
trataremos mas adelante.
A continuacion se describe brevemente cada uno de los
motores de almacenamiento, mas adelante se trataran con mas
detalle los motores MyISAM e InnoDB:
• MyISAM trata
tablas no transaccionales.
Proporciona almacenamiento y recuperacion de datos
rapida, asi como posibilidad de busquedas fulltext. MyISAM se
soporta en todas las configuraciones MySQL, y es el motor de
almacenamiento por defecto a no ser que tenga una configuracion
distinta a la que viene por defecto con MySQL.
• El motor de
almacenamiento MEMORY anteriormente conocido como el monton motor
de almacenamiento almacena todos los datos en memoria, una vez
que se ha decidido apagar el servidor MySQL, cualquier
informacion almacenada en una base de datos MEMORY se han
perdido. Sin embargo, el formato de las tablas individuales se
mantiene y esto le permite crear tablas temporales que se pueden
utilizar para almacenar informacion para un acceso rapido sin
tener que recrear las tablas cada vez que el servidor de base de
datos es iniciado.
A largo plazo, el uso del motor MEMORY en general, no
una buena idea, porque los datos podrian ser tan perdidos
facilmente. Sin embargo, se tiene la RAM para soportar las bases
de datos en las que se estan trabajando, el uso de tablas MEMORY
es una forma eficiente de correr consultas complejas sobre
grandes conjuntos de datos y beneficiandonos de las ganancias del
rendimiento.
• El motor de
almacenamiento MERGE permite una coleccion de tablas MyISAM
identicas ser tratadas como una simple tabla. Como MyISAM, los
motores de almacenamiento MEMORY y MERGE tratan tablas no
transaccionales y ambos se incluyen en MySQL por defecto. Podemos
ejecutar consultas que devuelven los resultados de multiples
tablas como si se tratara de una sola tabla. Cada tabla fusionada
debe tener la misma definicion de tabla. Las tablas MERGE son
particularmente efectivas si estamos logging directorios de
datos, directa o indirectamente, en una base de datos MySQL y
creando una tabla individual por dia, semana o mes y queriendo
ser capaces de producir consultas agregadas de multiples tablas.
Hay limitaciones para esto sin embargo, podemos fusionar tablas
MyISAM y la restriccion de definicion de identica de tabla es
estrictamente forzada.
• El motor de
almacenamiento ISAM es el motor original disponible en las
versiones de MySQL hasta que se introdujo el motor de
almacenamiento MyISAM en MySQL.
ISAM tiene un numero de diferentes limitaciones que lo
hacen poco practico como un motor de base de datos. Estos
incluyen el formato de almacenamiento, que es nativo de la
plataforma y por lo tanto, no entre sistemas portatiles, un
tamaño maximo de tabla de 4GB y limitado a busquedas de
solo texto. Los indices son tambien son mas limitados, desde que
MyISAM es compatible con las mismas plataformas que ISAM, y
ofrece una mejor compatibilidad, portabilidad y
rendimiento.
• El motor EXAMPLE es en
realidad un ejemplo de programacion de un motor de almacenamiento
que puede ser utilizado como base para otros motores en el
sistema de MySQL. No soporta las inserciones de datos y no es un
motor practico para cualquier forma de acceso a bases de datos.
Sin embargo, es una buena guia de como desarrollar su propio
motor de almacenamiento y, por tanto, una eficaz guia para los
programadores.
• NDB Cluster
es el motor de almacenamiento usado por MySQL Cluster para
implementar tablas que se particionan en varias maquinas.
Estadisponible en distribuciones binarias MySQLMax 5.0. Este
motor de almacenamiento estadisponible para Linux, Solaris, y Mac
OS X.
• El motor de
almacenamiento ARCHIVE se usa para guardar grandes cantidades de
datos sin indices con una huella muy pequeña.
• El motor de
almacenamiento CSV guarda datos en ficheros de texto usando
formato de valores separados por comas.
• El motor de
almacenamiento FEDERATED se añadioen MySQL 5.0.3. Este
motor guarda datos en una base de datos remota. En esta version
solo funciona con MySQL a traves de la API MySQL C
Client.
2.4 El Motor
MyISAM
MyISAM es el motor de almacenamiento por defecto. Se
basa en el codigo ISAM pero tiene muchas extensiones utiles. Cada
tabla MyISAM se almacena en disco en tres ficheros. Los ficheros
tienen nombres que comienzan con el nombre de tabla y tienen una
extension para indicar el tipo de fichero. Un fichero .frm
almacena la definicion de tabla. El fichero de datos tiene una
extension .MYD. El fichero indice tiene una extension .MYI
MYIndex.
El motor MyISAM proporciona la mejor
combinacion de rendimiento y funcionalidad, a pesar de que
carece de la capacidad de transaccion en cambio utiliza el nivel
de tabla de bloqueo.
A menos que necesitemos transacciones,
hay pocas bases de datos y aplicaciones que no
pueden ser almacenados de manera efectiva usando el motor MyISAM.
Sin embargo, en aplicaciones de alto rendimiento en las que hay
un gran numero de inserciones o actualizaciones de datos en
comparacion con el numero de lecturas puede provocar problemas
para el motor MyISAM. Originalmente fue diseñado con la
idea de que mas del 90% de los accesos de de las bases de datos
una tabla MyISAM serian para lectura, mas bien que para
escritura.
Con el nivel de tabla de bloqueo, una
base de datos con un elevado numero de fila las
inserciones o actualizaciones se convierten en un cuello de
botella de rendimiento como la tabla establoqueada mientras que
los datos se añaden. Afortunadamente, esta limitacion
tambien funciona bien dentro de las restricciones de
las bases de datos no-transaccionales.
Algunas caracteristicas del motor de
almacenamiento MyISAM son:
• MyISAM es el
motor de almacenamiento por default y estabasado en el probado
ISAM, incorporando nuevas caracteristicas pero conservando su
fiabilidad.
• MyISAM
almacena la informacion en tres archivos por tabla, uno para el
formato de tabla, otro para los datos y un tercer archivo para
los indices.
• Los campos Text y Blob
pueden ser indexados completamente, lo que es de gran importancia
para funciones de busqueda.
• No
transaccional.
• Bloqueos a
nivel de tabla.
• Muy rapido
en lectura y escritura.
• Bajo requerimiento de
espacio en disco y memoria.
• Los datos se
guardan en disco: diferentes ficheros para la definicion de la
tabla, los datos y los indices.
• Es una buena eleccion
cuando necesitamos velocidad, y tenemos pocas modificaciones
simultaneas de la tabla.
• Ficheros grandes se
soportan en sistemas de ficheros y sistemas operativos que
soportan ficheros grandes.
• Registros de
tamaño dinamico se fragmentan mucho menos cuando se
mezclan borrados con actualizaciones e inserciones. Esto se hace
combinando automaticamente bloques borrados adyacentes y
extendiendo bloques si el siguiente bloque se borra.
• La longitud
maxima de clave es 1000 bytes.
Esto puede cambiarse recompilando. En caso de clave
mayor a 250 bytes, se usa un tamaño de bloque mayor, de
1024 bytes.
• Las columnas BLOB y TEXT
pueden indexarse.
• Valores NULL se permiten
en columnas indexadas. Esto ocupa 0-1 bytes por clave.
EL PRESENTE TEXTO ES SOLO UNA SELECCION DEL TRABAJO
ORIGINAL.
PARA CONSULTAR LA MONOGRAFIA COMPLETA SELECCIONAR LA OPCION
DESCARGAR DEL MENU SUPERIOR.