sql >> Databasteknik >  >> RDS >> Mysql

Skapas tabeller med CREATE TEMPORARY TABLE i minnet eller på disken?

Det beror på vilken motor du anger. Som standard lagras tabelldata på disk. Om du anger MEMORY-motorn kommer data endast att lagras i minnet.

Det ska vara möjligt att faktiskt hitta de filer som skapas i filsystemet när de temporära tabellerna skapas. Efter att ha kört följande kommandon:

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;

Jag kollade sedan i katalogen:C:\ProgramData\MySQL\MySQL Server 5.5\data\test (på Windows) och filerna som fanns var:

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.

De temporära tabellerna lagras i C:\Windows\Temp och har ovanliga namn, men internt lagras data på samma sätt.

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


  1. Ersätt alla fält i MySQL

  2. Fel:Timeout för handskakningsinaktivitet i Node.js MYSQL-modul

  3. Hur man hämtar dropdown-värdena från databasen och visar i jsp

  4. Oracle Pro*C/OCI installationshanterare för SIGSEGV/SIGABRT och vänner - varför och hur inaktiveras?