सामग्री पर जाएँ
दस्तावेज़

परीक्षण मैनुअल — NoSqlStudio Profiler

नई Profiler स्क्रीन को खोलने, उपयोग करने और सत्यापित करने के लिए चरण-दर-चरण मार्गदर्शिका।

अनुमानित समय: ~30 मिनट
इस मैनुअल में

परिचय

नई Profiler स्क्रीन को खोलने, उपयोग करने और सत्यापित करने में आपकी सहायता के लिए चरण-दर-चरण मार्गदर्शिका। Step 1 से अंत तक क्रम में चलें। प्रत्येक स्टेप आपको बताता है कि क्या करना है और आप क्या देखेंगे। आपको पहले से profiling के बारे में कुछ भी जानने की आवश्यकता नहीं है — 💡 बॉक्स अवधारणाओं को ठीक उसी समय समझाते हैं जब वे सामने आती हैं।

इस मैनुअल को कैसे पढ़ें

प्रत्येक स्टेप में होता है:

  • करें — सटीक क्रिया (क्लिक करें, टाइप करें, अमुक स्क्रिप्ट चलाएँ)।
  • देखें — स्क्रीन पर क्या होना चाहिए। यह आपका “पास / फ़ेल” है।
  • क्यों — केवल तब जब यह समझने में सहायक हो (यदि आप जल्दी में हैं तो छोड़ सकते हैं)।

अवधारणा

अवधारणा बॉक्स। किसी शब्द को ठीक उसी समय समझाता है जब वह दिखाई देता है।

ध्यान दें

ध्यान दें। एक विवरण जो आमतौर पर भ्रमित करने वाला होता है।

शुरू करने से पहले

अवधारणा

Profiler क्या है

MongoDB अपने द्वारा चलाई गई हर चीज़ की एक “लॉगबुक” रख सकता है — हर क्वेरी, उसमें कितना समय लगा, क्या उसने इंडेक्स का उपयोग किया — system.profile नामक एक कलेक्शन में। Profiler स्क्रीन उस लॉगबुक को चालू करती है और उसे ग्राफ़िकल रूप से दिखाती है: चार्ट, फ़िल्टर, और यहाँ तक कि इंडेक्स अनुशंसाएँ भी।

आपको चाहिए:

  1. 1अंतिम बिल्ड के बाद dev सर्वर पुनः प्रारंभ (इसके बिना स्क्रीन लोड भी नहीं होगी — यही spacingPx त्रुटि का कारण है)।
  2. 2एक कनेक्टेड MongoDB कनेक्शन। यह local, on-prem, या Atlas M10+ हो सकता है। Atlas M0/M2/M5 (free) पर profiler को MongoDB द्वारा अवरुद्ध किया जाता है — यह काम करता है, लेकिन स्क्रीन चेतावनी देगी कि यह प्रतिबंधित है (हम Step 41 में इसका परीक्षण करते हैं)।
  3. 3डेटाबेस उपयोगकर्ता को प्रशासन कमांड (setProfilingLevel, createIndex) चलाने में सक्षम होना चाहिए। एक “database owner” उपयोगकर्ता यह काम कर देता है।

पूरे walkthrough के लिए अनुमानित समय: ~30 मिनट

चरण 1

लैब डेटाबेस तैयार करें

Profiler के पास दिखाने के लिए कुछ हो, इसके लिए हम पहले पर्याप्त डेटा वाला एक डेटाबेस बनाते हैं।

स्टेप 1

profiler_lab डेटाबेस बनाएँ

करें

NoSqlStudio में Mongo Shell टैब (या Scratchpad) खोलें, नीचे दी गई स्क्रिप्ट पेस्ट करें, और उसे चलाएँ।

js·35 linhas
use profiler_lab;
db.dropDatabase();
use profiler_lab;

['orders', 'products', 'customers'].forEach((c) => db.getCollection(c).drop());

function seed(coll, n, gen) {
  const c = db.getCollection(coll);
  let buf = [];
  for (let i = 0; i < n; i++) {
    buf.push(gen(i));
    if (buf.length === 165000) { c.insertMany(buf); buf = []; }
  }
  if (buf.length) c.insertMany(buf);
  print(coll + ': ' + c.countDocuments());
}

