Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर के लिए I/O प्रदर्शन का विश्लेषण

सबसे आम प्रदर्शन बाधाओं में से एक जो मैं एक सलाहकार के रूप में देखता हूं वह अपर्याप्त भंडारण उपप्रणाली प्रदर्शन है। खराब भंडारण प्रदर्शन के कई कारण हैं, लेकिन इसे मापना और यह समझना कि क्या मापने और निगरानी करने की आवश्यकता है, हमेशा एक उपयोगी अभ्यास होता है।

वास्तव में तीन मुख्य मेट्रिक्स हैं जो I/O सबसिस्टम प्रदर्शन को मापने के लिए सबसे महत्वपूर्ण हैं:

विलंबता

पहली मीट्रिक विलंबता है, जो कि केवल एक I/O को पूरा करने में लगने वाला समय है। इसे अक्सर प्रतिक्रिया समय या सेवा समय कहा जाता है। माप तब शुरू होता है जब ऑपरेटिंग सिस्टम ड्राइव (या डिस्क नियंत्रक) को अनुरोध भेजता है और जब ड्राइव अनुरोध को संसाधित करता है तो समाप्त होता है। जब ऑपरेटिंग सिस्टम डेटा प्राप्त करता है, तो रीड पूरा हो जाता है, जबकि ड्राइव पूरा हो जाता है जब ड्राइव ऑपरेटिंग सिस्टम को सूचित करता है कि उसे डेटा प्राप्त हुआ है।

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

इनपुट/आउटपुट ऑपरेशंस प्रति सेकेंड (आईओपीएस)

दूसरा मीट्रिक इनपुट/आउटपुट ऑपरेशंस प्रति सेकेंड (आईओपीएस) है। यह मीट्रिक सीधे विलंबता से संबंधित है। उदाहरण के लिए, 1ms की निरंतर विलंबता का अर्थ है कि एक ड्राइव 1,000 IOs प्रति सेकंड को 1 की कतार गहराई के साथ संसाधित कर सकता है। जैसे-जैसे कतार में अधिक IO जोड़े जाएंगे, विलंबता बढ़ जाएगी। फ्लैश स्टोरेज के प्रमुख लाभों में से एक यह है कि यह समानांतर में कई NAND चैनलों को पढ़ / लिख सकता है, साथ ही इस तथ्य के साथ कि डिस्क एक्सेस को धीमा करने के लिए कोई इलेक्ट्रो-मैकेनिकल मूविंग पार्ट्स नहीं हैं। IOPS वास्तव में विलंबता से विभाजित कतार की गहराई के बराबर है, और IOPS अपने आप में एक व्यक्तिगत डिस्क स्थानांतरण के लिए स्थानांतरण आकार पर विचार नहीं करता है। जब तक आप कतार की गहराई और स्थानांतरण आकार को जानते हैं, तब तक आप IOPS को MB/सेकंड और MB/सेकंड में विलंबता में अनुवाद कर सकते हैं।

अनुक्रमिक थ्रूपुट

अनुक्रमिक थ्रूपुट वह दर है जिससे आप डेटा स्थानांतरित कर सकते हैं, जिसे आमतौर पर मेगाबाइट प्रति सेकंड (एमबी/सेकंड) या गीगाबाइट प्रति सेकंड (जीबी/सेकंड) में मापा जाता है। एमबी/सेकंड में आपका अनुक्रमिक थ्रूपुट मीट्रिक, स्थानांतरण आकार के IOPS गुणा के बराबर है। उदाहरण के लिए, 556 एमबी/सेकंड 135,759 आईओपीएस गुणा 4096 बाइट्स ट्रांसफर साइज के बराबर है, जबकि 135,759 आईओपीएस गुणा 8192 बाइट्स ट्रांसफर साइज 1112 एमबी/सेकेंड अनुक्रमिक थ्रूपुट होगा। SQL सर्वर के लिए इसके रोजमर्रा के महत्व के बावजूद, अनुक्रमिक डिस्क थ्रूपुट अक्सर एंटरप्राइज़ स्टोरेज में स्टोरेज वेंडर्स और स्टोरेज एडमिनिस्ट्रेटर दोनों द्वारा कम-बदल जाता है। डायरेक्ट अटैच्ड स्टोरेज (DAS) एनक्लोजर या स्टोरेज एरिया नेटवर्क (SAN) डिवाइस में वास्तविक चुंबकीय डिस्क को इतना व्यस्त देखना भी वास्तव में काफी सामान्य है कि वे अपने पूर्ण रेटेड अनुक्रमिक थ्रूपुट को वितरित नहीं कर सकते।

