2009-05-13 12 views
5

में लेनदेन की क्षमता अधिक कुशल है - .NET कोड में IDbTransaction या डेटाबेस में इसे संभालने के लिए क्या अधिक कुशल है? क्यूं कर?कोड बनाम डीबी

संभावित परिदृश्य क्या हैं जिनका उपयोग किया जाना चाहिए?

+0

(टिप्पणी का जवाब दिया गया) –

उत्तर

3

जब कनेक्शन-आधारित लेनदेन (IDbTransaction) की बात आती है, तो समग्र प्रदर्शन बहुत समान होना चाहिए - लेकिन इसे .NET कोड में संभालने से आप एक ही कनेक्शन पर आसानी से एकाधिक डेटाबेस संचालनों को फैला सकते हैं। यदि आप लेनदेन प्रबंधन टीएसक्यूएल के अंदर कर रहे हैं तो आपको वास्तव में इसे एकल टीएसक्यूएल क्वेरी में सीमित करना चाहिए। शुरुआत/अंत के लिए एक अतिरिक्त राउंड-ट्रिप भी हो सकती है, लेकिन यह आपको चोट पहुंचाने की संभावना नहीं है।

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

बड़ा अंतर है IDbTransaction और TransactionScope के बीच और अधिक के लिए Transactions in .net देखते हैं, लेकिन लघु संस्करण है कि TransactionScope (परिदृश्य के आधार पर) थोड़ा धीमे है, लेकिन कई कनेक्शन/डेटाबेस (या अन्य संसाधनों) अवधि कर सकते हैं।

+0

धन्यवाद मार्क ... अभी भी मैं जानना चाहता हूं कि जब कोई एसक्यूएल संग्रहीत प्रो –

+0

में लेनदेन का उपयोग कर सकता है तो आईडीबीट्रांसेंस का उपयोग क्यों करेगा क्योंकि आप आईडीबीट्रांसेंस को एकाधिक परमाणु संचालन (शायद पहले से मौजूद है)। लेनदेन के अंदर लेनदेन के अंदर आप ऐसा नहीं कर सकते हैं, लेकिन यदि आप केवल कनेक्शन आधारित हैं तो आप कर सकते हैं। यह चिंताओं के कोण को अलग करने से भी बेहतर है: आप स्प्रोक से दूर लेनदेन के लिए जिम्मेदारी लेते हैं, जिसका काम कुछ डेटा (आदि) को अपडेट करना है। –

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