2008-11-02 18 views
41

मुझे आश्चर्य है कि पोस्टग्रेस्क्ल के साथ यूनिक्स डोमेन सॉकेट कनेक्शन तेज हैं तो स्थानीय समोच्चता से टीसीपी कनेक्शन उच्च समेकन दर में और यदि ऐसा होता है, तो कितना?PostgreSQL यूनिक्स डोमेन सॉकेट बनाम टीसीपी सॉकेट

+0

लिखित संदर्भ 'postgresql' है: उस स्थिति में, यह एक स्थानीय डीबी से कनेक्ट करने के दो तरीकों के बारे में एक बहुत ही विशिष्ट प्रश्न है। – reedstrm

उत्तर

29

यूनिक्स डोमेन सॉकेट को लूपबैक इंटरफ़ेस (डेटा की कम प्रतिलिपि, कम संदर्भ स्विच) पर टीसीपी सॉकेट की तुलना में बेहतर प्रदर्शन प्रदान करना चाहिए, लेकिन मुझे नहीं पता कि प्रदर्शन वृद्धि PostgreSQL के साथ प्रदर्शित की जा सकती है या नहीं।

मुझे फ्रीबीएसडी मेलिंग सूची पर एक छोटी तुलना मिली: http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html

-3

स्थानीयहोस्ट पर टीसीपी सॉकेट आमतौर पर यूनिक्स डोमेन सॉकेट का उपयोग करके कार्यान्वित किया जाता है, इसलिए अधिकांश प्रणालियों का उत्तर किसी के लिए लापरवाही नहीं होता है। हालांकि, यह किसी भी तरह से मानक नहीं है - यह आमतौर पर यह कैसे किया जाता है, इसलिए आपको इस पर निर्भर नहीं होना चाहिए।

+3

जिज्ञासा से बाहर, जिस पर ओएसईएस यूनिक्स डोमेन सॉकेट का उपयोग कर टीसीपी लूपबैक लागू किया गया है? – Alexander

+1

कोई भी AFAIK नहीं - लेकिन यदि आप डीबी कनेक्शन स्ट्रिंग के लिए "लोकलहोस्ट" निर्दिष्ट करते हैं तो कई डेटाबेस स्वचालित रूप से यूनिक्स डोमेन सॉकेट का उपयोग करने का प्रयास करते हैं। – Alnitak

+4

PostgreSQL वह है जो नहीं करता है - यदि आप लोकलहोस्ट निर्दिष्ट करते हैं, तो यह टीसीपी लूपबैक का उपयोग करेगा, अगर आप कुछ भी निर्दिष्ट नहीं करते हैं, तो यह डोमेन सॉकेट का उपयोग करेगा। – CesarB

4

afaik, यूनिक्स डोमेन सॉकेट (UDS) प्रणाली पाइप की तरह काम करते हैं और यह केवल डेटा भेजने, चेकसम और अन्य अतिरिक्त जानकारी नहीं भेजने के लिए, TCP सॉकेट के रूप में तीन तरह से हाथ मिलाना ... का उपयोग नहीं

पुनश्च: शायद UDS अधिक तेजी से

5

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

यूनिक्स डोमेन सॉकेट पर किए गए डेटा को आईपी स्टैक परतों के माध्यम से ऊपर और नीचे जाना नहीं है।

पुन: अलेक्जेंडर का जवाब। AFAIK आपको प्रत्येक दिशा में एक से अधिक संदर्भ स्विच या डेटा कॉपी नहीं मिलनी चाहिए (यानी प्रत्येक read() या write()), इसलिए मुझे विश्वास क्यों है कि अंतर लापरवाह होगा। आईपी ​​स्टैक को पैकेट की प्रतिलिपि बनाने की आवश्यकता नहीं होती है क्योंकि यह परतों के बीच चलता है, लेकिन इसे उच्च-स्तर पैकेट हेडर जोड़ने और निकालने के लिए आंतरिक डेटा संरचनाओं में हेरफेर करना पड़ता है।

45

पोस्टग्रेज़ कोर डेवलपर ब्रूस मोमजियन blogged about this topic है। मोमजियन राज्यों, "यूनिक्स-डोमेन सॉकेट संचार मापने योग्य तेज़ है।" उन्होंने क्वेरी नेटवर्क प्रदर्शन को मापते हुए दिखाया कि स्थानीय डोमेन सॉकेट टीसीपी/आईपी स्टैक का उपयोग करने से 33% तेज था।

+0

ओवरहेड + 175% है जब टीसीपी के लिए एसएसएल सक्षम है। –

संबंधित मुद्दे