एक विशाल मेज पर एक गुच्छेदार सूचकांक बनाने के लिए दर्द रहित तरीका?


22

इसलिए हमारे पास एक ग्राहक साइट है जो कुछ गंभीर धीमी प्रदर्शन के बारे में शिकायत कर रही है। मैंने एक नज़र डाली और यह स्पष्ट है कि समस्या इसलिए है क्योंकि किसी और ने (grrrr) ने एक तालिका का डिज़ाइन किया, जिसमें बिना किसी अनुक्रमित सूचकांक के 20 मिलियन से अधिक रिकॉर्ड दर्ज किए गए थे।

अब मैं उस तालिका पर एक संकुल सूचकांक बनाना चाहता हूं - लेकिन परीक्षण के माहौल में मेरी create indexआज्ञा एक घंटे से चल रही है और यह अभी भी नहीं हुआ है। ग्राहक साइट एक शॉप फ्लोर है जो 24/7 काम करता है, और जब मैं एक इंडेक्स बनाता हूं तो एक घंटे का डाउन टाइम नहीं दे सकता।

क्या इंडेक्स बनाने की कुछ कम ब्रूट-फोर्स विधि है जो या तो काम जल्दी खत्म कर देगी, या इसे कुछ स्मार्ट तरीके से करेगी जो व्यस्त रहने के दौरान सर्वर के प्रदर्शन को पूरी तरह से नहीं मार पाएगी?

हम SQL सर्वर एंटरप्राइज संस्करण का उपयोग कर रहे हैं।

जवाबों:


26
  • यदि आपका sql सर्वर एंटरप्राइज + संस्करण है और तालिका में कोई BLOB फ़ील्ड नहीं है - CREATE CLUSTERED INDEX ... WITH(ONLINE=ON)

  • यदि नहीं - कोई भी तरीका नहीं है सिवाय इसके कि टेबल को साइड में एक ही स्कीमा के साथ बनाने के लिए और बुद्धिमानी से डेटा को इसमें स्थानांतरित करें, जिसमें सभी INSERT / UPDATE / DELETE ऑपरेशंस (उदाहरण के लिए ट्रिगर का उपयोग करके) शामिल हैं, और फिर पुरानी तालिका और नाम बदलें। पुराने के समान नाम के लिए नया - विपक्ष हैं: धीमा, सर्वर और भंडारण के लिए अतिरिक्त भार जोड़ता है


12

सुनिश्चित नहीं है कि SQL सर्वर का कौन सा संस्करण आपके ग्राहक का उपयोग कर रहा है। उद्यम में आप (ONLINE = ON) के साथ सूचकांक का निर्माण कर सकते हैं, इसलिए तालिका तब तक उपलब्ध होती है जब तक कि सूचकांक निर्मित नहीं हो जाता।


8
  • मूल के समान नई तालिका बनाएं (स्पष्ट रूप से एक अलग नाम की आवश्यकता होगी)
  • नए टेबल पर क्लस्टर इंडेक्स बनाएं
  • नई तालिका में डेटा लोड करें
  • मूल तालिका छोड़ें
  • मूल नाम का उपयोग करके नई तालिका का नाम बदलें

सुनिश्चित करें कि आप किसी भी अनुमतियों को लागू करते हैं जो मूल से आवश्यक थीं।

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