2011-06-01 25 views
5

Encontré un problema interesante con una tabla MySQL que estaba creando como una tabla temporal para los informes.TABLA TEMPORAL DE CAÍDA lenta

Descubrí que, si no especificaba un motor de almacenamiento, el comando DROP TEMPORARY TABLE se bloqueaba durante hasta medio segundo.

Si definí mi tabla como ENGINE = MEMORY, este breve hang desaparecería.

Como tengo una solución a este problema (usando tablas de MEMORIA), mi pregunta es ¿por qué una tabla temporal tomaría mucho tiempo para caer? ¿No usan el motor de MEMORIA por defecto? Ni siquiera es una mesa muy grande, un par de cientos de filas con mis datos de prueba actuales.

Respuesta

4

Las tablas temporales, de forma predeterminada, se crearán donde lo indique la configuración de mysql, normalmente/tmp o en otro lugar en un disco. Puede establecer esta ubicación (e incluso varias ubicaciones) en una ubicación de disco RAM como/dev/shm.

Espero que esto ayude!

+1

Parece extraño que tan solo eliminar un archivo (que es todo una TABLA DE GOTAS realmente lo hace) causaría medio segundo de falta de respuesta. – GordonM

Cuestiones relacionadas