2010-07-11 8 views
11

क्या एक ही MySQL सर्वर पर दो (या अधिक) डेटाबेस पर पूछताछ से कोई प्रदर्शन हिट है, अगर उन डेटाबेस को एक में विलय कर दिया गया है?एक ही सर्वर पर दो mysql डेटाबेस में पूछताछ का प्रदर्शन?

पृष्ठभूमि, मुझे एक वेब एप्लिकेशन पर विरासत में विरासत मिली है जो अपने डेटा को एक ही सर्वर पर चलने वाले तीन अलग-अलग डेटाबेस में विभाजित करता है, एक सामग्री के लिए, एक उपयोगकर्ता और समूह की जानकारी के लिए और उपयोगकर्ता द्वारा उत्पन्न डेटा के लिए एक। यह सुविधाजनक है, उदाहरण के लिए यह अनुमतियों को सेट करना आसान बनाता है, उपयोगकर्ता डेटा कुछ हद तक संवेदनशील होता है, इसलिए जिन लोगों को जानने की आवश्यकता नहीं है उन्हें इसकी पहुंच नहीं होनी चाहिए। हालांकि, आवेदन की मुख्य विशेषताओं में से एक सामग्री पर उपयोगकर्ताओं या समूहों के लिए प्रगति रिपोर्ट प्रदान कर रहा है। जिसका मतलब है कि रिपोर्ट उत्पन्न करने के लिए इसे दो या दो से अधिक डेटाबेस में पूछना है।

क्या प्रदर्शन में ऐसा कोई नुकसान है?

+0

ऐसा नहीं है कि मैं, के बारे में पता कर रहा हूँ नहीं। –

+0

नहीं है, लेकिन ऐसा करने से जांच करने मिलती समान डेटा फ़ील्ड प्रकार पर प्रदर्शन कर रहे हैं। टाइप मिस्चैच फ्लाई पर रिकस्ट होते हैं जो पर्याप्त प्रदर्शन दंड का कारण बनता है। यही कारण है कि स्पष्ट रूप से डेटाबेस प्रश्नों पार करने के लिए ही सीमित नहीं है, लेकिन जब विभिन्न टीमों द्वारा प्रबंधित डेटाबेस के साथ काम कर हम लगातार उन बेमेल अनुभव करते हैं। –

उत्तर

17

सं MySQL में, "डेटाबेस" अनिवार्य रूप से सिर्फ कैटलॉग जो जिस तरह से डेटा संग्रहीत या पूछे रहे हैं पर कोई प्रभाव नहीं है।

विभिन्न डेटाबेस में दो तालिकाओं का पता कर ही DB में दो तालिकाओं से क्वेरी, एक प्रश्न निष्पादन दृष्टि से समान ही है।

+1

मैंने इसे सही उत्तर के रूप में स्वीकार कर लिया है क्योंकि यह सीधे मेरे प्रश्न का उत्तर देता है। अभी तक मैं वहाँ भी है स्टीफन जवाब में ज्ञान लग रहा है। – Leon

+0

अच्छा, धन्यवाद! – Stephen

3

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

उदाहरण इस के समान होगा:

SELECT a.user, b.user_content 
    FROM database1.table1 AS a 
    LEFT JOIN database2.table2 AS b 
     ON a.user = b.user_id; 
संबंधित मुद्दे