सं एकल अद्यतन बयान कर रहे हैं के लिए सेट है परमाणु और उनके व्यक्तिगत भागों में कोई आदेश नहीं है।
इन दोनों:
update abc set A = B, B = 0 where A=1
update abc set B = 0, A = B where A=1
कर बिल्कुल एक ही बात है क्योंकि दो कार्य समवर्ती होने के लिए माना जाता है।
दूसरे शब्दों में, =
के दाईं ओर B
का पुराना मान है।
परिशिष्ट: कैसे एक डीबीएमएस इस व्यवहार को लागू करता है डीबीएमएस लेखन उन की चतुराई पर निर्भर करता है।
उदाहरण के लिए
एक डीबीएमएस पराक्रम सभी पंक्तियों जहां A
1 तो है, एक बार यह हो जाने पर, के माध्यम से A
स्थापित करने जा सकते हैं और इसी क्रम में A = B
, B = 0
(निष्पादित क्योंकि निष्पादन इंजन है कि पूरा करेगा संगामिति समझे, लॉक करने के लिए प्रयास उन पंक्तियों में से प्रत्येक पर B
बदलने से पहले B
पर)।
set A = B, B = A
की तरह एक बयान कुछ और अधिक खुफिया की आवश्यकता होगी, लेकिन यह है कि आसानी से पर्याप्त कर सकता है पहले वर्तमान पंक्ति बचत और वहाँ मानों का उपयोग कर मूल्यों नई पंक्ति में, की तरह कुछ स्थापित करने के लिए द्वारा:
read in oldrow
copy oldrow to newrow
newrow.A = oldrow.B
newrow.B = oldrow.A
write out newrow
तो यह सभी पंक्तियों को अनलॉक कर देगा।
यह सिर्फ एक विकल्प है। एक बहुत गूंगा डीबीएमएस सिर्फ पूरे डेटाबेस फ़ाइल को लॉक कर सकता है हालांकि यह बहुत बुद्धिमान समेकन के लिए नहीं होगा।
एक एकल उपयोगकर्ता, सिंगल-थ्रेड डीबीएमएस को समरूपता की परवाह नहीं है। यह परिवर्तन करने के लिए, प्रत्येक प्रासंगिक पंक्ति के माध्यम से बस कुछ भी नहीं लॉक होगा।
क्या दोनों पढ़ते और लिखते हैं एक ही समय में होता है? एसक्यूएल सर्वर कैसे काम करता है में यह कोई समरूपता नहीं बनाता है? – IsmailS
+1 धन्यवाद ...... – IsmailS