आप जिस तरह से आप कर सकते हैं और tmp_table_size और max_heap_table_size द्वारा किसी भी लगाया सीमा के आसपास मिल जाएगा तालिका
CREATE TABLE sns_memory SELECT * FROM sns WHERE 1=2;
ALTER TABLE sns_memory ENGINE=MEMORY;
INSERT INTO sns_memory SELECT * FROM sns;
DROP TABLE sns;
ALTER TABLE sns_memory RENAME sns;
यह समायोजन करना चाहिए लोड क्या देख रहे है।
बस एक ही है, तो आप दो काम करने की जरूरत है:
इस /etc/my.cnf को
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
इस mysql पुनरारंभ को कवर किया जाएगा जोड़ें। इस चलाने को पुन: प्रारंभ बिना mysqld में इन मूल्यों को सेट करने के लिए अभी:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
आप
SELECT @@max_heap_table_size;
या
SHOW VARIABLES LIKE 'max_heap_table_size';
साथ ऊपर चर जाँच कर रहे हैं, तो आप देख सकते हैं कि वे डॉन ' SET GLOBAL...
कथन के बाद टी बदलना प्रतीत होता है। ऐसा इसलिए है क्योंकि सेटिंग्स केवल सर्वर से नए कनेक्शन पर लागू होती हैं। एक नया कनेक्शन है, और आप मान अपडेट दिखाई देगा या आप चलाकर अपने सत्र के भीतर यह बदल सकता है:,
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;
यदि आप इसे मेमोरी टेबल में बदल रहे हैं - आप डेटा को स्थानांतरित करने के बारे में चिंतित क्यों हैं? आपको इसे खोने के लिए तैयार रहना चाहिए! तो बस इसे छोटा करें, और फिर तालिका को बदलें ... – VBAssassin
आप 'tmp_table_size = 2G' क्यों सेट करते हैं? मैंने इसे अपने 5.5 सर्वर में डिफॉल्ट (16 एमआईबी) पर छोड़ दिया और मैं अभी भी मेमोरी-बैक टेबल में अपने 'max_heap_table_size' (~ 400MiB) तक स्टोर करने में सक्षम हूं। –
आप केवल 'सेट ग्लोबल tmp_table_size = 1024 * 1024 * 1024 * 2; सत्र करके सत्र के लिए उपर्युक्त 2 चर बदल सकते हैं; सेट ग्लोबल max_heap_table_size = 1024 * 1024 * 1024 * 2; ' – Jaylen