sql >> Base de Datos >  >> RDS >> Mysql

¿Las tablas se crean con CREATE TEMPORARY TABLE en la memoria o en el disco?

Depende del motor que especifiques. De forma predeterminada, los datos de la tabla se almacenarán en el disco. Si especifica el motor MEMORY, los datos solo se almacenarán en la memoria.

Debería ser posible encontrar los archivos que se crean en el sistema de archivos cuando se crean las tablas temporales. Después de ejecutar los siguientes comandos:

CREATE TABLE test.table_myisam (x int) ENGINE=MyISAM;
CREATE TABLE test.table_memory (x int) ENGINE=MEMORY;
CREATE TEMPORARY TABLE test.temp_table_myisam (x int) ENGINE=MyISAM;
CREATE TEMPORARY TABLE test.temp_table_memory (x int) ENGINE=MEMORY;

Luego revisé el directorio:C:\ProgramData\MySQL\MySQL Server 5.5\data\test (en Windows) y los archivos presentes eran:

table_innodb.frm   # Table definition.
table_innodb.MYD   # MyISAM table data file.
table_innodb.MYI   # MyISAM table index file.

table_memory.frm   # No MYD or MYI file for the MEMORY engine.

Las tablas temporales se almacenan en C:\Windows\Temp y tienen nombres inusuales, pero internamente los datos se almacenan de la misma manera.

#sql9a0_7_d.frm    # This is the MyISAM temporary table.
#sql9a0_7_d.MYD    # MyISAM data file for temporary table.
#sql9a0_7_d.MYI    # MyISAM index file for temporary table.

#sql9a0_7_c.frm    # This is the MEMORY engine file. No MYD or MYI.