आपको यह समझने के लिए इनोबीडी के इतिहास की आवश्यकता है। ये रहा:
वार कहानी
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 को ध्यान से सोचने पर मजबूर करता है।