Optimización y Mantenimiento de Tablas MySQL: Implementación y Conexión en Aplicaciones Web PHP

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,89 KB

Mantenimiento y Optimización de Tablas MySQL

Uso de ANALYZE TABLE

El comando ANALYZE TABLE se utiliza para todo tipo de tablas y almacena la distribución de claves de una tabla. La tabla se bloquea con un bloqueo de lectura para motores como MyISAM e InnoDB.

Sintaxis SQL:

mysql> ANALYZE TABLE NOMBRETABLA;

ANALYZE TABLE devuelve un conjunto de resultados. La tabla solo se analizará de nuevo si se ha modificado desde la última vez que se ejecutó el comando.

Comprobación y Reparación de Tablas (CHECK TABLE y mysqlcheck)

Las caídas del sistema o los cortes del suministro eléctrico pueden dañar las tablas. Podemos comprobar el estado de las tablas utilizando CHECK TABLE o la utilidad de línea de comandos mysqlcheck (si el servidor está en ejecución).

Síntomas de Tablas Dañadas

  • La información se devuelve muy lentamente.
  • No se encuentran datos que deberían existir.
  • Aparición de errores como: finales de archivo inesperado, nombredetabla.frm bloqueado ante cambios, o no se puede encontrar el archivo tabla.MYI.

Sintaxis SQL para comprobación:

mysql> CHECK TABLE nombre_tabla;

El comando puede producir varios registros de información para cada tabla chequeada. El último registro tiene un valor Msg_type de status y Msg_text que normalmente debe ser OK. Si no se obtiene OK o Table is already up to date, se debe realizar una reparación de la tabla.

Nota importante: Las opciones de chequeo se aplican solo para tablas MyISAM, ignorando tablas InnoDB y vistas.

Sintaxis y Opciones de mysqlcheck

La utilidad mysqlcheck se ejecuta desde la línea de comandos (shell):

shell> mysqlcheck [opciones] nombrebasedato nombretabla/s –u root –p

También se puede usar para analizar tablas:

shell> mysqlcheck -a nombre_bd nombre_tabla/s o base de datos

Opciones de mysqlcheck

  • --auto-repair: Si una tabla comprobada está corrupta, la repara automáticamente.
  • --check, -c: Comprueba las tablas en busca de errores.
  • --check-only-changed, -C: Solo comprueba tablas que han cambiado desde la última comprobación o que no se han cerrado correctamente. Procesa todas las tablas en la base de datos especificada.
  • --fast, -F: Comprueba solo tablas que no se han cerrado correctamente.
  • --medium-check, -m: El chequeo es más rápido que la operación --extended. Este método encuentra el 99.99% de todos los errores.

Integración de Bases de Datos en Aplicaciones Web

Ventajas de las Bases de Datos Web

  • Proporcionar información actualizada.
  • Facilitar la realización de búsquedas.
  • Disminuir los costes de mantenimiento.
  • Implementar sistemas de control de acceso.
  • Almacenar preferencias de los usuarios.

Flujo de Integración (Aplicación y Base de Datos)

  1. La aplicación (app) se conecta a la base de datos (BD).
  2. La app realiza cualquier operación (consulta, inserción, etc.).
  3. La BD proporciona la información solicitada.
  4. La app, a partir de la información de la BD, maneja los datos y los presenta en pantalla al usuario.

Gestión de Conexiones PHP (Funciones mysql_*)

El sistema de acceso básico requiere tres pasos:

  1. Iniciar la conexión con la base de datos.
  2. Ejecutar las sentencias SQL.
  3. Cerrar la conexión.

Establecer Conexión

$conexion = mysql_connect("nombrehost", "usuario", "contraseña");

Seleccionar Base de Datos

mysql_select_db("nombrebasededatos");

Cerrar Conexión

mysql_close($conexion);

Ejemplo de Conexión y Selección de BD en PHP

<?php
$MySQL_host = "localhost";
$MySQL_database = "alumnos";
$MySQL_user = "root";
$MySQL_password = "";

$conexion = mysql_connect($MySQL_host, $MySQL_user, $MySQL_password)
    or die ("La conexión no se ha podido realizar");

mysql_select_db($MySQL_database);
?>

Operaciones DDL Básicas (Creación de BD y Tablas)

Crear Base de Datos

La sintaxis para ejecutar una consulta es: $consulta = mysql_query(instrucción);

<?php
$MySQL_host = "localhost";
$MySQL_user = "root";
$MySQL_password = "";

$conexion = mysql_connect($MySQL_host, $MySQL_user, $MySQL_password)
    or die ("La conexión no se ha podido realizar");

$query = "CREATE DATABASE profesores";
$result = mysql_query($query);
?>

Creación de Tablas

Podemos añadir a la sentencia CREATE TABLE la opción IF NOT EXISTS para evitar sobrescribir tablas existentes.

<?php
$MySQL_host = "localhost";
$MySQL_user = "root";
$MySQL_password = "";

$conexion = mysql_connect($MySQL_host, $MySQL_user, $MySQL_password)
    or die ("La conexión no se ha podido realizar");

// Se asume que la BD 'profesores' ya existe o se crea aquí
$MySQL_database = "profesores";
mysql_select_db($MySQL_database);

$query = "CREATE TABLE profesores (
    NOMBRE VARCHAR(30),
    APELLIDOS VARCHAR(60)
)";
$result = mysql_query($query);

// Ejemplo con IF NOT EXISTS
// $query_safe = "CREATE TABLE IF NOT EXISTS nombretabla (campo1, campo2...)";
?>

Entradas relacionadas: