क्या पंक्तियों को अपडेट करने के लिए डेटाबेस एक डिलीट और एक इंसर्ट करते हैं?


13

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

मेरा मतलब है, मुझे पता है कि यदि आप किसी फ़ील्ड को अपडेट करते हैं और आपको उस पंक्ति के लिए अधिक स्थान की आवश्यकता है, तो यह पंक्ति को भौतिक रूप से हटा सकता है और नए डेटा के साथ अंत में रख सकता है। लेकिन यदि उदाहरण के लिए आप उपयोग किए गए स्थान को कम करते हैं, तो इसे आखिर में हटाकर फिर से क्यों डाला जाएगा?

क्या यह सच भी है? क्या लाभ हैं?


1
क्या वह एक विशिष्ट प्रकार के डेटाबेस के बारे में बात कर रहा था?
टॉम वी - topanswers.xyz

1
@ TomV वह एसक्यूएल सर्वर के बारे में बोल रहा था, लेकिन उसने फिर कहा कि यह सभी डीबीएस में इस तरह से किया गया था ..
पाब्लो माटियास गोमेज़

जवाबों:


16

क्या यह सच भी है?

नहीं, यह एक कार्यान्वयन विवरण है। एक डेटाबेस जगह में एक उपयुक्त अद्यतन को लागू कर सकता है यदि वह ऐसा करता है।

क्या लाभ हैं?

एक इन्सर्ट के बाद डिलीट में अपडेट को विभाजित करना आमतौर पर कार्यान्वयन को सरल बनाता है। संभावित साइड बेनिफिट्स में एक अद्वितीय इंडेक्स में क्षणिक कुंजी के उल्लंघन से बचने की क्षमता शामिल है , विभाजन हटाने / डालने के कार्यों को उपयुक्त रूप से क्रमबद्ध करके।

एक स्प्लिट अपडेट थोड़ा धीमा हो सकता है और एक सच्चे इन-प्लेस अपडेट की तुलना में अधिक लॉग उत्पन्न कर सकता है (जो वैसे भी संभव नहीं है)।

जैसा कि परिजनों ने एक टिप्पणी में उल्लेख किया है, यदि आपको एक उदाहरण की आवश्यकता है (SQL सर्वर के लिए):

यह MVCC को लागू करने से संबंधित है। MVCC के बारे में विकिपीडिया पृष्ठ में , यह उल्लेख किया गया है:

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

ब्रूस मोम्जियन द्वारा पोस्टग्रेएसक्यूएल इंटर्नल पीडीएफ के पेज 60 को भी देखें (पोस्टग्रेज एमवीसीसी का उपयोग करता है): " UPDATEप्रभावी रूप से एक DELETEऔर एक है INSERT।"

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