const ST = ['pending', 'paid', 'shipped', 'cancelled', 'refunded'];
const RG = ['north', 'south', 'east', 'west'];

seed('orders', 120000, (i) => ({
  orderNo: i, status: ST[i % 5], region: RG[i % 4],
  customerId: (i * 7) % 5000, total: Math.round(Math.random() * 1e5) / 100,
  items: 1 + (i % 8), createdAt: new Date(Date.now() - (i % 90) * 864e5),
  note: 'order line '.repeat(4),
}));
seed('products', 20000, (i) => ({
  sku: 'SKU-' + i, category: ['a', 'b', 'c', 'd', 'e'][i % 5],
  price: Math.round(Math.random() * 5e4) / 100, stock: i % 500,
  active: i % 3 !== 0,
}));
seed('customers', 5000, (i) => ({
  customerId: i, tier: ['free', 'pro', 'enterprise'][i % 3],
  city: RG[i % 4], spend: Math.round(Math.random() * 1e6) / 100,
}));
देखें

कुछ सेकंडों के बाद, शेल प्रिंट करता है:

कंसोल आउटपुट
orders: 120000
products: 20000
customers: 5000
क्यों

120 हज़ार orders यह सुनिश्चित करने के लिए पर्याप्त है कि एक इंडेक्स के बिना क्वेरी दिखाई देने योग्य रूप से धीमी हो — और धीमापन ही वह चीज़ है जिसका हम निदान करना चाहते हैं।

ध्यान दें

यदि बाद में क्वेरीज़ 100 ms से अधिक नहीं होती (तेज़ मशीन), तो यहाँ वापस आएँ और 120000 को 300000 में बदलें।

चरण 2

Profiler स्क्रीन खोलें

स्टेप 2

इसे पहली बार खोलें

करें

Profiler को इन 3 तरीकों में से किसी एक तरीके से खोलें (वे सभी एक ही स्थान पर ले जाते हैं — बाकी दो को बाद में Step 46 में परखें):

  • मुख्य मेनू → Database Profiler, या शॉर्टकट Ctrl+Alt+Shift+P
  • टूलबार → Monitoring → Database Profiler मेनू।
  • साइडबार में किसी कनेक्शन पर राइट-क्लिकProfiler
देखें

Profiler नाम का एक नया टैब खुलता है, उसके बगल में कनेक्शन का नाम होता है। ऊपर से नीचे, टैब में होते हैं: एक हेडर बार, एक कंट्रोल स्ट्रिप, और चार सेक्शन बटन (Dashboard, Live Feed, Index Advisor, Sessions)।

स्टेप 3

डेटाबेस चुनें

करें

हेडर में, Database फ़ील्ड में, `profiler_lab` चुनें।

देखें

स्क्रीन अब उस डेटाबेस पर काम करती है। चूँकि हमने अभी तक profiling चालू नहीं की है, Dashboard “No profiling data yet” जैसा संदेश दिखाता है।

ध्यान दें

profiler प्रति डेटाबेस होता है। इस मैनुअल में सब कुछ profiler_lab का उपयोग करता है। यदि आप कोई अन्य डेटाबेस चुनते हैं, तो आपको ट्रिगर दिखाई नहीं देंगे।

चरण 3

profiling चालू करें

स्टेप 4

कंट्रोल स्ट्रिप को समझें

देखें

हेडर के ठीक नीचे एक स्ट्रिप होती है जिसमें:

  • Profiling — तीन बटन: Off · Slow ops · All ops
  • slowms और Sample — दो संख्यात्मक फ़ील्ड + एक Apply बटन।
  • Filter — एक फ़िल्टर बिल्डर खोलता है।
  • ⏱ Capture — एक सुरक्षित समयबद्ध कैप्चर।
  • system.profile — कलेक्शन के लिए एक छोटा उपयोग बार + एक Resize बटन।
  • Health — एक स्कोर के साथ ग्रेड (A–F)।

