टिप्पणियों की श्रृंखला से, ऐसा लगता है कि आप ASYNC_NETWORK_IO
प्रतीक्षा कर रहे हैं इसका मतलब है कि समस्या नेटवर्क से संबंधित है। यह (आम तौर पर) नहीं है।
जैसा कि @MartinSmith ने (दो बार) संकेत दिया है कि एसएसएमएस या जिस अनुप्रयोग का आप SQL सर्वर द्वारा सेवा कर रहे हैं, वे जितनी तेजी से परिणामों का उपभोग नहीं कर रहे हैं, उसके लिए सबसे अधिक संभावना है। अपने माप से पंक्तियों की खपत को हटाने के लिए सुझाए गए तरीकों में से किसी एक का पालन करें और आपको अधिकतम IPS थ्रूपुट की एक सच्ची (r) तस्वीर मिलेगी:
यदि आप पहले से ही नहीं हैं, तो आपको स्पष्ट रूप DBCC DROPCLEANBUFFERS
से यह सुनिश्चित करने की आवश्यकता होगी कि डेटा वास्तव में बफर कैश के बजाय डिस्क से पढ़ा जाए। "केवल परीक्षण पर, एक सक्रिय लाइव वातावरण में ऐसा न करें" इत्यादि के क्रमिक तरीके लागू होते हैं।
अपने अन्य टिप्पणियों के एक जोड़े पर सम्मान:
9 मिलियन पंक्तियों को लौटाने वाली क्वेरी निष्पादित करते समय CPU उपयोग, लगभग 13% रह जाएगा, जो कि sqlserver के कारण 9% है ... क्या यह 3 मिनट से अधिक तेज परिणाम नहीं देगा यदि सभी डेटा RAM में था?
हम वास्तव में यहाँ क्या परीक्षण कर रहे हैं, कैसे और क्यों? यदि आपकी 9 मिलियन पंक्ति की क्वेरी कुछ और है SELECT * FROM dbo.SomeTable
तो 1001 कारक हैं जो खेलने के लिए आते हैं, केवल कच्चे IO थ्रूपुट के अलावा।
आपका इंटेल I7-3820 एक 4-कोर प्रोसेसर है। यदि आपकी परीक्षण क्वेरी समानांतर योजना नहीं बनाती है, तो मुझे आश्चर्य होगा कि यदि आप सिस्टम से 20% से अधिक सीपीयू का उपयोग कर सकते हैं।
9 मिलियन पंक्तियों को वापस करने के लिए 3 मिनट बहुत संदिग्ध हैं और बताते हैं कि हमें आपके परीक्षण की पूरी तस्वीर नहीं मिल रही है। मेरा अनुमान है कि यह उप-इष्टतम (गैर-समानांतर) क्वेरी योजना का मामला है, जो नेस्टेड-लूप ऑपरेटरों से भरा हुआ है, जो लाखों पंक्तियों को खींच रहा है यानी SELECT
IO खपत को सत्यापित करने के लिए केवल एक तालिका नहीं है ।
मैं सुझाव देता हूँ:
SELECT *
SQL सर्वर के माध्यम से सिर्फ IO का परीक्षण करने के लिए ।
- अपनी क्वेरी के निष्पादन की योजना के साथ नया प्रश्न यदि आप खुदाई करना चाहते हैं कि यह IO को संतृप्त क्यों नहीं करता है।