आप अपने वर्तमान तकनीकी स्टैक के साथ मतदान में फंस गए हैं। MySQL के पास आपको सूचना भेजने का कोई अच्छा तरीका नहीं है कि देखने के लिए कुछ नया है।
(उदाहरण के लिए, आप एक संदेश कतारबद्ध सबसिस्टम जोड़ने पर विचार कर सकते हैं, जैसे कि RabbitMQ, लेकिन इसके लिए आपके एप्लिकेशन की संरचना में एक बड़े बदलाव की आवश्यकता होगी)।
कम से कम संभव लागत पर मतदान को संभालने के लिए कुछ दिशानिर्देश।
-
उपयोगकर्ता की अपेक्षाओं को मिलीसेकंड के बजाय संदेशों पर कुछ सेकंड की विलंबता पर सेट करें।
-
विलंबता की अपेक्षाओं को पूरा करने के लिए जितनी बार आवश्यक हो क्वेरी करें।
-
प्रत्येक क्वेरी के साथ बहुत सारे डेटा को क्वेरी करने से बचें। आप ऐसा कैसे कर सकते हैं?
ए। जब भी आप कोई क्वेरी चलाते हैं तो नवीनतम टाइमस्टैम्प सहेजें
बी।
SELECT *
. का इस्तेमाल न करें . इसके बजाय उन स्तंभों के नाम दें जिनकी आपको वास्तव में आवश्यकता है। यह MySQL के अनुकूलक को आपके प्रश्नों की लागत कम करने में मदद करता है।सी। अपनी क्वेरी करने के लिए
SELECT whatever WHERE timestamp > saved_timestamp ORDER BY timestamp
करें इसलिए आपको अपनी तालिका से केवल क्रम में नए आइटम मिलते हैं। यदि आपका सिस्टम बहुत व्यस्त नहीं है, तो ये चयन अक्सर कोई पंक्ति नहीं लौटाएंगे। यह अच्छा है।डी। सुनिश्चित करें कि आपके पास टाइमस्टैम्प पर एक बहु-स्तंभ अनुक्रमणिका है और आपके चयन कथन में अन्य स्तंभ हैं। इसे कवरिंग इंडेक्स . कहा जाता है ।
इ। MySQL से अपना कनेक्शन खोलने के ठीक बाद, यह SQL कथन जारी करें। यह MySQL को आपके डेटा को कम विवाद के साथ अन्य MySQL क्लाइंट के साथ तालिका में पंक्तियों को सम्मिलित करने देता है।
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
यदि आप अपने उपयोगकर्ताओं के ब्राउज़र से AJAX के साथ ऐसा कर रहे हैं, तो आप AJAX अनुरोधों में नवीनतम टाइमस्टैम्प शामिल करना चाहते हैं ताकि आप प्रत्येक उपयोगकर्ता के ब्राउज़र में नए आवश्यक नए आइटम वितरित कर सकें।