2009-12-16 12 views
9

मैं अपने विचार पर एक इंडेक्स बनाना चाहता हूं लेकिन मुझे यह सुनिश्चित करने की ज़रूरत है कि इंडेक्स बनने पर डेटा अभी भी पढ़ा जा सके।क्या SQL सर्वर 2005 तालिका पर एक गैर-क्लस्टर इंडेक्स बनाना चुनता है?

CREATE UNIQUE CLUSTERED INDEX CLUST_IDX_SQLTIPS 
ON SQLTips (tip) with (ONLINE=ON) 

मैं इस को सही ढंग से समझ रहा हूँ: मैं एक article कि सुझाव दिया है कि जब nonclustered अनुक्रमणिका बनाने कि डेटा अभी भी पठनीय यदि आप ऑनलाइन = (नीचे दिए गए उदाहरण) निर्दिष्ट विकल्प चालू है पढ़ रहा था? क्या कोई संभावित समस्या है जिसके बारे में मुझे अवगत होना चाहिए इससे पहले कि मैं इंडेक्स को ऐसे दृश्य पर बनाऊं जो मुझे अपनी अनुक्रमणिका बनाते समय पठनीय करने की आवश्यकता हो?

उत्तर

14

ऑनलाइन इंडेक्स निर्माण और पुनर्निर्माण केवल एंटरप्राइज़ संस्करण पर उपलब्ध हैं। How Online Index Operations Work और Guidelines for Performing Online Index Operations देखें।

  • क्लस्टर सूचकांक बनाया जाना चाहिए/ऑफ़लाइन फिर से बनाया है, तो वे किसी भी ब्लॉब क्षेत्रों (छवि, ntext, पाठ, varchar (max) होते हैं, nvarchar (अधिकतम):

    कुछ प्रतिबंध, सबसे उल्लेखनीय लोगों की जा रही हैं , varbinary (अधिकतम), और एक्सएमएल)।

  • एक दृश्य पर प्रारंभिक क्लस्टर सूचकांक ऑफ़लाइन बनाया जाना चाहिए। के रूप में यह अलावा वर्तमान आकार में तालिका के बारे में 1.5 गुना आकार की आवश्यकता है

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

चूंकि आपका केस में श्रेणी (दृश्य पर प्रारंभिक क्लस्टर इंडेक्स) को छोड़ दिया गया है, तो आपको ऑनलाइन इंडेक्स के बारे में चिंता करने की आवश्यकता नहीं है। आपको ऑफ़लाइन इंडेक्स ऑपरेशन का उपयोग करना होगा।

बीटीडब्ल्यू आपको यह भी पता होना चाहिए कि अनुक्रमित विचार केवल एंटरप्राइज़ संस्करण में अनुकूलक द्वारा विचार किए जाते हैं। निचले संस्करणों पर किसी को दृश्य में संभावित अनुक्रमणिका का लाभ उठाने के लिए दृश्य में NOEXPAND क्लॉज निर्दिष्ट करना होगा।

+0

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

+0

क्लस्टर्ड इंडेक्स व्यू तालिका में पंक्तियों को लॉक करेगा, इस प्रकार लॉक की गई पंक्तियों (डिफ़ॉल्ट क्रमबद्धता स्तर के तहत) को पढ़ता है। टेबल कितनी बड़ी है? क्या हम कुछ सेकंड या इंडेक्स निर्माण के कुछ घंटों के बारे में बात कर रहे हैं? आप पढ़े गए स्नैपशॉट को सक्षम करने पर विचार कर सकते हैं, इससे SELECT को आगे असुरक्षित होने की अनुमति मिल जाएगी। लेकिन इसका सिस्टम पर वैश्विक प्रभाव पड़ता है, खासकर tempdb पर, इसलिए आपको निश्चित रूप से पहले परीक्षण करना चाहिए। –

+0

तालिका में 9 मिलियन से अधिक रिकॉर्ड हैं। मैं सोच रहा हूं कि इंडेक्स बनाने में लगभग 15 मिनट लगेंगे। अगर लोग 15 मिनट तक नहीं पढ़ सकते हैं तो मुझे कोई समस्या होगी। क्या आप उस प्रभाव के बारे में अधिक विशिष्ट हो सकते हैं जो पढ़ने के लिए सक्षम है सिस्टम पर होगा? हाथ से पहले परीक्षण की सिफारिश कैसे करेंगे? –

2

एमएसडीएन लेखों के बारे में CREATE INDEX और online index operations पर अधिक जानकारी है जिसमें इसके बारे में बहुत सारी जानकारी है।

यदि आप केवल चयन और अद्यतन कर रहे हैं, तो इसके साथ कोई समस्या नहीं होनी चाहिए। बैकअप के बारे में इतना निश्चित नहीं है, शायद परीक्षण प्रणाली पर इसे आजमाएं और देखें?