Una sirena tiene las mismas probabilidades de
arreglar tus problemas de permisos, la diferencia es que la gente
continúa creyendo en el mito de FLUSH PRIVILEGES.Cada vez que
alguien escribe un tutorial o solución a un problema relacionado
con la creación de una nueva cuentas de usuario o la provisión de
diferentes privilegios veo la sugerencia de utilizar FLUSH
PRIVILEGES
. Por ejemplo, el primer post en /r/mysql en el
momento de escribir estas líneas, “MySQL:The user specified as a definer does not
exist (error 1449)-Solutions” es culpable múltiples veces de
esto mismo (Actualización: el usuario ha tachado
estas líneas, tras …
La variable default_tmp_storage_engine
se introdujo
en 5.6.3, permitiendo la configuración del motor por defecto para
las tablas temporales. Esto parece ir en la dirección, como he
comentado con anterioridad, de convertir MyISAM en un motor opcional. En 5.7,
se crea un espacio de tablas separado para guardar
estas tablas con el objetivo de reducir su impacto en el
rendimiento (esas tablas no tienen se rehacerse si el
servidor falla de manera inesperada, por lo que se evitan
escrituras extra).
Sin embargo, he visto mucha gente que asumía que porque el valor
por defecto de default_tmp_storage_engine
es
“InnoDB”, todas las tablas temporales se crean en formato InnoDB.
Esto no es cierto: primero, …
Por supuesto, esto sólo es un título para llamar la atención. Por lo que yo sé no todas las tablas de sistema se pueden convertir a InnoDB todavía (por ejemplo, las tablas de privilegios), lo cual convierte la cabecera en técnicamente falsa. MyISAM es un motor muy simple, y eso tiene algunas ventajas inherentes (no hay carga extra debido a las transacciones, más fácil de “editar” manualmente, normalmente ocupa menos espacio en disco), pero también algunas desventajas bastante importantes: no es seguro en el caso de un cuelgue general, no hay claves foráneas, sólo bloqueos a nivel de tabla, problemas de consistencia, bugs en tablas muy grandes,… La versión 5.7.5 “Milestone 15”, presentada hoy en el Oracle Open World tiene …
[Lea más]Una de las formas para importar datos en MySQL es el comando LOAD DATA INFILE. Es más rápido que un dump, ya que se leen los datos en bruto, en lugar de sentencias SQL.
El tiempo de importación depende del motor que use la tabla, por ejemplo, MyISAM puede ser 40 times más rápido que Innodb. Vamos a probarlo:
Preparación
Voy a utilizar MySQL 5.1.36 (64 bits MacOS X) para hacer las pruebas. Necesitaré una tabla grande, así que partiré de la tabla City de la Base de datos world y crearé una tabla más grande que se llame “city_huge”:
CREATE TABLE city_huge LIKE CITY; INSERT INTO city_huge SELECT NULL, name, CountryCode, District, Population FROM city; # Ejecuta 100 veces esta sentencia, # así city_huge será 100 veces más grande que city. # Un consejo, usa un script, una tabla temporal, …[Lea más]