Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les tables créées avec CREATE TEMPORARY TABLE sont-elles en mémoire ou sur disque ?

Cela dépend du moteur que vous spécifiez. Par défaut, les données de la table seront stockées sur disque. Si vous spécifiez le moteur MEMORY, les données ne seront stockées qu'en mémoire.

Il devrait être possible de trouver les fichiers créés dans le système de fichiers lors de la création des tables temporaires. Après avoir exécuté les commandes suivantes :

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;

J'ai ensuite vérifié le répertoire :C:\ProgramData\MySQL\MySQL Server 5.5\data\test (sous Windows) et les fichiers présents étaient :

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.

Les tables temporaires sont stockées dans C:\Windows\Temp et ont des noms inhabituels, mais en interne, les données sont stockées de la même manière.

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