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

Er tabeller oprettet med CREATE TEMPORARY TABLE i hukommelsen eller på disken?

Det kommer an på hvilken motor du angiver. Som standard vil tabeldataene blive gemt på disken. Hvis du angiver MEMORY-motoren, vil dataene kun blive gemt i hukommelsen.

Det burde være muligt rent faktisk at finde de filer, der oprettes i filsystemet, når de midlertidige tabeller oprettes. Efter at have kørt følgende kommandoer:

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;

Jeg tjekkede derefter mappen:C:\ProgramData\MySQL\MySQL Server 5.5\data\test (på Windows), og de tilstedeværende filer 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 midlertidige tabeller er gemt i C:\Windows\Temp og har usædvanlige navne, men internt lagres dataene på samme måde.

#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. Broken Pipe Exception on Grails App

  2. Isolationsniveau med Flask-SQLAlchemy

  3. Disaster Recovery for Galera Cluster implementeret til en hybridsky

  4. Indsæt en række og undgå løbstilstand (PHP/MySQL)