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.
- Soporta búsquedas
- 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 consultasINSERT
yREPLACE
. 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.
- Usa un tamaño variable de datos (menos que
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.
- Capacidades de búsqueda