Optimización de MySQL: Permisos, Acceso y Motores de Almacenamiento (MyISAM, InnoDB)

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,55 KB

Gestión de Permisos y Acceso en MySQL

Tabla de Permisos

El servidor usa las tablas user, db y host. Los permisos de la tabla user son globales y se aplican a todas las bases de datos. Si un permiso está en 'N', se pasará al siguiente nivel, es decir, a db, y así sucesivamente con tables_priv y columns_priv.

Control de Acceso

Nuestra identidad se basa en dos elementos: el nombre de la máquina cliente y nuestro nombre de usuario MySQL. host y user.% significan cualquier cliente.

Verificación de Permisos

Los privilegios de la tabla user son de superusuario. Es aconsejable otorgar solo estos privilegios a los administradores. Para otros usuarios, se les asigna 'N' y se les otorgan permisos a un nivel más específico.

Gestión de Privilegios

Si modificamos las tablas grant utilizando GRANT, REVOKE o SET PASSWORD, las tablas se recargan en memoria inmediatamente. Pero si lo hacemos con INSERT, UPDATE o DELETE, es necesario reiniciar el servidor o recargar manualmente con FLUSH PRIVILEGES o el comando mysqladmin flush-privileges.

Motores de Almacenamiento (Engines) en MySQL

MySQL es modular y permite elegir entre diferentes motores de almacenamiento (engines) para los datos. Los engines se aplican a tablas, no a bases de datos. Puedes tener una base de datos con diferentes engines, dependiendo del tipo de datos o consultas que se realicen. Las tablas tienen el formato .frm. Este fichero guarda la estructura de la tabla. Independientemente del engine, tendremos un .frm. Además, podemos tener otros ficheros acompañando al .frm.

MyISAM

Virtudes y Defectos de MyISAM

Hay que conocer bien sus virtudes y defectos:

  • Virtudes:
    • Soporta búsquedas FULLTEXT.
    • Se puede usar para generar tablas MERGE.
    • Suele ser el más rápido en lecturas.
    • Se pueden comprimir tablas para ahorrar espacio.
  • Defectos:
    • Al escribir se hace uso de bloqueo de tabla.
    • No soporta transacciones, integridad referencial o claves externas.
    • No tiene cacheo de datos.

Gestión de Prioridades con Schedulers (MyISAM)

Las prioridades pueden modificarse haciendo uso de los schedulers:

  • LOW PRIORITY: Para las consultas que escriben datos. La escritura se queda esperando a que terminen todas las lecturas, incluso las que llegan después. Se escribirá cuando no exista ninguna lectura pendiente.
  • HIGH PRIORITY: Para las consultas de lectura. Las consultas con este modificador se mueven al principio de la cola, por delante de otras escrituras y lecturas.
  • DELAYED: Para consultas INSERT y REPLACE. El servidor mete en un búfer las filas y las inserta cuando la tabla no se esté usando.

Formatos de Almacenamiento MyISAM

MyISAM puede almacenar las filas en tres formatos: FIXED, DYNAMIC y COMPRESSED.

  • FIXED:
    • Todas las filas tienen el mismo tamaño.
    • Ocupan más espacio.
    • Se encuentran más rápido.
  • DYNAMIC:
    • Usa un tamaño variable de datos (menos que FIXED).
    • Las filas no se encuentran tan eficientemente.
    • Puede haber más fragmentación.
  • COMPRESSED:
    • Ocupan mucho menos espacio.
    • Optimizado para consultas rápidas.
    • Solo lectura.

InnoDB

Ventajas y Desventajas de InnoDB

InnoDB nos ofrece todo aquello de lo que MyISAM carece:

  • Ventajas:
    • Claves externas.
    • Integridad referencial.
    • Bloqueo de filas en lugar de tablas.
    • Autorrecuperación ante errores.
    • Transacciones y rollbacks.
    • Cacheo de índices y datos.
  • Desventajas (al pasarse a InnoDB):
    • Capacidades de búsqueda FULLTEXT.
    • La posibilidad de comprimir las tablas.
    • No poder hacer uso de MERGE.
    • "Solo" 64 TB de datos por tabla.

Entradas relacionadas: