sábado, 8 de junio de 2013

MEMORIA y tablas temporales

Original post: http://anothermysqldba.blogspot.com/2013/06/memory-and-temporary-tables.html

Desde que he recibido una petición para ayudar a responder preguntas forum.mysql.com con el blog voy a seguir para publicar algunos ejemplos extendidos aquí.

Me di cuenta de este post: http://forums.mysql.com/read.php?10, 588192,588192 # msg-588192 y pensé por primera vez de un modo diferente de manejar la situación.

Si usted necesita las tablas para manejar la información temporal que puede ir sobre ella de dos maneras. Uno si es por cada sesión de tratamiento, entonces debería crear una tabla temporal sólo:

CREATE TEMPORARY TABLE `temporary_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ;


Esto dará lugar a NO frm. Y desaparecerá y cierre de la sesión.
Si usted lo necesita más tiempo disponible y lo necesita para ser rápido se puede utilizar una tabla MEMORY. Esta permanecerá hasta que se reinicie la base de datos, eliminar la tabla, etc ..

CREATE TABLE `memory_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MEMORY;


Esto significa que una vez más no hay ningún archivo. Frm.

Así que si quieres ir a limpiar las tablas de memoria de hasta porque tiene tantos o algo que usted puede encontrar una lista con la siguiente ...
SELECT TABLE_SCHEMA, ENGINE, COUNT(*) AS count_tables,
SUM(DATA_LENGTH+INDEX_LENGTH) AS size,
SUM(INDEX_LENGTH) AS index_size FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('mysql', 'INFORMATION_SCHEMA')
AND ENGINE = "MEMORY" GROUP BY TABLE_SCHEMA, ENGINE;


Como siempre ... revisar sus necesidades y de referencia lo que funciona mejor para usted y su aplicación.