अवधारणा

तीन स्तर। Off = कुछ भी रिकॉर्ड नहीं करता। Slow ops = केवल वही रिकॉर्ड करता है जो slowms सीमा से अधिक हो। All ops = सब कुछ रिकॉर्ड करता है। परीक्षण के लिए, हम सारा ट्रैफ़िक देखने के लिए All ops पर जाएँगे।

स्टेप 5

इसे “All ops” स्तर पर चालू करें

करें

All ops बटन पर क्लिक करें।

  • बाईं ओर का स्टेटस डॉट नीला हो जाता है।
  • एक चेतावनी पील “⚠ All ops” दिखाई देती है (एक अनुस्मारक कि स्तर 2 का प्रदर्शन पर लागत होता है)।
  • एक त्वरित संदेश “Profiling level set to 2” पुष्टि करता है।
क्यों

यह टूल का मूल है। पुराने profiler में, यह केवल आपके लिए एक कमांड कॉपी करता था जिसे आप शेल में पेस्ट करते। अब क्लिक वास्तव में profiling चालू कर देता है। यदि डॉट नीला हो गया, तो मुख्य तकनीकी रास्ता काम कर रहा है। ✅

चरण 4

ट्रैफ़िक उत्पन्न करें (“ट्रिगर्स”)

अब हम शेल में क्वेरीज़ चलाएँगे ताकि Profiler के पास दिखाने के लिए कुछ हो। Profiler टैब को खुला रखें — यह हर कुछ सेकंड में स्वयं रिफ़्रेश होता है।

स्टेप 6

ट्रिगर A — धीमी क्वेरीज़

करें

शेल में चलाएँ:

js·3 linhas
use profiler_lab;
db.orders.find({ status: 'shipped' }).toArray().length;
db.orders.find({ region: 'south' }).sort({ total: -1 }).toArray().length;
देखें

1–3 सेकंड के भीतर, Live Feed सेक्शन में, profiler_lab.orders पर दो नई query ऑपरेशन पंक्तियाँ, लाल COLLSCAN बैज के साथ।

अवधारणा

COLLSCAN बनाम IXSCAN। COLLSCAN = MongoDB ने डॉक्यूमेंट-दर-डॉक्यूमेंट पढ़ा क्योंकि कोई इंडेक्स नहीं था — धीमा। IXSCAN = इसने एक इंडेक्स (एक शॉर्टकट) का उपयोग किया — तेज़। लाल बैज = ख़राब; नीला बैज = अच्छा।

स्टेप 7

ट्रिगर B — अकुशल क्वेरी

करें

शेल में चलाएँ:

js·2 linhas
use profiler_lab;
db.orders.find({ status: 'refunded', region: 'north', items: 7 }).toArray();
देखें

फ़ीड में एक और पंक्ति। Examined → Returned कॉलम में संख्या लाल हो जाती है — केवल कुछ लौटाने के लिए इसने 120 हज़ार डॉक्यूमेंट्स की जाँच की।

अवधारणा

अकुशल। जब डेटाबेस “लौटाए जाने वाले” से कहीं अधिक की “जाँच” करता है, तो यह काम बर्बाद कर रहा है — एक इंडेक्स के लिए एक मज़बूत उम्मीदवार।

स्टेप 8

ट्रिगर C — राइट्स

करें

शेल में चलाएँ:

js·4 linhas
use profiler_lab;
db.orders.insertOne({ orderNo: 999001, status: 'paid', region: 'east', items: 2 });
db.orders.updateMany({ status: 'pending' }, { $set: { flagged: true } });
db.orders.deleteMany({ flagged: true, items: 3 });
देखें

तीन नई ऑपरेशन्स: insert, update, remove

स्टेप 9

ट्रिगर D, E, F — aggregation, count, और cursors

करें

शेल में चलाएँ:

js·9 linhas
use profiler_lab;
db.orders.aggregate([
  { $match: { status: 'paid' } },
  { $group: { _id: '$region', n: { $sum: 1 }, rev: { $sum: '$total' } } },
]).toArray();
db.orders.countDocuments({ region: 'west' });
db.orders.distinct('status');
let cur = db.orders.find({}).batchSize(500).limit(5000);
let k = 0; while (cur.hasNext()) { cur.next(); k++; } print(k);
देखें

