मेरे पास SQL Server 2008 R2 में सिर्फ 6 बिलियन पंक्तियों के साथ एक तीन स्तंभ तालिका है।
हम अपने ग्राहकों के लिए मिनट-दर-मिनट सिस्टम विश्लेषण चार्ट बनाने के लिए हर दिन इसकी क्वेरी करते हैं। मैंने किसी डेटाबेस प्रदर्शन हिट्स पर ध्यान नहीं दिया है (हालांकि यह तथ्य कि यह बढ़ता है ~ 1 जीबी हर दिन बैकअप को थोड़ा अधिक शामिल करता है जितना मैं चाहूंगा)।
जुलाई 2016 को अपडेट करें
हमने इसे ~ 24.5 बिलियन पंक्तियों में बना दिया था, इससे पहले कि बैकअप दो साल से अधिक पुराना हो जाए (महंगे टेपों सहित, कई बैकअपों में संग्रहीत ~ 700 जीबी) को रिकॉर्ड करने का फैसला करने से पहले हमने इसे 24.5 बिलियन पंक्तियों में बदल दिया। यह ध्यान देने योग्य है कि इस निर्णय में प्रदर्शन एक महत्वपूर्ण प्रेरक नहीं था (यानी, यह अभी भी बहुत अच्छा काम कर रहा था)।
जो कोई भी खुद को SQL सर्वर से 20 बिलियन पंक्तियों को हटाने का प्रयास करता है, मैं इस लेख की अत्यधिक अनुशंसा करता हूं । लिंक मर जाने की स्थिति में प्रासंगिक कोड (पूर्ण विवरण के लिए लेख पढ़ें):
ALTER DATABASE DeleteRecord SET RECOVERY SIMPLE;
GO
BEGIN TRY
BEGIN TRANSACTION
SELECT *
INTO dbo.bigtable_intermediate
FROM dbo.bigtable
WHERE Id % 2 = 0;
TRUNCATE TABLE dbo.bigtable;
SET IDENTITY_INSERT dbo.bigTable ON;
INSERT INTO dbo.bigtable WITH (TABLOCK) (Id, c1, c2, c3)
SELECT Id, c1, c2, c3 FROM dbo.bigtable_intermediate ORDER BY Id;
SET IDENTITY_INSERT dbo.bigtable OFF;
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
ALTER DATABASE DeleteRecord SET RECOVERY FULL;
GO
अपडेट नवंबर 2016
यदि आप एक ही तालिका में इस डेटा को संग्रहीत करने की योजना बनाते हैं: नहीं। मैं अत्यधिक अनुशंसा करता हूं कि आप तालिका विभाजन पर विचार करें (यदि आप एंटरप्राइज़ संस्करण चला रहे हैं तो मैन्युअल रूप से या अंतर्निहित सुविधाओं के साथ)। यह पुराने डेटा को एक बार (सप्ताह / माह / इत्यादि) के रूप में तालिका को छोटा करने में आसान बनाता है। यदि आपके पास एंटरप्राइज नहीं है (जो हम नहीं देते हैं), तो आप बस एक स्क्रिप्ट लिख सकते हैं जो महीने में एक बार चलती है, 2 साल से अधिक पुरानी टेबल छोड़ती है, अगले महीने की तालिका बनाती है, और एक डायनेमिक दृश्य को पुन: बनाता है जो सभी विभाजन में शामिल होता है आसान क्वेरी के लिए एक साथ तालिकाओं। स्पष्ट रूप से "महीने में एक बार" और "2 वर्ष से अधिक पुराने" को आपके द्वारा उपयोग किए जाने वाले मामले के आधार पर परिभाषित किया जाना चाहिए।