Созданы ли таблицы с "СОЗДАТЬ ВРЕМЕНУ ТАБЛИЦУ" в памяти или на диске?
В MySQL, когда вы создаете временную таблицу, например, CREATE TEMPORARY TABLE..., эта таблица создается и хранится в памяти или на диске?
Я прочитал документы и Google, и не нашел ответа.
Ответ 1
Это зависит от того, какой двигатель вы укажете. По умолчанию данные таблицы будут сохранены на диске. Если вы укажете движок MEMORY, данные будут сохранены только в памяти.
Должно быть возможно найти файлы, созданные в файловой системе при создании временных таблиц. После выполнения следующих команд:
Затем я проверил каталог: C:\ProgramData\MySQL\MySQL Server 5.5\data\test (в Windows) и присутствующие файлы:
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.
Временные таблицы хранятся в C:\Windows\Temp и имеют необычные имена, но внутри данные хранятся таким же образом.
#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.
Ответ 2
Как сказал Марк, это зависит от того, какой ДВИГАТЕЛЬ вы скажете использовать. Если вы не дадите ДВИГАТЕЛЬ, он сделает "что-то", но не обязательно сохранит это только в памяти. Если вы хотите, чтобы таблица находилась в памяти, вы должны определить ее явно:
CREATE TEMPORARY TABLE foobar (id int) ENGINE=MEMORY;
Однако использование MEMORY-engine ограничено. Для получения дополнительной информации взгляните на использование внутренних временных таблиц в MySQL.