command प्रकार की ऑपरेशन्स (aggregation, count) और कई getmore (cursor बैचों में पढ़ रहा है)।

स्टेप 10

ट्रिगर G — एक ही क्वेरी बार-बार

करें

शेल में चलाएँ:

js·2 linhas
use profiler_lab;
for (let i = 0; i < 40; i++) db.orders.find({ status: 'paid' }).limit(10).toArray();
देखें

अभी फ़ीड में कुछ ख़ास नहीं — लेकिन इसे ध्यान में रखें: Step 24 में यह “Query shapes” पैनल में एक एकल पंक्ति बन जाती है, जिसकी गिनती 40 होती है।

चरण 5

Live Feed का अन्वेषण करें

स्टेप 11

फ़ीड खोलें

करें

Live Feed सेक्शन पर क्लिक करें (ऊपर)।

देखें

ऑपरेशन्स वाली एक टेबल, सबसे हाल वाली ऊपर। कॉलम: समय, प्रकार, कलेक्शन, अवधि (रंग-कोडित — हरा तेज़, लाल धीमा), plan (COLLSCAN/IXSCAN बैज), examined→returned, और app। ऊपर, “X of Y operations”।

स्टेप 12

लाइव मोड को काम करते देखें

करें

ट्रिगर A (Step 6 वाला) फिर से चलाएँ और फ़ीड पर नज़र रखें:

js·3 linhas
use profiler_lab;
db.orders.find({ status: 'shipped' }).toArray().length;
db.orders.find({ region: 'south' }).sort({ total: -1 }).toArray().length;
देखें

सेकंडों के भीतर ऊपर अपने आप नई पंक्तियाँ दिखाई देती हैं।

स्टेप 13

रोकें और पुनः प्रारंभ करें

करें

हेडर में, ● Live बटन पर क्लिक करें (यह ⏸ Paused बन जाता है)। ट्रिगर A फिर से चलाएँ:

js·3 linhas
use profiler_lab;
db.orders.find({ status: 'shipped' }).toArray().length;
db.orders.find({ region: 'south' }).sort({ total: -1 }).toArray().length;
देखें

फ़ीड नहीं बढ़ती है — यह जमी हुई है। ● Live पर वापस जाने के लिए ⏸ Paused क्लिक करें: यह फिर से बढ़ने लगती है।

क्यों

किसी पंक्ति का निरीक्षण करने के लिए रोकना उपयोगी है, ताकि सूची इधर-उधर न कूदे।

स्टेप 14

क्विक फ़िल्टर (प्रीसेट चिप्स)

करें

एक-एक करके, फ़ीड के ऊपर के चिप्स पर क्लिक करें:

  • Slow > 100ms — केवल धीमी ऑपरेशन्स।
  • COLLSCANs — केवल वे जिनके पास इंडेक्स नहीं है (लाल बैज)।
  • Inefficient — Step 7 वाली को उजागर करता है।
  • Writes — केवल insert/update/remove (Step 8 वाली)।
  • Last 5 min — केवल हाल का ट्रैफ़िक।
देखें

टेबल केवल मेल खाने वाले को दिखाने के लिए सिकुड़ जाती है। सक्रिय चिप उजागर रहता है। इसे बंद करने के लिए फिर से क्लिक करें।

स्टेप 15

सूक्ष्म फ़िल्टर

करें

क्रम में, करें:

  1. 1type चिप्स (query, insert, getmore…) पर क्लिक करके उन्हें चालू/बंद करें।
  2. 2All collections ड्रॉपडाउन में, orders चुनें।
  3. 3search बॉक्स में, refunded टाइप करें।
देखें

प्रत्येक फ़िल्टर सूची को कम करता है। वे एक-दूसरे के साथ संयोजित होते हैं।

स्टेप 16

सब कुछ साफ़ करें

करें

Clear filters पर क्लिक करें (यह तब दिखाई देता है जब कोई सक्रिय फ़िल्टर हो)।

