MySQL क्वेरी कैशिंग के साथ अपनी वेब साइट को गति दें
अपने वेब एप्लिकेशन को गति देने के सर्वोत्तम तरीकों में से एक आपके डेटाबेस में क्वेरी कैशिंग को सक्षम करना है, जो आमतौर पर अगले पृष्ठ द्वारा तत्काल उपयोग के लिए SQL क्वेरी का उपयोग स्मृति में करता है जो समान अनुरोध करता है.
यह तरीका इतना शक्तिशाली है कि आपको अपने वेब एप्लिकेशन में कोई बदलाव नहीं करना पड़ेगा, आपको बस थोड़ी सी मेमोरी का त्याग करना होगा। यह आपकी सभी समस्याओं को ठीक करने वाला नहीं है, लेकिन यह निश्चित रूप से चोट नहीं पहुंचा सकता है.
नोट: यदि आपका एप्लिकेशन बार-बार टेबल अपडेट करता है, तो क्वेरी कैश को लगातार शुद्ध किया जाएगा और आपको इससे कोई लाभ नहीं मिलेगा। यह एक एप्लिकेशन के लिए आदर्श है जो ज्यादातर डेटाबेस के खिलाफ पढ़ता है, जैसे कि वर्डप्रेस ब्लॉग। यदि आप साझा होस्टिंग पर चल रहे हैं तो यह भी काम नहीं करेगा.
सर्वर रनिंग के साथ कैशिंग सक्षम करें
पहली चीज जो आप करना चाहते हैं, यह सुनिश्चित करें कि आपके MySQL की स्थापना में वास्तव में क्वेरी कैशिंग समर्थन उपलब्ध है। अधिकांश वितरण करते हैं, लेकिन आपको वैसे भी जांच करनी चाहिए.
आप इस आदेश को अपने MySQL कंसोल से चलाना चाहते हैं, जो आपको बताएगा कि क्वेरी कैशिंग उपलब्ध है या नहीं.
mysql> 'have_query_cache' जैसे वैरिएबल दिखाएं; + ------------------ + ------- + | चर_नाम | मान | + ------------------ + ------- + | has_query_cache | हाँ | +------------------+-------+
इसका अर्थ यह मत समझिए कि क्वेरी कैशिंग वास्तव में सक्षम है, क्योंकि अधिकांश होस्टिंग प्रदाता डिफ़ॉल्ट रूप से इसे सक्षम करने वाले नहीं हैं। ताज्जुब है, मेरे Ubuntu Feisty स्थापना पहले से ही सक्षम था ...
इसके बाद हमें यह देखना होगा कि क्वेरी कैशिंग सक्षम है या नहीं। हमें एक से अधिक चर की जाँच करने की आवश्यकता होगी, इसलिए हम चर क्वेरी% के लिए जाँच करके यह सब एक साथ कर सकते हैं
mysql> 'क्वेरी%' जैसे चर दिखाएं; + ------------------------------ + --------- + | चर_नाम | मान | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | पर | | query_cache_wlock_invalidate | उतर | | query_prealloc_size | 8192 | +------------------------------+---------+
यहाँ सूची में महत्वपूर्ण आइटम हैं और उनका क्या मतलब है:
- query_cache_size - यह बाइट्स में कैश का आकार है। इस मान को 0 पर सेट करना कैशिंग को प्रभावी रूप से अक्षम कर देगा.
- query_cache_type - डिफ़ॉल्ट रूप से सक्षम किए जाने वाले क्वेरी कैशिंग के लिए यह मान ON या 1 होना चाहिए.
- query_cache_limit - यह अधिकतम आकार की क्वेरी (बाइट्स में) है जिसे कैश किया जाएगा.
यदि query_cache_size मान 0 पर सेट है या आप इसे बदलना चाहते हैं, तो आपको यह ध्यान में रखते हुए कि कमांड बाइट में है, आपको निम्न कमांड को चलाने की आवश्यकता होगी। उदाहरण के लिए, यदि आप कैश को 8MB आवंटित करना चाहते हैं तो हम मूल्य के रूप में 1024 * 1024 * 8 = 8388608 का उपयोग करेंगे।.
SET GLOBAL query_cache_size = 8388608;
इसी तरह, अन्य विकल्पों को एक ही सिंटैक्स के साथ सेट किया जा सकता है:
SET GLOBAL query_cache_limit = 1048576;सेट ग्लोबलquery_cache_type
= 1;
अब हम कैसे बताएं कि क्या यह वास्तव में काम कर रहा है? आप हुड के नीचे क्या चल रहा है पर एक नज़र लेने के लिए "Qc" से शुरू होने वाले सभी चर को खींचने के लिए SHOW STATUS कमांड का उपयोग कर सकते हैं.
mysql> SHOW STATUS LIKE 'Qc%'; + ------------------------- + -------- + | चर_नाम | मान | + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + सेट में 8 पंक्तियाँ (0.00 सेकंड)
आप उन आँकड़ों में देखेंगे कि मेरे पास बहुत सारी मुफ्त मेमोरी बची हुई है। यदि आपका सर्वर बहुत सारे नीम प्रून दिखाता है, तो आपको इस मूल्य को बढ़ाने पर विचार करने की आवश्यकता हो सकती है, लेकिन मैं वेब सर्वर के लिए क्वेरी कैशिंग पर बहुत अधिक मेमोरी खर्च नहीं करूँगा ... आपको अपाचे, php, रूबी, या के लिए उपलब्ध मेमोरी छोड़ने की आवश्यकता है जो भी आप उपयोग कर रहे हैं.
कॉन्फ़िग फ़ाइल में सक्षम करें
यदि आप चाहते हैं कि ये परिवर्तन mysql सर्वर के रिबूट या रीस्टार्ट से बचे, तो आपको उन्हें MySQL के लिए अपने /etc/mysql/my.cnf कॉन्फ़िगरेशन फ़ाइल में जोड़ना होगा। ध्यान दें कि यह आपके इंस्टॉलेशन पर एक अलग स्थान पर हो सकता है.
फ़ाइल को sudo या root मोड में टेक्स्ट एडिटर का उपयोग करके खोलें, और फिर इन मानों को जोड़ें यदि वे फ़ाइल में पहले से मौजूद नहीं हैं। यदि वे मौजूद हैं, तो उन्हें अनसुना कर दें.
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048476
क्वेरी कैशिंग आपके वेब एप्लिकेशन की गति में काफी सुधार कर सकता है, खासकर यदि आपका एप्लिकेशन ज्यादातर पढ़ता है। उपरोक्त विधियों का उपयोग करके स्थिति की निगरानी करें और देखें कि यह समय के साथ कैसे काम करता है.