2009-11-20 21 views
9

संग्रहीत प्रक्रिया में उपयोग करना बेहतर है: एक अस्थायी तालिका या स्मृति तालिका?संग्रहीत प्रक्रियाओं में MySQL अस्थायी बनाम स्मृति तालिका

तालिका का उपयोग रिपोर्ट के लिए सारांश डेटा संग्रहीत करने के लिए किया जाता है।

क्या कोई व्यापार बंद है कि डेवलपर्स को अवगत होना चाहिए?

CREATE TEMPORARY TABLE t (avg (double)); 

या

CREATE TABLE t (avg (double)) ENGINE=MEMORY; 
+0

स्मृति में एक ही Oracle में वैश्विक अस्थायी है? – zloctb

उत्तर

7

दोनों में से, मैं रिपोर्ट के लिए एक अस्थायी तालिका का उपयोग करता हूं।

मेमोरी टेबल में उपयोगकर्ता सत्र & कनेक्शन पर डेटा होता है, इसलिए आपको यह सुनिश्चित करने के लिए हर बार इसे छोटा करना होगा कि आप किसी और से डेटा का उपयोग नहीं करेंगे। मान लीजिए कि आप अपनी जरूरतों के आधार पर मेमोरी टेबल को बनाए रखने के लिए जरूरी चीजें डालते हैं, यह ठीक है - अस्थायी तालिका रखरखाव परिप्रेक्ष्य से थोड़ा सुरक्षित है।

4

एक अस्थायी तालिका केवल आपके सत्र की अवधि के लिए उपलब्ध नहीं होगा। इंजन = मेमोरी के साथ घोषित एक तालिका उपयोगकर्ता सत्र/कनेक्शन में बनी रहेगी लेकिन केवल MySQL इंस्टेंस के जीवनकाल में ही मौजूद होगी। तो अगर MySQL पुनरारंभ हो जाता है तो तालिका दूर हो जाती है।

8

यह केवल दो विकल्पों तक क्यों सीमित है? आप कर सकते हैं:

CREATE TEMPORARY TABLE t (avg double) ENGINE=MEMORY; 

कौन सा काम करता है, हालांकि मैं कैसे करता है, तो स्मृति इंजन वास्तव में यहां इस्तेमाल किया जा रहा है की जाँच करने के यकीन नहीं है।

3

MySQL में, अस्थायी तालिकाओं गंभीरता से अपंग कर रहे हैं:

http://dev.mysql.com/doc/refman/5.6/en/temporary-table-problems.html

You cannot refer to a TEMPORARY table more than once in the same query. 
For example, the following does not work: 

mysql> SELECT * FROM temp_table, temp_table AS t2; 
ERROR 1137: Can't reopen table: 'temp_table' 
संबंधित मुद्दे