यह निर्धारित करना कि किसी तालिका में अनुक्रमणिका अप्रयुक्त हैं


12

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

select o.name as TableName, i.name as IndexName, p.reserved_page_count * 8.0 / 1024 as     SpaceInMB, s.*
from     sys.dm_db_index_usage_stats s
inner join sys.objects o on s.object_id = o.object_id
inner join sys.indexes i on i.index_id = s.index_id and i.object_id = o.object_id
inner join sys.dm_db_partition_stats p on i.index_id = p.index_id and o.object_id =      p.object_id
where o.name = TableName

मुझे पता है कि जब last_user_seek / स्कैन / लुकअप सभी शून्य हैं, कि किसी भी उपयोगकर्ता ने पिछले पुनरारंभ के बाद से सूचकांक का उपयोग नहीं किया है। लेकिन मैं सोच रहा हूँ कि क्या system_scans / लुक्स / लुक्स… हैं? क्योंकि एक निश्चित तालिका में मैंने 5 पाया जिसमें कोई उपयोगकर्ता गतिविधि नहीं थी, लेकिन किसी ने 10 दिन पहले सिस्टम गतिविधि की थी। क्या किसी के पास सिस्टम स्केन / लाइक्स / लुकअप के बारे में कोई जानकारी है? ये तालिकाओं वास्तव में अति-अनुक्रमित लगती हैं और मैं वसा को ट्रिम करना चाहता हूं।


मैंने उसी प्रश्न को sqlservercentral पर पोस्ट किया और मुझे वहाँ भी प्रतिक्रियाएँ मिलीं। इस विषय की लिंक है: sqlservercentral.com/Forums/Topic1205983-391-3.aspx?Update=1
Aushin


@ आप जिस लिंक को ऊपर पोस्ट कर रहे हैं, वह भावनाओं और पक्ष-विक्षोभों से भरी एक बहुत ही गंदी चर्चा का कारण बन रहा है, जिसे कोई भी वास्तव में पालन नहीं करना चाहता है।
मैगीयर

जवाबों:


10

सूचकांक अनुरक्षण (पुनर्निर्माण / पुनर्गठन) और DBCC CHECKDB गतिविधि सबसे अधिक संभावना है, संभवतः आँकड़े अपडेट करते हैं। किसी भी अनुसूचित रखरखाव को कॉन्फ़िगर किया गया?

यदि कोई उपयोगकर्ता पहुँच नहीं है, तो उन्हें बिन। बस उस समय सीमा का ध्यान रखें जिस पर आप तय करते हैं कि वे अब उपयोग नहीं किए जाते हैं। क्या उदाहरण के लिए कोई साप्ताहिक या मासिक रिपोर्टिंग कार्य हैं?

जब आप देख रहे हों, तो डुप्लिकेट इंडेक्स के लिए भी खुदाई करें ।

संपादित करें: SSC लिंक के बारे में

थ्रेड के माध्यम से एक त्वरित स्कैन से, एसएससी लोक के समान विचार थे। हालांकि, वे इन अनुक्रमितों के संभावित "सामयिक" उपयोग पर अधिक सतर्क रुख अपना रहे हैं, इस स्थिति को लेते हुए कि कोई उन्हें एक कारण के लिए, एक पूरी तरह से उचित तर्क देता है। काउंटर तर्क यह है कि सभी अक्सर यह बिल्कुल विपरीत है, किसी ने उन्हें वहां रखा क्योंकि उन्हें लगा कि यह करना सही है लेकिन समझ की कमी या परीक्षण की कमी के माध्यम से, यह नहीं था।

मैं सिस्टम के एक जोड़े को अप्रयुक्त और डुप्लिकेट अनुक्रमित छोड़ने के अलावा कुछ नहीं करके कगार से वापस लाया हूं। अनुक्रमण के कारण अराजकता हो सकती है।

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


इस पर +1 - मुझे यकीन है कि यह उन गतिविधियों का उल्लेख है जिन्हें मार्क ने उल्लेख किया है। कुछ भी नहीं है जो आपको चिंता करना चाहिए - नीचे एक अतिरिक्त उत्तर में उस पर विस्तार किया गया है।
माइक वॉल्श

इसके लिए धन्यवाद। मेरे पास इस बारे में sqlservercentral पर एक धागा भी था। मैं अपने मूल प्रश्न में उनके द्वारा कही गई बातों का लिंक पोस्ट करूंगा।
आशुिन

9

ग्लेन बेरी ने आपके लापता सूचकांक को खोजने में आपकी मदद करने के लिए कुछ बेहतरीन स्क्रिप्ट लिखी हैं। मैं उनकी लिपियों का उपयोग करने का सुझाव देता हूं जो आपके लिए कार्य से कुछ अनुमानित कार्य निकालते हैं। उन लिपियों को केवल अशक्त या 0 उपयोगकर्ता देखने / स्कैन / देखने की तलाश नहीं है, बल्कि उन अनुक्रमणिकाओं की भी तलाश है, जिनमें रीड एक्टिविटी और राइटिंग एक्टिविटी के बीच एक बड़ा तिरछा है, जिसके परिणामस्वरूप संभवतः ड्रॉप करके बेहतर समग्र प्रदर्शन हो सकता है। मैं उनकी स्क्रिप्ट की जाँच करूँगा - आप उनकी इस पोस्ट पर एक शुरुआत प्राप्त कर सकते हैं ।

मैं सिस्टम गतिविधि के बारे में चिंतित नहीं होता। यह कुछ ऐसा नहीं है जो खराब हो जाएगा यदि आप अनुक्रमित को हटाते हैं, तो वास्तव में यह गतिविधि हो सकती है जो केवल उस सूचकांक पर होती है क्योंकि यह मौजूद है। आपके द्वारा मुख्य बात यह है कि उपयोगकर्ता रीड एक्टिविटी है और उपयोगकर्ता गतिविधि लिखते हैं और उसे संतुलित करते हैं।


5

याद रखें कि अनुक्रम भी क्वेरी ऑप्टिमाइज़र को उपयोगी जानकारी प्रदान करते हैं, यहां तक ​​कि उनका उपयोग नहीं किया जाता है। मैंने उदाहरण के लिए यूनीकनेस के प्रभाव पर काफी कुछ किया है। यदि आप एक अद्वितीय इंडेक्स निकालते हैं क्योंकि इसमें कोई स्कैक्स या स्कैन नहीं है, तो भी आप प्रदर्शन पर प्रतिकूल प्रभाव डाल सकते हैं।


ग्रेट पॉइंट और मेरा मानना ​​है कि ग्लेन की स्क्रिप्ट अद्वितीय बाधाओं की तलाश करती है। यदि नहीं, तो शायद एक अलग सेट, मुझे उस पर शोध करना होगा।
माइक वाल्श

0

बाकी सभी ने जो बताया है, इसके अलावा संदर्भित एफके कॉलम के खिलाफ सूचकांक कभी भी सीक या स्कैन नहीं दिखा सकते हैं, लेकिन कवर के तहत उपयोग किए जाते हैं।

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