जून 2014 में वापस मैंने जवाब दिया https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6/66796#66796
उस पोस्ट में, मैंने चर्चा की थी कि InnoDB बफ़र पूल और क्वेरी कैश के बीच InnoDB माइक्रोमैनेज कैसे बदलता है।
क्वेरी कैश का उपयोग नहीं करना
सबसे आसान उत्तर केवल क्वेरी कैश को अक्षम करना होगा, लेकिन एक पकड़ है:आपको दोनों को सेट करना होगा query_cache_size और query_cache_type शून्य (0) के लिए।
अगर आप query_cache_typeए सेट नहीं करते हैं ए> शून्य (0) तक, परिवर्तनों का सूक्ष्म प्रबंधन अभी भी होता है। इसे MySQL के पैराग्राफ 8 से सत्यापित किया जाता है। दस्तावेज़ीकरण "क्वेरी कैश कॉन्फ़िगरेशन" कहते हैं
क्वेरी कैश का उपयोग करना
यदि आप वास्तव में क्वेरी कैश का उपयोग करना चाहते हैं, तो आपको अपने डेटा का अध्ययन करने की आवश्यकता है। मूल रूप से, आपको अपने परिणामों के आकार को जानना होगा। फिर आप query_cache_limit सेट करेंगे। और query_cache_min_res_unit औसत आकार परिणाम सेट के साथ-साथ अधिकतम आकार परिणाम सेट को समायोजित करने के लिए।
एक विकल्प के रूप में, आप वैश्विक स्तर पर क्वेरी कैश को सक्षम कर सकते हैं लेकिन अपने डीबी सत्र से इसके उपयोग को अक्षम कर सकते हैं जैसा कि अनुच्छेद 9 :
आपका वास्तविक प्रश्न
क्वेरी कैश, InnoDB बफर पूल, प्रति कनेक्शन थ्रेड्स (मेरी पोस्ट देखें https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/ 16973#16973 ), और OS सभी RAM के लिए प्रतिस्पर्धा करते हैं।
केवल क्वेरी कैश और InnoDB बफर पूल को देखते समय, आपको यह देखना होगा कि MySQL के दिनों या हफ्तों तक चलने के बाद InnoDB बफर पूल में कितनी जगह खाली है।
आप इस क्वेरी को चला सकते हैं
SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';
यह आपको बताएगा कि आप InnoDB बफर पूल को कितना कम कर सकते हैं। फिर आप उस आकार से क्वेरी कैश बढ़ा सकते हैं। यदि यह प्रश्न 1024 से कम लौटाता है, तो शायद यह प्रयास के लायक नहीं है। आपको या तो RAM से अतिरिक्त स्थान मिल जाएगा या बस क्वेरी कैश को अक्षम करके जाना होगा।