Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

As tabelas são criadas com CREATE TEMPORARY TABLE na memória ou no disco?


Depende do motor que você especificar. Por padrão, os dados da tabela serão armazenados em disco. Se você especificar o mecanismo MEMORY, os dados serão armazenados apenas na memória.

Deve ser possível encontrar os arquivos que são criados no sistema de arquivos quando as tabelas temporárias são criadas. Após executar os seguintes 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;

Em seguida, verifiquei o diretório:C:\ProgramData\MySQL\MySQL Server 5.5\data\test (no Windows) e os arquivos presentes eram:
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.

As tabelas temporárias são armazenadas em C:\Windows\Temp e possuem nomes incomuns, mas internamente os dados são armazenados da mesma forma.
#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.