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