देखें

टेबल सब कुछ दिखाने पर वापस आ जाती है।

चरण 6

Dashboard का अन्वेषण करें

स्टेप 17

Dashboard खोलें

करें

Dashboard सेक्शन पर क्लिक करें।

देखें

ऊपर चार संख्या कार्ड (Operations, Slow ops, Collection scans, Average duration) और उनके नीचे कई चार्ट।

स्टेप 18

संकेतक (KPIs)

देखें

चार संख्याएँ आपके द्वारा ट्रिगर की गई हर चीज़ को दर्शाती हैं। “Collection scans” COLLSCANs का प्रतिशत दिखाता है — जितना अधिक, उतना बुरा।

स्टेप 19

टाइमलाइन

देखें

Operations over time चार्ट प्रकार (reads, inserts, updates, deletes, commands) के अनुसार स्टैक की गई बैंड दिखाता है, रंग-कोडित लीजेंड के साथ।

स्टेप 20

इंडेक्स उपयोग (डोनट)

देखें

Index usage डोनट चार्ट ऑपरेशन्स को COLLSCAN (लाल), IXSCAN (नीला), और अन्य में विभाजित करता है। अभी इस पर लाल का प्रभुत्व होना चाहिए।

स्टेप 21

लेटेंसी वितरण

देखें

समय श्रेणी (0–1ms, …, >5s) के अनुसार ऑपरेशन्स को समूहित करने वाली बार।

स्टेप 22

सबसे व्यस्त कलेक्शन्स (treemap)

देखें

प्रत्येक कलेक्शन पर बिताए गए कुल समय के अनुपात में ब्लॉक। orders सबसे बड़ा ब्लॉक होना चाहिए।

स्टेप 23

किसी treemap ब्लॉक पर क्लिक करें

करें

orders ब्लॉक पर क्लिक करें।

देखें

स्क्रीन Live Feed पर कूद जाती है, पहले से ही orders द्वारा फ़िल्टर्ड। (बाद में Dashboard पर वापस जाएँ।)

स्टेप 24

क्वेरी आकार

देखें

Query shapes टेबल समान “आकार” वाली क्वेरीज़ को समूहित करती है। आपने Step 10 में 40× दोहराई गई क्वेरी 40 की गिनती के साथ एक एकल पंक्ति के रूप में दिखती है और कुल समय का योग होता है।

क्यों

इसी तरह आप पता लगाते हैं कि “कौन-सी क्वेरी, उसके सभी रन को जोड़कर, डेटाबेस पर सबसे अधिक भार डालती है” — भले ही प्रत्येक व्यक्तिगत निष्पादन तेज़ हो।

स्टेप 25

सबसे धीमी ऑपरेशन्स

देखें

अंतिम टेबल 8 सबसे धीमी ऑपरेशन्स को सूचीबद्ध करती है। इसे अगले स्टेप के लिए ध्यान में रखें।

चरण 7

एक ऑपरेशन की जाँच करें (drill-down)

स्टेप 26

विवरण पैनल खोलें

करें

किसी भी पंक्ति पर क्लिक करें — Live Feed में, query shapes टेबल में, या सबसे धीमी में।

देखें

ऑपरेशन के पूरे विवरण के साथ दाईं ओर से एक पैनल स्लाइड होता है।

स्टेप 27

संख्याएँ पढ़ें

देखें

Duration, Plan, Yields, Docs examined, Keys examined, Returned के साथ एक ग्रिड। यदि ऑपरेशन अकुशल है, तो एक लाल चेतावनी कहती है कि यह “strong index candidate” है।

स्टेप 28

लाइव “explain” का अनुरोध करें

करें

Explain this query पर क्लिक करें।

देखें

टूल मौक़े पर explain() चलाता है और वास्तविक प्लान, निष्पादन समय, और कितने डॉक्यूमेंट्स की जाँच की गई दिखाता है — वर्तमान डेटाबेस पर निदान की पुष्टि के लिए उपयोगी।

अवधारणा

