MySQL सॉकेट का उपयोग कब करें और होस्ट का उपयोग कब करें: पोर्ट?


19

कई एप्लिकेशन मुझे उपयोगकर्ता नाम, पासवर्ड होस्ट और पोर्ट का उपयोग करके मैसकॉल से कनेक्ट करने की अनुमति देते हैं। कुछ मुझे इसके बजाय एक सॉकेट को कॉन्फ़िगर करने की अनुमति देते हैं host:port

क्या एक के बाद एक स्पष्ट लाभ हैं? मैं सोच सकता हूं कि एक सॉकेट तभी काम करता है जब MySQL उसी मशीन पर हो। ऐसा क्या? और यदि हां, तो localhost:3306क्या कनेक्ट करने के बजाय उस सॉकेट का उपयोग करने पर लाभ हैं ?

मैं नेटवर्किंग और सॉकेट्स के ins- और बहिष्कार से बहुत परिचित नहीं हूं, इसलिए शायद मुझे कुछ महत्वपूर्ण जानकारी याद आ रही है और मेरा सवाल सिर्फ सादा बेवकूफाना है; यदि हां, तो क्या आप बता सकते हैं कि मुझे क्या याद आ रहा है?

जवाबों:


19

खैर, यह आसान है।

सॉकेट एक फ़ाइल आधारित संचार है, और आप किसी अन्य मशीन से सॉकेट तक नहीं पहुँच सकते।

दूसरी ओर, पोर्ट दुनिया के लिए खुले हैं (कॉन्फ़िगरेशन पर निर्भर करता है) और आप होस्ट / पोर्ट संयोजन का उपयोग करके अन्य मशीन से mysql तक पहुंच सकते हैं।

इसके अलावा, जितना मैं सॉकेट्स को समझता हूं, वे केवल फ़ाइल प्रारूप में होस्ट + पोर्ट का संयोजन हैं। इसलिए, मैं उनमें से किसी का भी उपयोग करने में कोई स्पष्ट लाभ नहीं देखता (जितना मेरा ज्ञान जाता है)।

हालाँकि, मैं व्यक्तिगत रूप से होस्ट + पोर्ट का उपयोग करना पसंद करता हूं, क्योंकि मेरा कोड अधिक लचीला हो जाता है, क्योंकि मैं इसे अन्य मशीन में स्थानांतरित कर सकता हूं, बहुत कुछ बदले बिना।

किसी पुराने पोस्ट से कॉपी पेस्ट करें :

यूनिक्स सॉकेट थोड़ा तेज़ होते हैं क्योंकि आपके पास tcp-overhead नहीं होता है। यदि आपको यह पता चलता है कि प्रदर्शन में कमी सर्वर लोड का सवाल है। यदि आपके पास बहुत अधिक सर्वर लोड नहीं है तो आप इसे पहचान नहीं पाएंगे।

यदि आप वेबसर्वर से उदाहरण के लिए MySQL-Server को अलग करने के लिए जेल (FreeBSD) या कुछ अन्य वर्चुअलाइजेशन तकनीक का उपयोग करते हैं, तो आप अक्सर सॉकेट के बजाय tcp / ip सेटअप का उपयोग करते हैं। फ़ायरवॉल नियमों को हालांकि पहुँच को प्रतिबंधित करने की आवश्यकता है।

आपको यह पता लगाने की आवश्यकता है कि क्या आपका सिस्टम भारी भार के अधीन है ताकि सॉकेट जरूरी हो या आप एक अच्छी प्रणाली के डिजाइन (सेवाओं को अलग करने) पर ध्यान केंद्रित कर सकें, तो एक tcp / ip समाधान बेहतर होगा।

इसलिए एक लंबा उत्तर दें:

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


लेकिन जब मेरे पास दोनों होते हैं, जब mysqld क्लाइंट के रूप में एक ही मशीन पर रहता है; क्या एक दूसरे पर प्रयोग करने में अंतर हैं? क्या एक लाइटर, अधिक परफ़ॉर्मर, एरर-प्रोन या जो भी हो, दूसरे से अधिक?
Berkes

बस कुछ और जानकारी के साथ उत्तर को अपडेट किया।
GeekRide

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