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

लॉग के बिना SQL में तालिका के बड़े डेटा को कैसे हटाएं?

  1. यदि आप उस तालिका की सभी पंक्तियों को हटा रहे हैं, तो तालिका को छोटा करना सबसे आसान विकल्प है, कुछ इस तरह

     TRUNCATE TABLE LargeTable
     GO
    

Truncate तालिका बस तालिका को खाली कर देगी, आप हटाए जाने वाली पंक्तियों को सीमित करने के लिए WHERE क्लॉज का उपयोग नहीं कर सकते हैं और कोई भी ट्रिगर सक्रिय नहीं किया जाएगा।

  1. दूसरी ओर यदि आप 80-90 प्रतिशत से अधिक डेटा हटा रहे हैं, तो कहें कि यदि आपके पास कुल 11 मिलियन पंक्तियां हैं और आप 10 मिलियन हटाना चाहते हैं तो दूसरा तरीका इन 1 मिलियन पंक्तियों को सम्मिलित करना होगा (रिकॉर्ड जिन्हें आप रखना चाहते हैं) ) दूसरी स्टेजिंग टेबल पर। इस बड़ी तालिका को छोटा करें और इन 1 मिलियन पंक्तियों को वापस डालें।

  2. या यदि अनुमतियाँ/विचार या अन्य वस्तुएँ, जिनकी अंतर्निहित तालिका के रूप में यह बड़ी तालिका है, इस तालिका को छोड़ने से प्रभावित नहीं होती हैं, तो आप इन अपेक्षाकृत कम मात्रा में पंक्तियों को दूसरी तालिका में प्राप्त कर सकते हैं, इस तालिका को छोड़ सकते हैं और इसके साथ एक और तालिका बना सकते हैं। स्कीमा, और इन पंक्तियों को इस पूर्व-बड़ी तालिका में वापस आयात करें।

  3. एक आखिरी विकल्प जो मैं सोच सकता हूं, वह है आपके डेटाबेस के Recovery Mode to SIMPLE में बदलना और फिर कुछ इस तरह लूप का उपयोग करके छोटे बैचों में पंक्तियों को हटा दें:

     DECLARE @Deleted_Rows INT;
     SET @Deleted_Rows = 1;
    
    
     WHILE (@Deleted_Rows > 0)
       BEGIN
        -- Delete some small number of rows at a time
          DELETE TOP (10000)  LargeTable 
          WHERE readTime < dateadd(MONTH,-7,GETDATE())
    
       SET @Deleted_Rows = @@ROWCOUNT;
     END
    

और पुनर्प्राप्ति मोड को वापस पूर्ण में बदलना न भूलें और मुझे लगता है कि इसे पूरी तरह से प्रभावी बनाने के लिए आपको एक बैकअप लेना होगा (परिवर्तन या पुनर्प्राप्ति मोड)।



  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 सर्वर में मेमोरी सेटिंग के महत्व को समझना

  2. एसक्यूएल सर्वर परिवर्तनीय कॉलम नाम?

  3. मैं SQL सर्वर 2008 प्रबंधन स्टूडियो में टेक्स्ट या वर्कर (MAX) कॉलम की पूरी सामग्री कैसे देखूं?

  4. मुझे एक टेबल नाम को संग्रहीत प्रो में कैसे पास करना चाहिए?

  5. SQL सर्वर 2017 बैकअप -2