Explain. यह MongoDB बताता है कि वह क्वेरी को कैसे चलाने का इरादा रखता है। यह पुष्टि करता है कि वह इंडेक्स का उपयोग करेगा या नहीं।

स्टेप 29

कमांड और विवरण देखें

करें

पैनल में, Command सेक्शन (ऑपरेशन का JSON) देखें और copy आइकन पर क्लिक करें। फिर उन्हें विस्तारित/संकुचित करने के लिए Execution stats और Raw document पर क्लिक करें।

देखें

कमांड क्लिपबोर्ड पर कॉपी हो जाता है; सेक्शन खुलते और बंद होते हैं।

स्टेप 30

पैनल बंद करें

करें

इसे पैनल के शीर्ष पर X से बंद करें — और एक और खोलें और उसके बगल में धुंधले क्षेत्र पर क्लिक करके बंद करें।

देखें

पैनल दोनों तरीकों से ग़ायब हो जाता है।

चरण 8

Index Advisor का उपयोग करें (मुख्य आकर्षण)

स्टेप 31

अनुशंसाएँ उत्पन्न करें

करें

शेल में चलाएँ (3 समस्याग्रस्त क्वेरीज़, 30× दोहराई गई):

js·6 linhas
use profiler_lab;
for (let i = 0; i < 30; i++) {
  db.orders.find({ status: 'shipped' }).toArray();
  db.orders.find({ region: 'north' }).sort({ createdAt: -1 }).limit(20).toArray();
  db.products.find({ category: 'c', active: true }).toArray();
}
देखें

कुछ सेकंड प्रतीक्षा करें। (अगले स्टेप में जारी।)

स्टेप 32

Index Advisor खोलें

करें

Index Advisor सेक्शन पर क्लिक करें।

देखें

ऊपर, एक ग्रेड (A–F) के साथ एक Health कार्ड — संभवतः कम (C/D), क्योंकि आपने कई COLLSCANs उत्पन्न किए। उसके नीचे, index recommendations की एक सूची — लगभग 3 कार्ड।

स्टेप 33

एक अनुशंसा पढ़ें

देखें

प्रत्येक कार्ड में: एक गंभीरता पील (High/Medium/Low), कलेक्शन, क्वेरी “आकार”, सुझाए गए इंडेक्स के फ़ील्ड के साथ चिप्स (↑/↓ तीरों के साथ), और एक प्रभाव पंक्ति (“N operations · X s total · M scans”)।

अवधारणा

उन फ़ील्ड्स को उस क्रम में क्यों। advisor ESR नियम का पालन करता है: पहले equality फ़ील्ड, फिर sort फ़ील्ड, फिर range वाले। यह वह क्रम है जो इंडेक्स को सबसे कुशल बनाता है।

स्टेप 34

1 क्लिक से एक इंडेक्स बनाएँ

करें

एक कार्ड पर, Create index पर क्लिक करें। मोडल में कमांड की जाँच करें और पुष्टि करें।

देखें

एक “Index created” संदेश। उस अनुशंसा का कार्ड ✓ Already indexed में बदल जाता है।

स्टेप 35

बाक़ी बनाएँ

करें

अन्य अनुशंसाओं के लिए Step 34 दोहराएँ।

देखें

वे सभी ✓ Already indexed हो जाती हैं।

चरण 9

पुष्टि करें कि सुधार हुआ

स्टेप 36

वही क्वेरीज़ फिर से चलाएँ

करें

Step 31 की वही स्क्रिप्ट फिर से चलाएँ (यहाँ दोहराई गई है ताकि आपको वापस जाने की आवश्यकता न हो):

js·6 linhas
use profiler_lab;
for (let i = 0; i < 30; i++) {
  db.orders.find({ status: 'shipped' }).toArray();
  db.orders.find({ region: 'north' }).sort({ createdAt: -1 }).limit(20).toArray();
  db.products.find({ category: 'c', active: true }).toArray();
}
देखें

क्वेरीज़ फिर से चलती हैं — अब चरण 8 में आपके द्वारा बनाए गए इंडेक्स पहले से प्रभावी हैं।

स्टेप 37