अनुक्रमिक थ्रूपुट कई सामान्य डेटाबेस सर्वर गतिविधियों के लिए महत्वपूर्ण है, जिसमें पूर्ण डेटाबेस बैकअप और पुनर्स्थापना, अनुक्रमणिका निर्माण और पुनर्निर्माण, और बड़े डेटा वेयरहाउस-प्रकार अनुक्रमिक रीड स्कैन (जब आपका डेटा SQL सर्वर बफर पूल में फिट नहीं होता है) शामिल है। एक प्रदर्शन लक्ष्य जिसे मैं नए डेटाबेस सर्वर बिल्ड पर शूट करना पसंद करता हूं, वह है प्रत्येक एकल ड्राइव अक्षर या माउंट पॉइंट के लिए अनुक्रमिक थ्रूपुट का कम से कम 1GB/सेकंड होना। इस स्तर का प्रदर्शन (या बेहतर) होने से डेटाबेस पेशेवर के रूप में आपका जीवन इतना आसान हो जाता है। यह आपके कई सामान्य डेटाबेस कार्यों को बहुत तेज़ कर देता है, और यह आपको अधिक बार-बार इंडेक्स ट्यूनिंग करने की स्वतंत्रता भी देता है जब आप घंटों के बजाय सेकंड या मिनटों में एक बड़ी टेबल पर एक इंडेक्स बना सकते हैं।

SQL सर्वर I/O वर्कलोड मेट्रिक्स

जब SQL सर्वर और I/O प्रदर्शन की बात आती है, तो कई चीजें हैं जिन्हें आपको समय के साथ मापना और मॉनिटर करना चाहिए। आपको अपने सभी उपयोगकर्ता डेटाबेस फ़ाइलों और tempdb के लिए अपने कार्यभार के लिए पढ़ने बनाम लिखने का अनुपात पता होना चाहिए। विभिन्न SQL सर्वर फ़ाइल प्रकारों और कार्यभार के लिए अनुपात भिन्न होंगे। आप इसे निर्धारित करने के लिए मेरी डीएमवी डायग्नोस्टिक क्वेरी का उपयोग कर सकते हैं, और आप SQL संतरी प्रदर्शन सलाहकार में डिस्क गतिविधि दृश्य का उपयोग भी कर सकते हैं ताकि आपकी डिस्क गतिविधि का एक उच्च-स्तरीय, समग्र चित्र, सभी तरह से आसानी से प्राप्त किया जा सके। अलग-अलग फाइलों के लिए:

SQL संतरी प्रदर्शन सलाहकार:डिस्क गतिविधि

आपको IOPS और अनुक्रमिक थ्रूपुट के लिए विशिष्ट I/O दरों को भी मापना चाहिए। विंडोज परफॉर्मेंस मॉनिटर (PerfMon) में, IOPS को पढ़ता/सेकंड और लिखता/सेकंड दिखाता है, जबकि डिस्क बाइट्स/सेकंड को पढ़ता है और डिस्क राइट बाइट्स/सेकंड अनुक्रमिक थ्रूपुट का प्रतिनिधित्व करता है। आपको औसत डिस्क सेकंड/रीड और औसत डिस्क सेकंड/राइट को मापने के लिए PerfMon का उपयोग करना चाहिए, जो डिस्क स्तर पर पढ़ने और लिखने की विलंबता है। अंत में, आप अपने सभी उपयोगकर्ता डेटाबेस फ़ाइलों के साथ-साथ tempdb के लिए औसत फ़ाइल-स्तर पढ़ने और लिखने की विलंबता को मापने के लिए मेरी DMV डायग्नोस्टिक क्वेरी का उपयोग कर सकते हैं।

