क्यों My_ 5.6 से डिफ़ॉल्ट शुरुआत द्वारा query_cache_type को अक्षम किया गया है?


28

हमने MySQL 5.6 में अपग्रेड किया है और db सर्वर की लोडिंग को देखना शुरू कर दिया है, और अंत में पता चला है कि query_cache_type5.6 से शुरू होने के लिए डिफ़ॉल्ट है।

हमने इसे फिर से सक्षम किया और लोडिंग में कमी देखी, क्यों इस मूल्य को MySQL 5.6 से डिफ़ॉल्ट रूप से अक्षम किया जा रहा है? मैं इसे सक्षम करने में समस्या नहीं देख सकता।

जवाबों:


39

आपको यह समझने के लिए इनोबीडी के इतिहास की आवश्यकता है। ये रहा:

वार कहानी

InnoDB और क्वेरी कैश लगातार युद्ध की स्थिति में हैं। जब InnoDB बफर पूल में बदलावों का निरीक्षण किया जाता है और फिर उसी परिवर्तनों के लिए क्वेरी कैश को क्रॉसचेक किया जाता है, तो InnoDB बहुत भारी-भरकम हो जाता है।

शांति समझौता

MySQL 5.0 से पहले, क्वेरी कैश को InnoDB के लिए अक्षम कर दिया गया था। अब, InnoDB इसके साथ बातचीत करता है। सरल मामलों के लिए, आप बस की स्थापना करके क्वेरी कैश अक्षम कर सकते हैं query_cache_size 0 करने के लिए।

MySQL प्रलेखन के अनुसार query_cache_time पर

यदि सर्वर को क्वेरी_cache_type 0 से सेट किया गया है, तो यह क्वेरी कैश म्यूटेक्स को बिल्कुल भी अधिग्रहित नहीं करता है, जिसका अर्थ है कि क्वेरी कैश को रनटाइम पर सक्षम नहीं किया जा सकता है और क्वेरी निष्पादन में ओवरहेड कम हो जाता है।

SURRENDER के नियम

Query_cache_size को 0 पर सेट करना एक आकार-फिट-सभी समाधान नहीं है।

युद्ध का कारण, पहले स्थान पर, उपरि है। InnoDB हमेशा परिवर्तनों का निरीक्षण करेगा। एक बड़ी क्वेरी कैश इनोबीडी काम करेगा जो बहुत कठिन है। क्वेरी कैश को अक्षम करने दें कि InnoDB और क्वेरी कैश खुश रहें। हालाँकि, आप (डेवलपर / डीबीए) इस तरह की शांति संधि के साथ भी खराब युद्ध प्रदर्शन से उस युद्ध के हताहत हो सकते हैं।

निम्नलिखित पर निर्भर करता है

  • काम का बोझ
  • परिवर्तन की आवृत्ति
  • एक ही डेटा को पढ़ने की आवृत्ति

आपको प्रदर्शन बढ़ाने के लिए जो भी संख्या महसूस हो, उसे क्वेरी_चेचे_साइज़ पर सेट करना चाहिए (यह भूमिगत आंदोलन शुरू करने के लिए टेंटामाउंट है)।

उपसंहार

यदि आप सोच रहे हैं कि मैं इस युद्ध की कहानी को लेकर कहां आया हूं, तो कृपया मेरी पुरानी पोस्ट देखें

इसे ध्यान से पढ़ें क्योंकि मैंने इसे उच्च प्रदर्शन MySQL (द्वितीय संस्करण) के पेज 209-215 से सीखा है

मैंने पहले दूसरों को क्वेरी कैश अक्षम करने की सिफारिश की है

ध्यान दें: मुझे पता है कि सवाल query_cache_type के बारे में था । क्वेरी कैश पर इसका प्रभाव पड़ता है। कैशे स्क्वैश को अक्षम करना इस पर InnoDB का प्रभुत्व है। क्वेरी कैश के प्रकार के बारे में ध्यान से सोचने के लिए क्वेरी_cache_type मैन्युअल रूप से सेट करने पर डेवलपर / DBA को ध्यान से सोचने पर मजबूर करता है।


नमस्ते, मैंने आपके सभी लिंक पढ़ लिए हैं। वास्तव में मैंने क्वेरी कैश को फिर से बंद करने की कोशिश की और हमें लोडिंग में फिर से वृद्धि हुई है..तो हमें फिर से चालू करने की आवश्यकता है। मैं यह नहीं कह रहा हूं कि आप जो कहते हैं वह गलत है, हो सकता है कि सिर्फ हमारा आवेदन भारी पढ़ा गया हो और लोडिंग को कम करने के लिए क्वेरी कैश बहुत उपयोगी हो .. (हमारी साइट वर्डप्रेस चल रही है)
योग

3
यदि केवल अधिक SO पोस्ट इस तरह पढ़ें (मज़ेदार सादृश्य के लिए धन्यवाद)! मुझे यकीन है कि रोलैंडो के भाग्यशाली बच्चों को हर रात इस तरह से MySQL सोने की कहानियां मिलती हैं! ;)
रिनोगो

2
"पृष्ठ 209-215 उच्च प्रदर्शन MySQL (द्वितीय संस्करण)" "जब क्वेरी कैश मददगार है" और अंत तक "MySQL क्वेरी कैश" नामक एक अध्याय को संदर्भित करता है। यह तृतीय संस्करण में 320-329 पृष्ठों से मेल खाता है।
पीटर वी। मॉर्च

8

मेरे पास एक ब्लॉग पोस्ट है जिसमें बताया गया है कि यह यहाँ क्यों है

संक्षिप्त संस्करण: क्वेरी कैश मल्टी-कोर मशीनों पर स्केलेबिलिटी समस्याओं का कारण बनता है। तो यह अब डिफ़ॉल्ट रूप से अक्षम है।


मेरी पोस्ट करने के लिए एक अनुवर्ती के रूप में, स्टीवर्ट स्मिथ के रूप में "परिमाण के एक आदेश" बदतर प्रभाव का वर्णन करता है flamingspork.com/blog/2014/06/05/...
मॉर्गन Tocker

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.