इंटरनेट के बारे में एक साथ महान और भयानक चीजों में से एक यह है कि, एक बार ईथर में कुछ पोस्ट हो जाने के बाद, यह मूल रूप से कभी नहीं जाता है। (किसी दिन, राजनेताओं को इसका एहसास होगा। हम आसानी से उनकी निरंतरता की जांच कर सकते हैं।) इंटरनेट पर पोस्ट की गई सामग्री की लंबी अवधि के कारण, बहुत सारे प्रदर्शन ट्यूनिंग विषय "ज़ोंबी" बन जाते हैं। हम उन्हें मार देते हैं, लेकिन वे वापस आते रहते हैं!
दूसरे शब्दों में, वे पुराने सुझाव थे SQL सर्वर के विशिष्ट संस्करण के लिए बहुत पहले सुझाया गया सर्वोत्तम अभ्यास, लेकिन अब नए संस्करण के लिए अनुपयुक्त हैं। मेरे लिए यह कोई असामान्य बात नहीं है, जब किसी कॉन्फ़्रेंस में बोलते हुए, किसी ऐसे व्यक्ति से मिलना जो अभी भी सेटिंग्स और तकनीकों से जुड़ा हुआ है, जो SQL Server 2000 के दिनों से अच्छा अभ्यास नहीं रहा है। क्षमता/संग्रहण पर SQL Server 2000 संचालन मार्गदर्शिका में कई " सर्वोत्तम अभ्यास" अनुशंसाएँ जो बहुत संस्करण-विशिष्ट थीं और अब आज लागू नहीं होती हैं।
तो यहाँ एक उदाहरण है। % Disk Time
और Disk Queue Length
I/O प्रदर्शन के लिए प्रमुख प्रदर्शन संकेतक के रूप में PerfMon काउंटरों की अत्यधिक अनुशंसा की गई थी। SQL सर्वर डिस्क-आधारित I/O सबसिस्टम के उपयोग को अधिकतम करने के लिए स्कैटर/इकट्ठा का उपयोग करके डिस्क पर बहुत सारे I/O फेंकता है। इस दृष्टिकोण से चौकियों के दौरान लंबी कतार की गहराई कम हो जाती है और SQL सर्वर की आवृत्ति के लिए रीड-फ़ॉरवर्ड होता है। कभी-कभी सर्वर कार्यभार ऐसा होता है कि आपकी डिस्क उस पर रखे गए I/O के साथ नहीं रह सकती है और जब ऐसा होता है, तो आपको लंबी कतार की लंबाई भी दिखाई देगी। शॉर्ट बर्स्ट परिदृश्य कोई समस्या नहीं है। लंबी कतार की लंबाई परिदृश्य आमतौर पर एक समस्या है। तो क्या यह एक अच्छा अभ्यास है?
एक शब्द में, इतना नहीं।
वे काउंटर अभी भी SQL सर्वर के एक उदाहरण पर कुछ काम के हो सकते हैं जिसमें केवल एक हार्ड डिस्क है (हालांकि वह अत्यधिक है इन दिनों दुर्लभ)। क्यों?
PerfMon काउंटर % Disk Time
कई कारणों से एक फर्जी प्रदर्शन मीट्रिक है। यह एसिंक्रोनस I/O अनुरोधों को ध्यान में नहीं रखता है। यह नहीं बता सकता कि अंतर्निहित RAID सेट के लिए वास्तविक प्रदर्शन प्रोफ़ाइल क्या हो सकती है, क्योंकि उनमें एकाधिक डिस्क ड्राइव होते हैं। PerfMon काउंटर Disk Queue Length
एकल भौतिक डिस्क के साथ SQL सर्वर को छोड़कर, ज्यादातर बेकार है, क्योंकि हार्ड डिस्क नियंत्रक कैश यह बताता है कि कतार में वास्तव में कितने I/O संचालन लंबित हैं या नहीं। वास्तव में, कुछ हार्ड डिस्क में छोटे राइट कैश भी होते हैं, जो आगे चलकर पानी को गड़बड़ कर देता है कि क्या I/O वास्तव में कतारबद्ध है, ऑपरेटिंग सिस्टम और डिस्क के बीच कहीं कैश में है, या अंत में इसे सभी तरह से बना दिया है डिस्क पर सीएमओएस पर।
बेहतर I/O PerfMon काउंटर्स
उन PerfMon काउंटरों का उपयोग करने के बजाय, Avg Disk Reads/sec
. का उपयोग करें , Avg Disk Writes/sec
, और Avg Disk Transfers/sec
डिस्क सबसिस्टम के प्रदर्शन को ट्रैक करने के लिए। ये काउंटर पढ़ने वाले I/Os की औसत संख्या को ट्रैक करते हैं, I/O लिखते हैं, और अंतिम सेकंड में हुए I/O को संयुक्त रूप से पढ़ते और लिखते हैं। कभी-कभी, मैं समान मीट्रिक को I/O संचालन की दर के बजाय डेटा की मात्रा के आधार पर ट्रैक करना पसंद करता हूं। इसलिए, वह डेटा प्राप्त करने के लिए, आप इन वॉल्यूम-विशिष्ट PerfMon काउंटरों को आज़माना चाहेंगे: Avg Disk Transfer Bytes/sec
, Avg Disk Read Bytes/sec
, और Avg Disk Write Bytes/sec
।
SQL सर्वर I/O प्रदर्शन के लिए, डायनेमिक मैनेजमेंट व्यू (DMV) का उपयोग करें
और जब तक आप एक गुफा में नहीं रह रहे हैं, आपको SQL सर्वर के हाल के संस्करणों के लिए I/O प्रदर्शन की जांच करने के लिए SQL सर्वर के डायनामिक मैनेजमेंट व्यू (DMV) का उपयोग करना सुनिश्चित करना चाहिए। I/O के लिए मेरे कुछ पसंदीदा DMV में शामिल हैं:
- sys.dm_os_wait_stats
- sys.dm_os_waiting_tasks
- sys.dm_os_performance_counters
- sys.dm_io_virtual_file_stats
- sys.dm_io_pending_io_requests
- sys.dm_db_index_operational_stats
- sys.dm_db_index_usage_stats
तो आप I/O प्रदर्शन मीट्रिक को कैसे ट्रैक कर रहे हैं? आप किसका उपयोग कर रहे हैं?
मैं आपसे वापस सुनने के लिए उत्सुक हूं!
आनंद लें,
-केव
–ट्विटर पर मेरा अनुसरण करें!