99% के दैनिक सूचकांक विखंडन को कैसे रोकें


11

मेरे पास 100.000 खिलाड़ियों के लिए एक हाईस्कोर टेबल है जिसे प्रति दिन 2 बार प्रति खिलाड़ी एक रिकॉर्ड के साथ डाला जा रहा है। दिन के अंत में उस तालिका में अनुक्रमित के लिए सूचकांक विखंडन 99% है। वहाँ सेटिंग्स को tweaking द्वारा इसे रोकने के लिए एक रास्ता है?

CREATE TABLE HighScore(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [user] [int] NULL,
    [player] [int] NULL,
    [round] [tinyint] NULL,
    [group] [int] NULL,
    [rank] [int] NULL,
    [delta] [int] NULL,
    [roundpoints] [int] NULL,
    [totalpoints] [int] NULL,
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]


CREATE NONCLUSTERED INDEX [HighScore_RoundGroup_Nidx] ON .[HighScore] 
(
    [round] ASC,
    [group] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 80) ON [PRIMARY]
GO

1
मूर्खतापूर्ण प्रश्न, लेकिन सभी आधार को कवर करने के लिए - क्या आप हर दिन पुनर्निर्माण / पुनर्गठन कर रहे हैं?
JHFB

TABLE DDL के बिना किसी को भी पोस्ट करने का अनुमान होगा। क्या आप GUID को प्राथमिक कुंजी के रूप में उपयोग कर रहे हैं?
एसक्यूएल लर्नर

मैं अभी हर दिन पुनर्निर्माण कर रहा हूं, लेकिन मुझे आश्चर्य है कि अगर मैं इसे हर दिन होने से रोक सकता हूं क्योंकि मैं डेटा के विकास पर बहुत अच्छी तरह से अनुमान लगा सकता हूं।
ओल

1
आप विखंडन स्तर का निर्धारण कैसे कर रहे हैं? मैं क्लस्टर इंडेक्स के लिए बिल्कुल तार्किक विखंडन की उम्मीद नहीं करूंगा। कुछ आंतरिक विखंडन हालांकि, आप FILLFACTOR = 80वहाँ की जरूरत नहीं है। यह सिर्फ जगह बर्बाद करेगा। सभी कॉलम निश्चित लंबाई के होते हैं इसलिए एक पंक्ति अपडेट पर विस्तार नहीं कर सकती है और तालिका के मध्य में आवेषण नहीं हो सकता है। 99% अन्य सूचकांक के लिए अप्रत्याशित रूप से उच्च लगता है। प्रत्येक सूचकांक में कितने पृष्ठ हैं?
मार्टिन स्मिथ

99% प्रत्येक दिन के पुनर्निर्माण के बाद वास्तव में कुछ हो जाएगा, क्या आप अपना sys.dm_db_index_physical_statsउत्पादन दिखा सकते हैं ?
मार्टिन स्मिथ

जवाबों:


3

मुझे लगता है कि आपको उच्च FILLFACTORसेटिंग्स HighScore_RoundGroup_Nidx(जैसे 50 या 40) पर कोशिश करनी चाहिए । आप FILLFACTOR0 या 100 पर सेट कर सकते हैं PRIMARY KEYक्योंकि यह खंडित नहीं होना चाहिए यदि यह अभी भी करता है, FILLFACTORतो मदद नहीं करता है क्योंकि इसका कारण यह है कि नए आवंटित किए गए पृष्ठ अन्य नए आवंटित पृष्ठों के साथ इंटरलेव करते हैं। यह एक प्रसिद्ध SQL सर्वर समस्या है। आप इस अनुक्रमणिका को अपने फ़ाइलग्रुप में स्थानांतरित कर सकते हैं जो इस समस्या को रोक देगा।


2

हो सकता है कि आपको लगता है कि आप पुनर्निर्माण कर रहे हैं, लेकिन सूचकांक फिर से नहीं बनता है क्योंकि सूचकांक काफी बड़ा नहीं है।

इस प्रश्न पर एक नज़र डालें कि सूचकांक REBUILD सूचकांक के टुकड़े को कम क्यों नहीं करता है?

क्या आपने पुनर्निर्माण के बाद विखंडन की जांच की? क्या यह वास्तव में डीफ़्रैग्मेन्ट है।

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