क्यों नहीं Windows कैश MySQL डेटाबेस? [बन्द है]


1

मैं MySQL के साथ काम कर रहा हूं और प्रयोग कर रहा हूं, डेटाबेस का आकार कई GB है। और मुझे दिलचस्प बात पता चली है: जब MySQL काम करता है, तो विंडोज कैश नहीं करता है। डेटाबेस फाइलें होती हैं। उदाहरण के लिए, मैं एक क्वेरी चलाता हूं, देखें कि विंडोज ड्राइव से कैसे सक्रिय रूप से पढ़ता है। मैं एक ही समय में कई बार nul करने के लिए FAR मैनेजर में संबंधित फाइलों को कॉपी करता हूं और हर बार ड्राइव से पढ़ता हूं।

मैं विंडोज 7 के संसाधन मॉनिटर में देख सकता हूं कि फ़ाइल पढ़ने के दौरान कैश मेमोरी कैसे बढ़ रही है और ठीक होने के बाद वापस छोड़ रहा है। कभी-कभी मैंने देखा कि कैसे एक एफएआर में नकल करने से दूसरे एफएआर को पढ़ने में मदद मिलती है :) लेकिन यह अनिवार्य नहीं है। यदि MySQL सेवा को बंद कर दिया जाता है, तो कैशिंग सामान्य रूप से काम करता है - उदाहरण के लिए, यदि एक टेबल की .ibd फ़ाइल 200 एमबी है और 1 जीबी फ्री रैम या कम से कम कैश रैम है, तो इसे एक या दो रीड के बाद कैश किया जाता है।

ऐसा क्यों होता है और क्या इसे ठीक करना संभव है?

यह सब कुछ और विकास के लिए मेरी नोटबुक है, इसलिए मैं MySQL (शायद 200 एमबी ठीक है, लेकिन 500 बहुत अधिक है) को बहुत अधिक मेमोरी आवंटित नहीं करना चाहता। विंडोज 7 x64, कोर आई 5, 8 जीबी रैम, हाइब्रिड एसएसएचडी (1 टीबी एचडीडी + 8 जीबी फ्लैश), लगभग 8 जीबी रेडीबोस्ट कैश, इनोबीडी टेबल (डिफ़ॉल्ट रूप से, मैं एक बड़ा MySQL विशेषज्ञ नहीं हूं)। रेडीबॉस्ट बहुत मदद करता है, मुझे लगता है। मुझे लगता है कि सिस्टम रेडीबोस्ट.एसएफ कैश फाइल के लिए बहुत कुछ कहता है (500 KB / s) और बहुत कुछ पढ़ता है (1-5 MB / s)।


मुझे समझ में नहीं आता कि यह क्या जानकारी जोड़ देगा लेकिन ठीक है। MySQL 200 MB तालिका फ़ाइल को पढ़ने से पहले, पर है: prntscr.com/ekj75d , के बाद: prntscr.com/ekj7k7 MySQL से पहले बंद है,: prntscr.com/ekj807 , के बाद: prntscr.com/ekj84s मैं सिर्फ देखा है कि कैश नहीं करता है MySQL शुरू होने के ठीक बाद टी ड्रॉप। यह एसक्यूएल-फ्रंट में से चयन करके, संबंधित तालिका तक पहुंचने के बाद गिरता है। इसलिए एक टेबल - 200 एमबी माइनस में एक्सेस किया, दूसरे में प्रवेश किया - माइनस 150 एमबी (यदि वे दोनों पहले कैश किए गए थे)
मिखाइल एम

SELECT @@INNODB_BUFFER_POOL_SIZE;यह कैशिंग के लिए इष्टतम स्थान है - ओएस नहीं - और कुछ ट्यून करने योग्य मापदंडों में से एक है जिसे हमेशा अनुकूलित किया जाना चाहिए। आपकी सेटिंग क्या है?
माइकल - sqlbot

@ माइकल-स्क्लोबॉट, 134 217 728. हाल ही में वृद्धि हुई है। मैं MySQL को "ऑन-द-फ्लाई को कॉन्फ़िगर करना" पसंद करूंगा - इसलिए अगर मैं कई कठिन अनुरोधों को चलाता हूं तो विंडोज इसे कैश करेगा, और अगर मैं कुछ के लिए SQL का उपयोग नहीं करता हूं - तो MySQL सेवा बहुत मेमोरी पर कब्जा नहीं करेगी
मिखाइल एम

जवाबों:


0

मुझे मेरे लिए समाधान काफी अच्छा लगा: मैंने नवीनतम MySQL 5.7 में अपग्रेड किया और अब मक्खी पर पूल का आकार बदलता है:

set global innodb_buffer_pool_size = 512 * 1024 * 1024;

पूल के आकार में बड़े पैमाने पर आवेषण के दौरान प्रदर्शन में सुधार बहुत बड़ा है।

मुझे अपग्रेड के दौरान बहुत परेशानी हुई (MySQL 5.7 ने 5.5 के डेटाबेस को स्वीकार नहीं किया, mysql_upgrade भी शुरू नहीं होता है, MySQL फ्रंट क्रैश और इतने पर)। लेकिन ऐसा लगता है कि 5.7 का प्रदर्शन कुछ मामलों में (समान पूल आकार के साथ) भी अधिक है।

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