हम लगातार आने वाले डेटा (प्रति सेकंड 5-15 अपडेट) की उचित मात्रा को ट्रैक करने के लिए SQL Server 2005 का उपयोग कर रहे हैं। हमने देखा कि यह कुछ महीनों के लिए उत्पादन में रहा है कि तालिकाओं में से एक ने पूछताछ के लिए एक अश्लील समय लेना शुरू कर दिया है।बड़े डेटासेट पर SQL सर्वर में धीमी विशिष्ट क्वेरी
तालिका 3 स्तंभ होते हैं: - autonumber (क्लस्टर)
typeUUID
-
id
GUID उत्पन्न होने से पहले डालने होता है; प्रकार एक साथtypeName
समूह के लिए इस्तेमाल किया - प्रकार का नाम (ओह ...)
प्रश्नों हम चलाते हैं में से एक typeName
क्षेत्र पर एक अलग है:
SELECT DISTINCT [typeName] FROM [types] WITH (nolock);
typeName
क्षेत्र में एक गैर-क्लस्टेड, गैर-अद्वितीय आरोही अनुक्रमणिका है। इस समय तालिका में लगभग 200 एम रिकॉर्ड हैं। जब हम इस सवाल को चलाते हैं, तो प्रश्न वापस लौटने के लिए 5 एम 58 लेता है! शायद हम समझ नहीं रहे हैं कि इंडेक्स कैसे काम करते हैं ... लेकिन मुझे नहीं लगता कि हम उन्हें को गलत समझ चुके हैं जो अधिक है।
इस थोड़ा और आगे की जांच के लिए हम निम्न क्वेरी भाग गया: के बारे में 10 सेकंड में
SELECT DISTINCT [typeName] FROM (SELECT TOP 1000000 [typeName] FROM [types] WITH (nolock)) AS [subtbl]
इस क्वेरी, जैसा कि मैंने उम्मीद होती है, तो वह मेज स्कैनिंग है।
क्या हम यहां कुछ खो रहे हैं? पहली क्वेरी इतनी लंबी क्यों लेती है?
संपादित करें: आह, मेरी माफ़ी, पहली क्वेरी 76 रिकॉर्ड लौटाती है, धन्यवाद।
फ़ॉलो करें: आपके उत्तरों के लिए धन्यवाद, अब मुझे यह समझ में आता है (मुझे नहीं पता कि यह पहले क्यों नहीं था ...)। एक इंडेक्स के बिना, यह 200 एम पंक्तियों में एक टेबल स्कैन कर रहा है, एक इंडेक्स के साथ, यह 200 एम पंक्तियों में एक इंडेक्स स्कैन कर रहा है ...
एसक्यूएल सर्वर इंडेक्स पसंद करता है, और यह प्रदर्शन को थोड़ा बढ़ावा देता है , लेकिन इसके बारे में उत्साहित होने के लिए कुछ नहीं। इंडेक्स को पुनर्निर्माण करने से क्वेरीम समय 6 एम के बजाय 3 मीटर से अधिक हो गया, एक सुधार, लेकिन पर्याप्त नहीं। मैं बस अपने मालिक को सिफारिश करने जा रहा हूं कि हम टेबल संरचना को सामान्यीकृत करते हैं।
एक बार फिर, आपकी मदद के लिए सभी को धन्यवाद !!
आप आमतौर पर कितने विशिष्ट प्रकार की अपेक्षा करते हैं? – ninesided
ईमानदारी से, ऐसा लगता है जैसे आपका डिज़ाइन मौलिक रूप से त्रुटिपूर्ण है। एक "आने वाली" तालिका में 200 एम रिकॉर्ड? थोड़ी देर के आसपास होने के बाद आप उन्हें कहीं और नहीं फेंक सकते? अपने आवेदन को समझे बिना बेहतर सलाह देना मुश्किल है, लेकिन ऐसा लगता है कि आपको कुछ गंभीर रिफैक्टरिंग की आवश्यकता हो सकती है। – kquinn
हां, हमारे पास बहुत सारे डेटा हैं जिनके साथ हम काम कर रहे हैं, वर्तमान में यह 4 महीने का डेटा है। हमें डेटा को विभाजित करने की आवश्यकता होगी, लेकिन हमें अभी तक नहीं मिला है। – Miquella