SQL सर्वर में क्रॉस-डेटाबेस क्वेरीज़ महंगी हैं?


15

SQL सर्वर में क्रॉस-डेटाबेस क्वेरीज़ महंगी हैं? सभी डेटाबेस एक ही उदाहरण में हैं।


3
मुझे कभी कोई सबूत नहीं मिला कि वे हैं, नहीं। एकमात्र अपवाद जिसे मैं सोच भी सकता था (लेकिन परीक्षण नहीं किया गया है) (ए) हैं कि ऑप्टिमाइज़र उन रिश्तों से लाभ नहीं उठा सकता है जो स्पष्ट नहीं हो सकते हैं (जैसे कि यह विदेशी प्रमुख परिभाषाओं से लाभ उठा सकता है, जो क्रॉस मौजूद नहीं हो सकते हैं -database) या (b) आँकड़ों से जुड़े हुए मुद्दे हैं जो लिंक किए गए सर्वर पर एक समस्या है, लेकिन मुझे लगता है कि ऐसे मामले भी हो सकते हैं जहाँ डेटाबेस में क्वेरी चलाने वाला उपयोगकर्ता भी आँकड़े नहीं देख सकता। पता नहीं (बी) असली है या नहीं - परीक्षण नहीं किया गया है, बस पता है कि सर्वरों में एक गंभीर मुद्दा हो सकता है।
हारून बर्ट्रेंड

2
मैं इस पर @AaronBertrand के साथ हूं, मैंने निश्चित रूप से यह कहने के लिए कुछ भी नहीं देखा कि बहुत बड़ी हिट है। केवल एक चीज जो मैं सोच सकता था कि समीकरण के लिए कुछ जोड़ देगा संभवतः कुछ प्रमाणीकरण कार्यों का रूप होगा, लेकिन मुझे संदेह है कि यह महत्वपूर्ण होगा। यह सिर्फ मुझे जोर से सोच रहा है, मुझे यकीन नहीं है। यहां आपका सबसे अच्छा दांव क्रॉस-डेटाबेस के साथ एक स्वचालित परीक्षण / बेंचमार्क सेट करना होगा, फिर उसी क्वेरी इंटर-डेटाबेस के साथ और उस टेस्ट को हजारों बार चलाएं। औसत, अधिकतम आदि प्राप्त करें और अपना निर्णय उसी के आधार पर करें।
थॉमस स्ट्रिंगर

1
@thomas वास्तविक क्वेरी योजनाओं को देखकर निश्चित रूप से अंतर देख सकता है?
मैक्स वर्नोन

@ जोनाथन: "महंगी" की परिभाषा विकल्पों के सापेक्ष है। तो, आप क्या करने की कोशिश कर रहे हैं और आप के बीच क्या निर्णय ले रहे हैं? अधिक जानकारी के बिना एक जवाब प्राप्त करना काफी संभव है जो इस सवाल का सामना करने के लिए सही है, लेकिन एक ही समय में आपकी स्थिति के लिए बिल्कुल गलत है। सब कुछ एक है लागत होती है, लेकिन यह लागत या तो सस्ती या महंगी हो सकती है, जो इस बात पर निर्भर करती है कि आप इसकी तुलना कर रहे हैं। और क्वेरी की लागत (यानी समय, विवाद, आदि) को रखरखाव लागत, हार्डवेयर लागत, आदि के खिलाफ तौलना चाहिए
सोलोमन रटज़की

मैं एक ही तालिका में एक प्रश्न की तुलना में लागत जानना चाहूंगा।
जोनाथन एलन

जवाबों:


6

क्षमा करें, प्रश्न पर टिप्पणी करने के लिए मेरे पास पर्याप्त प्रतिष्ठा नहीं है, लेकिन मेरे अनुभव से अगर क्लाइंट एप्लिकेशन एक क्वेरी के लिए लेनदेन उठाता है जो क्रॉस डेटाबेस जॉइन करता है तो यह वितरित किए गए लेनदेन को बढ़ावा देगा और डीटीसी लेनदेन का ओवरहेड होगा ।

