समस्या /tmp फ़ोल्डर में डिस्क स्थान की कमी के कारण होती है। /tmp वॉल्यूम का उपयोग उन प्रश्नों में किया जाता है जिनके लिए अस्थायी तालिकाएँ बनाने की आवश्यकता होती है। ये अस्थायी तालिकाएँ MyISAM प्रारूप में हैं, भले ही क्वेरी केवल InnoDB वाली तालिकाओं का उपयोग कर रही हो।
यहां कुछ समाधान दिए गए हैं:
- क्वेरी को ऑप्टिमाइज़ करें ताकि यह अस्थायी टेबल न बनाए (क्वेरी को फिर से लिखें, इसे कई क्वेरी में विभाजित करें, या उचित इंडेक्स जोड़ें, pt-query-digest
और
EXPLAIN <query>
) इसे देखें अस्थायी तालिकाओं के बारे में पेरकोना लेख । - MySQL को ऑप्टिमाइज़ करें ताकि यह अस्थायी टेबल (sort_buffer_size, join_buffer_size) नहीं बनाए। देखें:https://dba.stackexchange.com/questions/53201/mysql-creates-temporary-tables-on-disk-how-do-i-stop-it
- तालिकाओं को छोटा करें। यदि संभव हो तो अनावश्यक पंक्तियों को हटा दें
SELECT table1.col1, table2,col1 ...
. का उपयोग करें इसके बजायselect *
केवल उन स्तंभों का उपयोग करने के लिए जिनकी आपको क्वेरी में आवश्यकता है, छोटी अस्थायी तालिकाएँ बनाने के लिए- कम जगह लेने वाले डेटा प्रकारों का उपयोग करें
- उस वॉल्यूम पर अधिक डिस्क स्थान जोड़ें जहां /tmp फ़ोल्डर रहता है
- अस्थायी फ़ोल्डर उपयोगकर्ता को mysql द्वारा
TMPDIR
सेट करके बदलें mysqld स्टार्ट-अप से पहले पर्यावरण चर। प्वाइंटTMPDIR
डिस्क वॉल्यूम पर एक फ़ोल्डर के लिए जिसमें अधिक खाली स्थान है। आपtmpdir
. का भी उपयोग कर सकते हैं/etc/my.cnf
. में विकल्प या--tmpdir
mysqld सेवा की कमांड लाइन में। देखें:B.5.3.5 जहां MySQL अस्थायी फ़ाइलें संग्रहीत करता हैए>