I/O प्रदर्शन मापने के तरीके

आप अपनी सभी SQL सर्वर डेटाबेस फ़ाइलों के लिए कुछ प्रमुख डिस्क मेट्रिक्स का त्वरित, रीयल-टाइम दृश्य प्राप्त करने के लिए Windows संसाधन मॉनिटर में डिस्क अनुभाग का उपयोग कर सकते हैं। गहराई में जाकर, आप उन महत्वपूर्ण प्रदर्शन काउंटरों को मापने और निगरानी करने के लिए PerfMon का उपयोग कर सकते हैं जिनका मैंने पहले उल्लेख किया है। एक नए डेटाबेस सर्वर के साथ उत्पादन में जाने से पहले, आपको यह निर्धारित करने के लिए कुछ डिस्क बेंचमार्क परीक्षण करना चाहिए कि आपका I/O सबसिस्टम वास्तव में किस प्रकार का प्रदर्शन प्रदान कर सकता है। यह वास्तव में उतना कठिन या समय लेने वाला नहीं है (यदि आप सही उपकरण का उपयोग करते हैं), लेकिन यह अक्सर भूल जाता है जब एक नए डेटाबेस सर्वर का प्रावधान और परीक्षण किया जाता है।

पहला डिस्क बेंचमार्क जो आपको हमेशा चलाना चाहिए, वह है क्रिस्टलडिस्कमार्क 4.0, जिसे हाल ही में अपेक्षाकृत नए माइक्रोसॉफ्ट डिस्कएसपीडी डिस्क बेंचमार्क प्रोग्राम का उपयोग करने के लिए फिर से लिखा गया है। CDM 4.0 उपयोगकर्ता-इंटरफ़ेस आपको परीक्षण-फ़ाइल आकारों की एक विस्तृत श्रृंखला चुनने देता है और यह आपको परीक्षण चलाने के लिए कतार की गहराई और थ्रेड्स की संख्या चुनने देता है। यह आपको अधिक सर्वर-जैसे I/O कार्यभार प्राप्त करने देता है और यह आपको नए NVMe फ्लैश-स्टोरेज उपकरणों पर अधिक उचित रूप से दबाव डालने देता है जो 32 से अधिक कतार की गहराई को संभाल सकते हैं।

CrystalDiskMark 4.03 परिणाम QD =32 और थ्रेड्स के साथ =1

चित्र 2:क्रिस्टलडिस्कमार्क 4.03 QD =32 और थ्रेड्स के साथ परिणाम =4

CDM के पिछले संस्करणों के विपरीत, SQL सर्वर उपयोग के लिए दो सबसे प्रासंगिक पंक्तियाँ परिणाम प्रदर्शन के बीच में हैं। वे उच्च कतार गहराई (डिफ़ॉल्ट रूप से 32) के साथ 4K यादृच्छिक पढ़ते और लिखते हैं, और अनुक्रमिक पढ़ता और लिखता है। क्रिस्टलडिस्कमार्क 4.0 के साथ कुछ स्टोरेज बेंचमार्क परीक्षण करने के बाद, आपको माइक्रोसॉफ्ट डिस्कस्प्ड के साथ कुछ और विस्तृत परीक्षण करना चाहिए। भविष्य के लेख में, मैं SQL सर्वर के लिए अधिक पूर्ण परीक्षण करने के लिए DiskSpd का उपयोग करने का तरीका बताऊंगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. निकाय ढांचे का उपयोग करके संग्रहीत कार्यविधि निष्पादित करें

  2. SQL सर्वर में स्ट्रिंग्स को जोड़ने के लिए GROUP BY का उपयोग कैसे करें?

  3. SQL सर्वर - पंक्तियों को अल्पविराम से अलग की गई सूची में शामिल करें

  4. घातक त्रुटि:अपरिभाषित फ़ंक्शन पर कॉल करें sqlsrv_connect ()

  5. विकल्प के साथ अनंत लूप सीटीई (अधिकतम 0)