Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Werden Tabellen mit CREATE TEMPORARY TABLE im Arbeitsspeicher oder auf der Festplatte erstellt?

Es hängt davon ab, welchen Motor Sie angeben. Standardmäßig werden die Tabellendaten auf der Festplatte gespeichert. Wenn Sie die MEMORY-Engine angeben, werden die Daten nur im Arbeitsspeicher gespeichert.

Es sollte möglich sein, die Dateien, die im Dateisystem erstellt werden, tatsächlich zu finden, wenn die temporären Tabellen erstellt werden. Nach dem Ausführen der folgenden Befehle:

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;

Ich habe dann das Verzeichnis überprüft:C:\ProgramData\MySQL\MySQL Server 5.5\data\test (unter Windows) und die vorhandenen Dateien waren:

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.

Die temporären Tabellen werden in C:\Windows\Temp gespeichert und haben ungewöhnliche Namen, aber intern werden die Daten auf die gleiche Weise gespeichert.

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