Mysql
 sql >> Database >  >> RDS >> Mysql

Le tabelle vengono create con CREATE TEMPORARY TABLE in memoria o su disco?

Dipende dal motore che specifichi. Per impostazione predefinita, i dati della tabella verranno archiviati su disco. Se si specifica il motore MEMORIA, i dati verranno archiviati solo in memoria.

Dovrebbe essere possibile trovare effettivamente i file che vengono creati nel filesystem quando vengono create le tabelle temporanee. Dopo aver eseguito i seguenti comandi:

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;

Ho quindi controllato la directory:C:\ProgramData\MySQL\MySQL Server 5.5\data\test (su Windows) e i file presenti erano:

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.

Le tabelle temporanee sono archiviate in C:\Windows\Temp e hanno nomi insoliti, ma internamente i dati vengono archiviati allo stesso modo.

#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.