Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पंक्ति संस्करण और प्रदर्शन

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

SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion

पिछले @rowVersion के बाद से अद्यतन वस्तुओं की सूची प्राप्त करने के लिए उपयोग किया जाने वाला सामान्य तरीका कौन सा है। यह ठीक दिखता है और 10,000 पंक्तियों वाली तालिका के लिए बिल्कुल सही काम करेगा। लेकिन जब आप 1M पंक्तियाँ प्राप्त करते हैं तो आप जल्दी से पाएंगे कि यह हमेशा एक टेबलस्कैन कर रहा है और आपका प्रदर्शन हिट इसलिए है क्योंकि आपकी तालिका अब पूरी तरह से सर्वर की रैम के भीतर फिट नहीं होती है।

यह एक आम समस्या है जिसका सामना rowVersion . के साथ होता है कॉलम, यह अपने आप पर जादुई रूप से अनुक्रमित नहीं है। साथ ही, जब आप एक पंक्ति संस्करण कॉलम को इंडेक्स करते हैं तो आपको यह स्वीकार करना होगा कि इंडेक्स अक्सर समय के साथ बहुत खंडित हो जाएगा, क्योंकि नए अपडेट किए गए मान हमेशा इंडेक्स के निचले भाग में होंगे, जब आप मौजूदा आइटम अपडेट करते हैं तो पूरे इंडेक्स में अंतराल छोड़ देते हैं ।

संपादित करें:यदि आप नहीं जा रहे हैं तो rowVersion . का उपयोग करें अद्यतन किए गए आइटम की जाँच के लिए फ़ील्ड और इसके बजाय आप इसका उपयोग निरंतरता के लिए करने जा रहे हैं ताकि यह सुनिश्चित किया जा सके कि आपके द्वारा पिछली बार पढ़ने के बाद से रिकॉर्ड अपडेट नहीं किया गया है, तो यह पूरी तरह से स्वीकार्य उपयोग होने वाला है और इसका कोई प्रभाव नहीं पड़ेगा।

UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersion



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2000 का उपयोग करके पिवट करें

  2. एसक्यूएल:संचयी कॉलम और पंक्ति भर में योग

  3. टी-एसक्यूएल:स्ट्रिंग कॉन्सैट के साथ समस्या

  4. SQL सर्वर गणितीय कार्य (पूरी सूची)

  5. SQL सर्वर:एकल कॉलम में मानों के आधार पर तालिका में डुप्लिकेट खोजें