Acabo de migrar a mysql 5.5.20 y tuve un problema de rendimiento con tablas temporales. Tengo un procedimiento almacenado que crea ocho de ellos, similar a esto:Innodb y tablas temporales
create temporary table t_opened_today
(
portfolio_id integer,
position_type_id tinyint,
open_value decimal(12,2),
today_net decimal(12,2)
);
En MySQL 5.5 tiene InnoDB como motor de almacenamiento por defecto. Solía estar en 5.1 y ese no era el caso. entonces, estaba creando las tablas temporales con Innodb. Lo verifiqué mirando/tmp y no vi ningún .MYI o .MYD. Esto tomaba 0.50 segundos para hacer (o más, el tiempo de ejecución rebotaba por todos lados), lo cual es ridículo.
así que modifiqué la definición de la tabla para incluir "Engine = MyISAM" y me llevó 0.00 segundos (como era de esperar) no hacer nada más que crear las 8 tablas temporales y salir.
¿Alguien tiene una idea de por qué tomaría tanto tiempo en Innodb crear estas tablas temporales? Quizás la creación de tablas temporales utilizando el motor de almacenamiento predeterminado es una especie de gran no-no?
No he hecho mucho de nada en my.cnf ya que estoy en funcionamiento. Lo hice aumentar los registros del valor predeterminado ... pero eso es todo. Entonces la configuración está lista para usar.
gracias!
thx, aunque todavía parece extraño que la creación de tablas temporales con el motor Innodb lleve tanto tiempo. –