/ / MySQL क्वेरी कैशिंग के साथ अपनी वेब साइट को गति दें

MySQL क्वेरी कैशिंग के साथ अपनी वेब साइट को गति दें

अपने वेब को गति देने के सर्वोत्तम तरीकों में से एकएप्लिकेशन आपके डेटाबेस में क्वेरी कैशिंग को सक्षम करने के लिए है, जो आमतौर पर अगले अनुरोध द्वारा उसी अनुरोध को तुरंत एक्सेस करने के लिए स्मृति में SQL प्रश्नों का उपयोग करता है।

यह विधि इतनी शक्तिशाली है कि आपआपको अपने वेब एप्लिकेशन में कोई बदलाव नहीं करना है, आपको बस थोड़ी सी मेमोरी का त्याग करना होगा। यह आपकी सभी समस्याओं को ठीक करने वाला नहीं है, लेकिन यह निश्चित रूप से चोट नहीं पहुँचा सकता है।

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

सर्वर रनिंग के साथ कैशिंग सक्षम करें

पहली चीज जो आप करना चाहते हैं, वह सुनिश्चित करें कि आपके MySQL की स्थापना में वास्तव में क्वेरी कैशिंग समर्थन उपलब्ध है। अधिकांश वितरण करते हैं, लेकिन आपको वैसे भी जांच करनी चाहिए।

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

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

इसका मतलब यह मत समझो कि क्वेरी कैशिंगवास्तव में सक्षम है, क्योंकि अधिकांश होस्टिंग प्रदाता डिफ़ॉल्ट रूप से इसे सक्षम करने वाले नहीं हैं। ताज्जुब है, मेरे Ubuntu Feisty स्थापना पहले से ही सक्षम था ...

अगला हमें जांचना और देखना होगा कि क्वेरी कैशिंग सक्षम है या नहीं। हमें एक से अधिक चर की जाँच करने की आवश्यकता होगी, इसलिए हम चर क्वेरी% के लिए जाँच करके एक ही बार में यह सब कर सकते हैं

mysql> show variables like 'query%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| query_alloc_block_size       | 8192    |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 8388608 |
| query_cache_type             | ON      |
| query_cache_wlock_invalidate | OFF     |
| 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;
SET GLOBAL query_cache_type = 1;

अब हम कैसे बताएं कि क्या यह वास्तव में काम कर रहा है? आप हुड के नीचे क्या चल रहा है पर एक नज़र लेने के लिए "Qc" से शुरू होने वाले सभी चर को खींचने के लिए SHOW STATUS कमांड का उपयोग कर सकते हैं।

mysql> SHOW STATUS LIKE 'Qc%';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| 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 rows in set (0.00 sec)

आपके पास उन आँकड़ों पर ध्यान देना होगा, जिनके पास मेरे पास बहुत सारे हैंमुक्त स्मृति छोड़ दिया। यदि आपका सर्वर बहुत सारे नीम प्रून दिखाता है, तो आपको इस मूल्य को बढ़ाने पर विचार करने की आवश्यकता हो सकती है, लेकिन मैं वेब सर्वर के लिए क्वेरी कैशिंग पर बहुत अधिक मेमोरी खर्च नहीं करूँगा ... आपको अपाचे, php, रूबी, या के लिए उपलब्ध मेमोरी छोड़ने की आवश्यकता है जो भी आप उपयोग कर रहे हैं।

कॉन्फ़िग फ़ाइल में सक्षम करें

यदि आप चाहते हैं कि ये परिवर्तन एक रिबूट या जीवित रहने के लिए होंmysql सर्वर की पुनः आरंभ, आपको उन्हें MySQL के लिए अपने /etc/mysql/my.cnf कॉन्फ़िगरेशन फ़ाइल में जोड़ने की आवश्यकता होगी। ध्यान दें कि यह आपकी स्थापना पर एक अलग स्थान पर हो सकता है।

फ़ाइल को sudo या root मोड में टेक्स्ट एडिटर का उपयोग करके खोलें, और फिर इन मानों को जोड़ें यदि वे फ़ाइल में पहले से मौजूद नहीं हैं। यदि वे मौजूद हैं, तो उन्हें अनसुना कर दें।

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576

क्वेरी कैशिंग आपके वेब एप्लिकेशन की गति में काफी सुधार कर सकता है, खासकर यदि आपका एप्लिकेशन ज्यादातर पढ़ता है। उपरोक्त विधियों का उपयोग करके स्थिति की निगरानी करें और देखें कि यह समय के साथ कैसे काम करता है।