COLLSCAN को IXSCAN में बदलते देखें

करें

Live Feed पर जाएँ।

देखें

वही क्वेरीज़ अब एक नीला IXSCAN बैज और बहुत कम अवधि दिखाती हैं। पहले वे 120 हज़ार डॉक्यूमेंट्स पढ़ती थीं; अब वे इंडेक्स का उपयोग करती हैं।

स्टेप 38

Health ग्रेड को ऊपर जाते देखें

करें

Index Advisor पर वापस जाएँ (या कंट्रोल स्ट्रिप में Health पील पर क्लिक करें)।

देखें

ग्रेड ऊपर चला गया (उदा., C/D से A/B) और कम अनुशंसाएँ हैं। आपने अभी एक पूरा चक्र पूरा किया: निदान → ठीक करें → सिद्ध करें। ✅

चरण 10

Sessions और रिपोर्ट

अवधारणा

Session. वर्तमान profiling स्थिति का एक “स्नैपशॉट”, एक नाम के साथ सहेजा गया। इसका उपयोग किसी परिवर्तन के “पहले” और “बाद” की तुलना करने के लिए किया जाता है।

स्टेप 39

एक सेशन सहेजें

करें

Sessions पर जाएँ, एक नाम टाइप करें (उदा., after the indexes), और Save session पर क्लिक करें।

देखें

सेशन सूची में अपने संकेतकों और दिनांक के साथ दिखाई देता है।

स्टेप 40

तुलना करें

करें

सूची में, दो प्रविष्टियाँ चुनें — उदाहरण के लिए सहेजा हुआ सेशन और Current window (जो हमेशा ऊपर होती है)।

देखें

रंग-कोडित Δ कॉलम के साथ एक Comparison टेबल दिखाई देती है — सुधार होने पर हरा (कम COLLSCANs, कम समय), बिगड़ने पर लाल।

स्टेप 41

रिपोर्ट निर्यात करें

करें

Export report पर क्लिक करें।

देखें

एक .json फ़ाइल डाउनलोड होती है जिसमें health, अनुशंसाएँ, query shapes, और सबसे धीमी ऑपरेशन्स होती हैं — एक ticket के साथ संलग्न करने या फ़ाइल में रखने के लिए।

चरण 11

नियंत्रण और सुरक्षा सुविधाएँ

स्टेप 42

सुरक्षित समयबद्ध कैप्चर

अवधारणा

यह क्यों मौजूद है। स्तर 2 को चालू रखना और भूल जाना उत्पादन में ख़तरनाक है। “capture” स्तर 2 को चालू करता है, एक काउंटडाउन चलाता है, और अंत में स्वयं बंद हो जाता है

करें

कंट्रोल स्ट्रिप में, ⏱ Capture पर क्लिक करें और 30s चुनें। उन 30 सेकंड के दौरान, कोई भी ट्रिगर चलाएँ — उदाहरण के लिए ट्रिगर A:

js·3 linhas
use profiler_lab;
db.orders.find({ status: 'shipped' }).toArray().length;
db.orders.find({ region: 'south' }).sort({ total: -1 }).toArray().length;
देखें

profiling स्तर 2 पर जाता है और काउंटडाउन के साथ एक पील दिखाई देती है। जब वह शून्य पर पहुँचता है, स्तर स्वयं वापस उस पर चला जाता है जो वह पहले था, “Capture complete” संदेश के साथ। (आप इसे जल्दी समाप्त करने के लिए Cancel भी क्लिक कर सकते हैं।)

स्टेप 43

Profiling फ़िल्टर

करें

Filter पर क्लिक करें, Namespace को orders से भरें, और Apply filter पर क्लिक करें। फिर ट्रिगर A चलाएँ:

js·3 linhas
use profiler_lab;
db.orders.find({ status: 'shipped' }).toArray().length;
db.orders.find({ region: 'south' }).sort({ total: -1 }).toArray().length;
करें

फिर Filter → Clear filter पर क्लिक करें।

देखें

