Los datos (o información) de la Base de Datos se guardan en forma de estructuras y agrupaciones dentro del almacenamiento de disco. Se hace uso de algoritmos para su recuperación y manipulación, así como cambiar las propiedades de dicho almacenamiento. Un SGBD utiliza varios tipos de almacenamiento, organizados con una jerarquía.

Los datos que están siendo procesados/manipulados se encuentran en la caché del procesador. La lectura y escritura de los mismos se realiza desde la memoria, normalmente a través de un bus del sistema.

El motor de almacenamiento es el componente que utiliza el SGBD para gestionar estos datos. El usuario suele interactuar con este motor a través de APIs que facilitan el uso. MySQL, como otros muchos SGBD modernos, soporta múltiples motores de almacenamiento. Los más destacados en este caso son InnoDB y MyISAM.

Para la optimización de las sentencias, MySQL dispone de una serie de comandos descritos a continuación.

Sentencias para análisis de datos

editar

ANALYZE

editar

Este comando analiza y almacena la distribución de claves de una tabla. Funciona para MyISAM, InnoDB y BDB. Resulta especialmente útil para actualizar el índice cuando se ha cargado una gran cantidad de datos. Su sintaxis es:

ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE
    tbl_name [, tbl_name] ...

MySQL usa una distribución de claves almacenada para determinar el orden en que se harán las consultas que utilicen combinaciones de tablas.

Los valores que devuelve el comando son:

  • El nombre de la tabla
  • El tipo de mensaje (error, información, nota o advertencia)
  • Mensaje de texto informativo (Msg_text)

Podemos comprobar la distribución de claves almacenada con el comando SHOW INDEX.

CHECK TABLE

editar

Sirve para revisar y buscar errores en tablas y vistas de tipo MyISAM, InnoDB y ARCHIVE.

CHECK TABLE tbl_name [, tbl_name] ... [option] ...

option = {
    FOR UPGRADE
  | QUICK
  | FAST
  | MEDIUM
  | EXTENDED
  | CHANGED
}

El valor de option se utiliza para determinar incompatibilidades de versión o el grado (creciente) de profundidad en la revisión.

La sentencia devuelve:

  • El nombre de la tabla
  • La operación realizada (check)
  • El tipo de mensaje (error, info, nota, advertencia)
  • Estado de la tabla (OK si no hay errores).

Si el mensaje obtenido no es "OK", es conveniente usar REPAIR para corregir los errores.

CHECKSUM TABLE

editar

Genera una suma de verificación de la tabla. Cada vez que se haga un cambio, producirá una suma distinta, así se puede controlar si la tabla se ha visto alterada. Su sintaxis es:

CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]

Sentencias para reparación y optimización

editar

REPAIR TABLE

editar

Sirve para reparar tablas con información corrupta (errores en los datos o en los índices). No se recomienda su uso a no ser que se trate con errores graves del sistema.

REPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE
    tbl_name [, tbl_name] ...
    [QUICK] [EXTENDED] [USE_FRM]

Las cláusulas:

  • QUICK: Repara únicamente los archivos de índices.
  • EXTENDED: Crea el índice fila a fila (es menos seguro)
  • USE_FRM: Basa la reparación en el fichero .frm correspondiente, para el caso de que el MYI de índices esté ausente o corrupto.

La información que devuelve es:

  • El nombre de la tabla procesada.
  • La operación realizada (repair).
  • El tipo de mensaje (status, error, info, warning).
  • Mensaje de estado de la tabla (OK en caso de ir todo bien).

OPTIMIZE TABLE

editar

Este comando es útil cuando se han realizado una gran cantidad de modificaciones o borrados sobre tablas que utilizan tipos variables (varchar, varbinary, blob, text). Su función es desfragmentar las tablas y liberar espacio, optimizando el uso del almacenamiento. Su sintaxis es:

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE
    tbl_name [, tbl_name] ...

La información que devuelve es:

  • El nombre de la tabla optimizada..
  • La operación realizada (optimize).
  • El tipo de mensaje (status, error, info, warning).
  • Mensaje de estado de la tabla (OK en caso de ir todo bien).