इस मामले में डीटीसी ओवरहेड को प्रदर्शन के लिए एक नकारात्मक के रूप में देखा जा सकता है। आम तौर पर अंतर नगण्य होगा, हालांकि Microsoft डीटीसी लेनदेन का वर्णन इस प्रकार करता है:

वितरित लेनदेन आमतौर पर महत्वपूर्ण सिस्टम संसाधनों का उपभोग करते हैं

लेन-देन का प्रचार

... जो आपके सर्वर द्वारा आवश्यक संसाधनों की पेशकश नहीं कर सकता है, तो प्रदर्शन में गिरावट का सुझाव देगा।

बस स्पष्ट करने के लिए, ऊपर दिया गया आलेख स्थानीय लेनदेन को बढ़ावा देता है जब दूरस्थ सिस्टम पेश किया जाता है, लेकिन मैंने क्रॉस सर्वर प्रश्नों का उपयोग करते समय उसी सर्वर पर लेनदेन के लिए यह मामला देखा है।

जैसा कि थॉमस स्ट्रिंगर अपनी टिप्पणी में बताते हैं, प्रमाणीकरण में अतिरिक्त ओवरहेड होगा, हालांकि मुझे लगता है कि यह एसआईडी-चालित होगा, वहां कम से कम ओवरहेड होगा जब तक कि आपको अन्य डेटाबेस तक पहुंचने के लिए अलग-अलग क्रेडेंशियल्स का उपयोग न करना पड़े।

यदि डेटाबेस सेटिंग्स में अंतर था, जो अतिरिक्त सुझावों में शामिल हो गया, जो पिछले सुझावों से बड़ा हो सकता है - उदाहरण के लिए डेटाबेस कॉलेशन। डेटाबेस टकराव एक कार्यात्मक अंतर के रूप में प्रकट हो सकता है, न कि केवल एक प्रदर्शन अंतर।

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


1
If a local transaction spans two or more databases on the same instance of the Database Engine, the instance uses an internal two-phase commit to commit all of the databases involved in the transaction.- यदि आपने अन्यथा पाया है, तो कृपया स्पष्ट प्रजनन चरणों के साथ कनेक्ट पर बग की रिपोर्ट करें।
जॉन सेगेल

1
लेन-देन संवर्धन लेख सीएलआर लेनदेन के लिए है।
stacylaray

-2

SQL सर्वर 2014 में, मेमोरी-ऑप्टिमाइज़ किए गए टेबल क्रॉस-डेटाबेस लेनदेन का समर्थन नहीं करते हैं। आप उसी लेनदेन या उसी क्वेरी से किसी अन्य डेटाबेस तक नहीं पहुंच सकते हैं जो मेमोरी-ऑप्टिमाइज़ किए गए टेबल तक भी पहुंचता है। आप किसी डेटाबेस में एक तालिका से डेटा को दूसरे डेटाबेस में मेमोरी-अनुकूलित तालिका में आसानी से कॉपी नहीं कर सकते। http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx वितरित और क्रॉस-डेटाबेस लेनदेन डेटाबेस मिररिंग / AOAG के लिए समर्थित नहीं हैं। http://technet.microsoft.com/en-us/library/hh393530.aspx । यदि आप स्वामित्व का उपयोग करने जा रहे हैं, तो सुरक्षा जोखिमों से अवगत रहें। http://msdn.microsoft.com/en-us/library/ms188676.aspx


यह केवल उन परिदृश्यों पर लागू होता है जो "संसाधन जो कई उदाहरणों या सर्वरों को फैलाते हैं"। इस मामले में हम कई डेटाबेस के साथ एकल उदाहरण के बारे में बात कर रहे हैं।
जोनाथन एलन

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