यह आपके द्वारा निर्दिष्ट इंजन पर निर्भर करता है। डिफ़ॉल्ट रूप से तालिका डेटा डिस्क पर संग्रहीत किया जाएगा। यदि आप मेमरी इंजन निर्दिष्ट करते हैं, तो डेटा केवल स्मृति में संग्रहीत किया जाएगा।
अस्थायी तालिकाओं के निर्माण के दौरान फाइल सिस्टम में बनाई गई फ़ाइलों को वास्तव में खोजना संभव होना चाहिए। निम्न कमांड चलाने के बाद:
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;
मैं तो निर्देशिका जाँच: C: \ ProgramData \ MySQL \ MySQL सर्वर 5.5 \ डेटा \ परीक्षण (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.
स्रोत
2011-09-26 20:25:31
और यदि आप 'ब्लैकहोल' इंजन निर्दिष्ट करते हैं तो इसे विशेष डिवाइस में संग्रहीत किया जाएगा:/dev/null। – Johan
ठीक है, उन्हें डिस्क पर 'temp_table_innodb' नहीं कहा जाएगा क्योंकि अस्थायी तालिका केवल एक कनेक्शन से पहुंच योग्य है, जैसे कि यदि आप डीबी में दो अलग कनेक्शन बनाते हैं और प्रत्येक के साथ एक अस्थायी तालिका बनाते हैं, तो आप उन्हें कॉल कर सकते हैं एक ही बात और वे एक-दूसरे के साथ टकराव नहीं करेंगे। सभी ने कहा, मुझे नहीं पता कि वे स्मृति में हैं या डिस्क पर हैं। मुझे लगता है, लेकिन मुझे कोई संदेह नहीं होगा कि गलत है, इसलिए मैं नहीं करूँगा। – Kenny
@ केनी: मैंने उन्हें पाया ... अस्थायी फ़ोल्डर में (बिल्कुल!)। अद्यतन उत्तर देखें। –