फ़िल्टर सक्रिय होने पर, केवल orders पर ऑपरेशन्स रिकॉर्ड होती हैं (और बटन “Filter active” दिखाता है)। जब आप इसे साफ़ करते हैं, तो यह सब कुछ रिकॉर्ड करने पर वापस आ जाता है।

स्टेप 44

system.profile कलेक्शन प्रबंधित करें

अवधारणा

Capped collection. profiler की लॉगबुक का एक निश्चित आकार होता है; जब यह भर जाती है, तो यह सबसे पुरानी प्रविष्टियों को हटा देती है। डिफ़ॉल्ट (1 MB) जल्दी भर जाता है।

करें

कंट्रोल स्ट्रिप में system.profile बार देखें (यह used / total दिखाता है)। Resize पर क्लिक करें, 10 MB चुनें, और पुष्टि करें।

देखें

बार अब ~/10 MB दर्शाता है। मोडल चेतावनी देता है कि रीसाइज़ पर वर्तमान इतिहास मिट जाता है।

स्टेप 45

slowms और sampling दर समायोजित करें

करें

slowms को 50 में बदलें और Apply पर क्लिक करें। फिर Slow ops पर क्लिक करें और ट्रिगर A चलाएँ:

js·3 linhas
use profiler_lab;
db.orders.find({ status: 'shipped' }).toArray().length;
db.orders.find({ region: 'south' }).sort({ total: -1 }).toArray().length;
देखें

“Slow ops” स्तर पर, केवल परिभाषित slowms से धीमी ऑपरेशन्स फ़ीड में प्रवेश करती हैं — तेज़ ऑपरेशन्स को अनदेखा किया जाता है।

चरण 12

अंतिम स्पर्श

स्टेप 46

इसे खोलने के अन्य तरीक़े

करें

Step 2 के 3 प्रवेश बिंदुओं का परीक्षण करें जिनका आपने अभी तक उपयोग नहीं किया है।

देखें

वे सभी Profiler टैब खोलते हैं। यदि एक पहले से खुला है, तो यह उसे दोहराने के बजाय मौजूदा पर फ़ोकस करता है।

स्टेप 47

भाषाएँ

करें

Settings → Language में, भाषा बदलें (5 हैं)। Profiler पर वापस जाएँ।

देखें

पूरी Profiler स्क्रीन अनूदित दिखाई देती है — profiler.xyz जैसे कोई “कच्चे” टेक्स्ट नहीं।

स्टेप 48

थीम्स

करें

थीम को Light, Dark, और Neon के बीच बदलें।

देखें

रंग, कार्ड और चार्ट अनुकूलित होते हैं; कोई अदृश्य टेक्स्ट नहीं।

सफ़ाई (जब आप पूरा कर लें)

करें

शेल में चलाएँ:

js·3 linhas
use profiler_lab;
db.setProfilingLevel(0);
db.dropDatabase();
देखें

Profiling बंद हो जाती है और लैब डेटाबेस मिट जाता है।

आपने जो सत्यापित किया उसका सारांश

चरणसुविधा
2–3Profiler खोलें (3 प्रवेश बिंदु) + डेटाबेस चुनें
3वास्तव में profiling चालू करें (Off / Slow / All)
4–5Live Feed: वास्तविक समय, रोकें, प्रीसेट, फ़िल्टर, खोज
6Dashboard: KPIs, टाइमलाइन, डोनट, लेटेंसी, treemap, query shapes
7Drill-down: विवरण, लाइव explain(), कमांड, raw
8–9Index Advisor: अनुशंसाएँ, इंडेक्स बनाएँ, सुधार सिद्ध करें
10Sessions: सहेजें, तुलना करें, रिपोर्ट निर्यात करें
11समयबद्ध कैप्चर, फ़िल्टर, रीसाइज़, slowms
12वैकल्पिक प्रवेश बिंदु, 5 भाषाएँ, 3 थीम्स
यदि प्रत्येक स्टेप ने अपेक्षित “देखें” दिया, तो Profiler स्क्रीन 100% सत्यापित है। किसी भी विसंगति का स्टेप नंबर नोट कर लें ताकि हम उसे ठीक कर सकें।