Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Motores de almacenamiento y manejo de Indices en MySQL



    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 ClaveMotor 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.

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter