गति में सुधार के लिए MySQL सर्वर में मेमोरी का उपयोग कैसे बढ़ाया जाए?


28

मेरे पास एक Windows 2008 सर्वर है जिसमें 8GB RAM IIS7 और MySQL चल रहा है। मैं सर्वर पर मेमोरी, सीपीयू और डिस्क के उपयोग को ट्रैक कर रहा हूं और मुझे पता चला कि MySQL केवल 250MB रैम का उपयोग कर रहा है, डिस्क को बहुत व्यस्त रखते हुए, भले ही मेरे पास बहुत सारे मुफ्त में राम हो।

SQL सर्वर में मैं आसानी से मेमोरी की मात्रा सेट कर सकता हूं जो मैं इसका उपयोग करना चाहता हूं, मैं MySQL में उसी सेटिंग की तलाश कर रहा हूं।

अधिक मेमोरी का उपयोग करने और सीपीयू और डिस्क उपयोग को कम करने के लिए मैं MySQL को कैसे कॉन्फ़िगर कर सकता हूं?

जवाबों:


20

table_cacheबदलने के लिए सबसे उपयोगी विन्यास निर्देश है। हर बार जब MySQL एक टेबल तक पहुंचता है, तो यह टेबल को कैश में लोड करता है। यदि आपको अधिक संख्या में टेबल मिल गए हैं, तो उन्हें कैश करना तेज़ हो गया है।

अपने सर्वर चर पर एक नज़र डालें:

show status;

और चर के लिए एक नज़र है open_tables। यदि यह आपके table_cacheमूल्य के समान है , और opened_tablesऊपर जा रहा है, तो आपको table_cacheअपनी कॉन्फ़िगरेशन फ़ाइल में मान बढ़ाने की आवश्यकता है । आपको पीक समय के दौरान इन चरों के साथ प्रयोग करके एक संतुलन मिलेगा। आप इसे कॉन्फ़िगर करना चाहते हैं ताकि पीक समय पर, opened_tablesसर्वर लंबे समय तक रहने के बाद भी कम मात्रा में हो।

key_buffer_sizeके साथ प्रयोग करने के लिए एक अच्छा चर भी है। यह चर सूचकांक बफर के आकार को प्रभावित करता है, और इस चर को बड़ा करने से MySQL की सूचकांक हैंडलिंग गति बढ़ जाती है। आप चर को show variables;फिर से कमांड के साथ देख सकते हैं , और तुलना key_read_requestsकर सकते हैं key_reads। आदर्श रूप से, आप चाहते हैं कि इन दोनों चरों के बीच का अनुपात यथासंभव कम हो, और आप इसका आकार बढ़ाकर ऐसा कर सकते हैं key_buffer_size। यदि आप इस चर को उच्चतर सेट करते हैं, तो आपके पास डिस्क से सीधे और कम से कम लिखना और पढ़ना होगा, जो आपकी मुख्य चिंता थी।


11
दरअसल कमांड show status; स्टेटस वैरिएबल जैसे Open_tablesऔर देखने के लिए है Opened_tablestable_cacheप्रतीत होता है कि हाल ही के MySQL संस्करणों में हटा दिया गया है।
मैट फेनविक

5

आपको my.cnfफ़ाइल में मान बदलने और MySQL को पुनरारंभ करने की आवश्यकता है, हालाँकि आप MySQL के चलने के दौरान उनमें से कई को बदल सकते हैं, ('SET GLOBAL VARIABLE = value ')।

आप शायद बढ़ती को देखने के लिए चाहते हैं key_buffer_size, sort_buffer, read_bufferऔर table_cacheशुरुआत के लिए और शायद innodb_buffer_pool_size, आप किसी भी InnoDB टेबल है। इनमें से कुछ मान आप लंबे समय तक बढ़ा सकते हैं (यहां तक ​​कि परिमाण के दो आदेश) विशेषकर आपके हार्डवेयर को। MySQL के डिफॉल्ट्स बेहद रूढ़िवादी हैं और लगभग दस साल पहले सामान्य मिश्रित-उपयोग वाले डेस्कटॉप के लिए किए गए थे। ओह, और चेतावनी दी जाए कि 32-बिट संस्करण में 2GB से अधिक रैम का उपयोग करने में परेशानी होगी।

एक नज़र डालें जो MySQL मैनुअल में अधिक जानकारी और मार्गदर्शन के लिए।

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