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

परीक्षण मैनुअल — Query Regressions

Query Regressions — स्थिर-fingerprint परफ़ॉर्मेंस-रिग्रेशन डिटेक्टर — को MongoDB, Cosmos DB और DocumentDB पर खोलने, उपयोग करने और सत्यापित करने के लिए एक चरण-दर-चरण गाइड।

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

परिचय

Query Regressions स्क्रीन को खोलने, उपयोग करने और सत्यापित करने में आपकी मदद के लिए एक चरण-दर-चरण गाइड — यह NoSqlStudio में अंतर्निहित परफ़ॉर्मेंस-रिग्रेशन और विसंगति (anomaly) डिटेक्टर है। Step 1 से अंत तक, क्रम में चलें। हर स्टेप आपको बताता है कि क्या करना है और आप क्या देखेंगे

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

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

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

Query Regressions क्या है

संकल्पना

एक स्थिर fingerprint, Oracle के sql_id जैसा

हर query shape को एक स्थिर fingerprint मिलता है जो रन-दर-रन कभी नहीं बदलता — ठीक वही विचार जो Oracle के sql_id का है। NoSqlStudio हर fingerprint के लिए एक रोलिंग baseline सीखता है और तब अलर्ट उठाता है जब वही query अधिक महँगी पड़ने लगती है: धीमा wall-clock, अधिक documents examined, अधिक RU, या एक ख़राब plan (उदाहरण के लिए IXSCAN → COLLSCAN)।

संकल्पना

एक स्क्रीन, तीन engines

यही स्क्रीन MongoDB, Azure Cosmos DB (Mongo API) और AWS DocumentDB पर काम करती है। कैप्चर instance-wide होता है — यह हर client और हर database से धीमी queries देखता है, न कि केवल उन्हें जो आप NoSqlStudio से चलाते हैं। यही वह चीज़ है जो मेंटेनेंस विंडो के दौरान किसी अघोषित बदलाव को पकड़ती है।

संकल्पना

रूट-कॉज़ विश्लेषण के पाँच स्तर

हर अलर्ट को परतों में समझाया जाता है: L1 before/after मेट्रिक्स · L2 plan diff · L3 investigators (indexes, collection stats, cardinality) · L4 ±5 मिनट की विंडो में सहसंबद्ध DDL/deploy घटनाएँ (“इसके धीमे होने से ठीक पहले क्या बदला”) · L5 एक AI विवरण।

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

आप पूरे UI को डेमो डेटा के साथ और बिना किसी database के एक्सप्लोर कर सकते हैं (Stages 1–3)। लाइव कैप्चर (Stages 4–6) के लिए एक कनेक्शन चाहिए, और डेटा स्रोत engine पर निर्भर करता है:

  1. 1MongoDB — server slow-query log को getLog:'global' के ज़रिए पढ़ता है। self-hosted replica sets और dedicated Atlas clusters पर काम करता है। Atlas shared tiers (M0/M2/M5) पर उपलब्ध नहीं, जो getLog को ब्लॉक करते हैं।
  2. 2Cosmos DBAzure Log Analytics से diagnostic logs पढ़ता है। इसके लिए Cloud Credentials (Cosmos Optimizer) में Log Analytics जुड़ा होना चाहिए।
  3. 3DocumentDBAmazon CloudWatch Logs से DocDB profiler स्ट्रीम पढ़ता है। इसके लिए cluster parameter group पर profiler सक्षम हो, CloudWatch में export हो, और Cloud Credentials में AWS credentials सेट हों।
  4. 4एक दूसरा टैब जहाँ आप shell कमांड चला सकें — Scratchpad या Mongo Shell — ताकि धीमी queries उत्पन्न की जा सकें।

पूरे वॉकथ्रू का अनुमानित समय: ~25 मिनट

Stage 1

स्क्रीन खोलें (किसी database की ज़रूरत नहीं)

स्क्रीन खोलें और अंतर्निहित डेमो लोड करें ताकि किसी लाइव स्रोत को जोड़ने से पहले आप लेआउट सीख सकें।

स्टेप 1

Query Regressions खोलें

करें

toolbar में, Monitoring ▼ → Query Regressions चुनें (कीबोर्ड शॉर्टकट Ctrl+Alt+Shift+Q)।

देखें

एक नया टैब खुलता है जिसमें बायीं ओर Query Regressions हेडर, एक master list, और दायीं ओर एक detail panel होता है।

स्टेप 2

डेमो डेटा लोड करें

करें

अगर list खाली है, तो empty state में Load demo data पर क्लिक करें।

देखें

एक SHOP समूह के अंतर्गत दो नमूना अलर्ट दिखाई देते हैं: एक Plan regression — shop.orders और एक Selectivity collapse — shop.events। हेडर पर एक लाल 2 CRITICAL बैज दिखता है।

क्यों

डेमो पूरी तरह मेमोरी में चलता है — कोई server नहीं, कोई permissions नहीं। यह सीखने का सबसे तेज़ तरीका है कि किसी card का हर सेक्शन क्या मायने रखता है।

स्टेप 3

एक अलर्ट चुनें

करें

list में Plan regression — shop.orders card पर क्लिक करें।

देखें

detail panel भर जाता है। हेडर एक CRIT बैज, शीर्षक, और उसके नीचे fingerprint (एक स्थिर hash), namespace, और occurrence count दिखाता है।

Stage 2

एक अलर्ट की संरचना

detail panel के हर सेक्शन को ऊपर से नीचे पढ़ें — यह हर engine के लिए वही लेआउट है।

स्टेप 4

WHAT CHANGED (Level 1)

देखें

एक टेबल जिसमें Signal · Baseline · Now · Δ हो। MongoDB/DocumentDB के लिए मेट्रिक p95 duration (ms) है; Cosmos के लिए यह RU है। एक दूसरी row docs examined / returned दिखाती है। जब वे regress हुए हों तो “Now” और “Δ” कॉलम हाइलाइट हो जाते हैं (उदाहरण के लिए 2.6 → 197 = 75.8×)।

क्यों

यही मुख्य बात है: वही query अब अपने ही सीखे गए baseline से कहीं अधिक महँगी पड़ रही है।

स्टेप 5

HOW IT CHANGED — plan diff (Level 2)

देखें

before/after plan, उदाहरण के लिए IXSCAN { userId:1, status:1 } COLLSCAN। कोई हटा दिया गया index या एक ख़राब plan-cache entry यहाँ तुरंत दिख जाती है।

स्टेप 6

WHY — रूट कॉज़ (Level 3)

देखें

investigators से बुलेट निष्कर्ष: collection पर कौन-से indexes मौजूद हैं, क्या plan बदला, क्या plan-cache key बदली। हर बुलेट हरे (ok) या एम्बर (संदिग्ध) रंग में होता है।

स्टेप 7

WHAT CHANGED NEARBY (Level 4)

देखें

detection के ±5 मिनट के भीतर DDL और deploy घटनाओं की एक timeline — उदाहरण के लिए 2m before · dropIndex · shop.orders · idx_user_status

क्यों

यही “इसके धीमे होने से ठीक पहले क्या बदला” का उत्तर है। COLLSCAN में plan पलटने से दो मिनट पहले हटा दिया गया एक index लगभग निश्चित रूप से रूट कॉज़ है।

स्टेप 8

QUERY SHAPE और AI Root Cause (Level 5)

देखें

canonical shape (op, filter fields, sort fields), फिर एक AI Analysis panel जिसमें एक model picker और एक Run analysis बटन हो।

करें

Run analysis पर क्लिक करें।

देखें

जब model काम करता है तो बटन चमकता है, फिर एक संक्षिप्त रूट-कॉज़ विवरण + remediation दिखता है, जो इस अलर्ट की fact sheet से लिखा जाता है।

स्टेप 9

विवरण modal खोलें

करें

detail panel के ऊपर-दायें कोने में ··· बटन पर क्लिक करें।

देखें

एक modal खुलता है जिसमें एक fixed header (severity + title + fingerprint) और एक scrolling body होता है: वास्तविक executed command, एक Explain plan बटन, और एक AI सेक्शन।

संकल्पना

Command वह वास्तविक command है जो slow-query स्रोत से कैप्चर हुई — कोई पुनर्निर्माण नहीं — इसलिए Explain असली query shape को चलाता है।

स्टेप 10

सुझाई गई remediation

देखें

सबसे नीचे: Clear plan cache (MongoDB plan-change अलर्ट्स के लिए सक्षम), Acknowledge, और Snooze 24h

करें

Acknowledge पर क्लिक करें, फिर Snooze 24h, और list में अलर्ट की स्थिति बदलते हुए देखें।

ध्यान दें

Clear plan cache लाइव server पर लिखता है। यह हमेशा पहले पुष्टि माँगता है — पुष्टि से पहले डायलॉग पढ़ें, विशेषकर production पर।

Stage 3

दायरा और अघोषित-बदलाव गार्ड

स्टेप 11

दायरा बदलें

करें

SCOPE बार में, एक database chip पर क्लिक करें (या All databases)।

देखें

list चयनित databases पर फ़िल्टर हो जाती है। All databases डिफ़ॉल्ट है और मेंटेनेंस विंडो के दौरान यही आप चाहते हैं।

क्यों

detection हमेशा instance-wide चलता है। दायरा केवल यह फ़िल्टर करता है कि आप क्या देखते हैं — यह engine को हर database देखने से कभी नहीं रोकता।

स्टेप 12

out-of-scope critical बैनर

देखें

अगर आप दायरा संकीर्ण करते हैं और आपके फ़िल्टर से बाहर किसी database में कोई critical regression चलता है, तो एक चेतावनी बैनर दिखता है: “N critical regression(s) in databases outside your filter”

क्यों

यह उस क्लासिक घटना के विरुद्ध गार्ड है: एक बदलाव कहता है कि वह database X को छूता है, पर एक छिपी स्क्रिप्ट किसी अघोषित database Y को बदल देती है। बैनर Y को तब भी सामने ले आता है जब आप उसकी ओर देख ही नहीं रहे थे।

Stage 4

MongoDB पर लाइव कैप्चर

अब एक असली स्रोत जोड़ें। MongoDB को किसी credential सेटअप की ज़रूरत नहीं — यह server slow-query log को सीधे पढ़ता है।

स्टेप 13

एक replica set या dedicated Atlas cluster कनेक्ट करें

करें

NoSqlStudio को किसी MongoDB replica set या एक dedicated Atlas cluster से कनेक्ट करें, फिर उस कनेक्शन पर Query Regressions खोलें।

देखें

हेडर लाइव स्थिति को live (हरा) दिखाता है।

ध्यान दें

Atlas shared tiers (M0/M2/M5) getLog admin command को ब्लॉक करते हैं, इसलिए लाइव स्थिति unavailable पढ़ेगी। किसी dedicated cluster या self-hosted replica set का उपयोग करें।

स्टेप 14

एक स्पष्ट रूप से ख़राब scan उत्पन्न करें

करें

एक shell टैब में, किसी ऐसे field पर धीमा collection scan चलाएँ जिस पर कोई index न हो — किसी unindexed field पर sort करना पूरी collection पर COLLSCAN को बाध्य करता है:

js·2 linhas
use <database>
db.<collection>.find({}).sort({ <unindexedField>: -1 }).limit(25).toArray()
देखें

query 100 ms से कहीं अधिक लेती है और पूरी collection को scan करती है।

स्टेप 15

New slow query card देखें

करें

Query Regressions टैब पर वापस जाएँ और कुछ सेकंड प्रतीक्षा करें (slow log हर ~5 s पर पोल होता है)।

देखें

एक WARN card जिसका शीर्षक New slow query — <namespace> हो (कोड Q7) दिखता है, जिसमें plan COLLSCAN और एक उच्च docs examined गिनती हो।

क्यों

कभी न देखी गई query जो पहले से ही एक बड़ा COLLSCAN है, उसे पहली नज़र में ही फ़्लैग कर दिया जाता है — किसी baseline की ज़रूरत नहीं। यह उन बदलावों के लिए गार्ड है जो मेंटेनेंस विंडो के दौरान आते हैं।

स्टेप 16

सिद्ध करें कि fingerprint स्थिर है (dedup)

करें

बिल्कुल वही query कई बार और चलाएँ।

देखें

कोई नया card नहीं दिखता। दोहराव उसी अलर्ट में समा जाते हैं — समान fingerprint = समान पहचान।

क्यों

यही स्थिर fingerprint का पूरा मकसद है: किसी query को दोबारा चलाने पर कभी डुप्लिकेट अलर्ट की बाढ़ नहीं आती। एक query = एक पहचान, sql_id जैसी।

स्टेप 17

सिद्ध करें कि एक अलग shape एक नया अलर्ट है

करें

एक अलग shape के साथ COLLSCAN चलाएँ — किसी अलग unindexed field पर sort करें:

js·2 linhas
use <database>
db.<collection>.find({}).sort({ <anotherUnindexedField>: -1 }).limit(25).toArray()
देखें

एक दूसरा, अलग card दिखता है जिसका fingerprint अलग हो। अलग shape = नई पहचान = नया अलर्ट।

Stage 5

Cosmos DB पर लाइव कैप्चर (RU मोड)

Cosmos में पोल करने के लिए कोई slow-query log नहीं है, इसलिए कैप्चर Azure Log Analytics से diagnostic logs पढ़ता है। मेट्रिक RU है, मिलीसेकंड नहीं।

स्टेप 18

Cloud Credentials में Log Analytics जोड़ें

करें

किसी Cosmos DB (Mongo API) कनेक्शन पर, Cosmos Optimizer (Ctrl+Alt+Shift+O) → Configuration → Cloud Credentials खोलें, और Azure सेक्शन भरें: Cosmos account Resource ID और Log Analytics workspace IDSave पर क्लिक करें।

देखें

एक हरी पुष्टि दिखती है (credentials saved … MetricsBridge promoted)।

ध्यान दें

Log Analytics एक सशुल्क tier है (ingestion + retention)। यही एकमात्र रास्ता है जो अन्य clients से queries देखता है — मुफ़्त header रास्ता केवल वही देखता है जो NoSqlStudio स्वयं चलाता है, जो अघोषित-बदलाव परिदृश्य के लिए पर्याप्त नहीं।

स्टेप 19

लाइव स्थिति की पुष्टि करें और एक महँगी query उत्पन्न करें

करें

Cosmos कनेक्शन पर Query Regressions खोलें; पुष्टि करें कि स्थिति live पढ़ती है। फिर एक cross-partition या unindexed query चलाएँ जो RU खर्च करे।

देखें

Log Analytics द्वारा row को ingest करने के बाद (मिनटों का विलंब), एक card दिखता है जिसमें मुख्य मेट्रिक के रूप में RU का before/after हो।

संकल्पना

Cosmos RU मोड पर Explain उपलब्ध नहीं है — modal यह कहता है और आपको इसके बजाय RU मेट्रिक और Index Policy pane की ओर इंगित करता है।

Stage 6

DocumentDB पर लाइव कैप्चर

DocumentDB getLog का समर्थन नहीं करता, इसलिए कैप्चर CloudWatch Logs से DocDB profiler स्ट्रीम पढ़ता है। इसके लिए profiler सक्षम और AWS credentials चाहिए।

स्टेप 20

DocDB profiler सक्षम करें

करें

AWS में, profiler = enabled और एक कम profiler_threshold_ms (उदाहरण के लिए 50) वाला एक कस्टम cluster parameter group बनाएँ, उसे लागू करें (एक reboot आवश्यक है), और cluster के Log exports to CloudWatch में profiler जोड़ें।

देखें

धीमे ops CloudWatch log group /aws/docdb/<cluster>/profiler में आने लगते हैं।

स्टेप 21

Cloud Credentials में AWS credentials सेट करें

करें

DocumentDB कनेक्शन पर, Cosmos Optimizer (Ctrl+Alt+Shift+O) → Configuration → Cloud Credentials खोलें, और AWS DocumentDB सेक्शन भरें: Region, DocDB cluster identifier, और वैकल्पिक रूप से एक AWS profile (मशीन की डिफ़ॉल्ट credential chain का उपयोग करने के लिए खाली छोड़ दें)। नीचे स्क्रॉल करें और Save credentials पर क्लिक करें।

देखें

सेक्शन एक हरा CONFIGURED बैज दिखाता है, और इस कनेक्शन के लिए aws-documentdb MetricsBridge पंजीकृत हो जाता है।

संकल्पना

यह pane AWS DocumentDB और Azure Cosmos के बीच साझा है और प्रति कनेक्शन है — DocumentDB कनेक्शन पर AWS सेक्शन भरें, किसी Cosmos कनेक्शन पर Azure सेक्शन। हर कनेक्शन अपना अलग region/cluster रखता है, इसलिए अलग-अलग regions में कई DocDB clusters स्वतंत्र रूप से संभाले जाते हैं।

स्टेप 22

स्क्रीन खोलें और एक धीमा scan उत्पन्न करें

करें

DocumentDB कनेक्शन पर Query Regressions खोलें (स्थिति live की पुष्टि करें), फिर एक shell टैब में एक धीमा COLLSCAN चलाएँ:

js·2 linhas
use <database>
db.<collection>.find({}).sort({ <unindexedField>: -1 }).limit(25).toArray()
देखें

~15 s के भीतर एक New slow query card दिखता है, जिसमें plan COLLSCAN और एक व्युत्पन्न docs examined गिनती हो।

ध्यान दें

DocumentDB docsExamined को सीधे नहीं उत्सर्जित करता, इसलिए मान profiler execStats scan stage से व्युत्पन्न किया जाता है — unfiltered scans के लिए सटीक, और जब कोई stage filter rows को बाहर करता है तो एक निचली सीमा। एक कुशल index-only count (IXONLYSCAN) को जानबूझकर फ़्लैग नहीं किया जाता, भले ही वह थोड़ा धीमा हो — केवल वे COLLSCANs फ़्लैग होते हैं जो कई docs examine करते हैं।

Stage 7

दृढ़ता (persistence) और व्यवहार

स्टेप 23

स्थिति किसी reopen के बाद बनी रहती है

करें

किसी अलर्ट को acknowledge या snooze करें, फिर Query Regressions टैब को बंद करके फिर से खोलें।

देखें

acknowledged/snoozed स्थिति और आपका दायरा चयन अब भी वहीं रहते हैं।

स्टेप 24

वही स्क्रीन, हर engine

देखें

स्क्रीन को बारी-बारी से एक MongoDB, एक Cosmos, और एक DocumentDB कनेक्शन पर खोलें। लेआउट, cards, पाँच RCA स्तर, और AI panel समान हैं — केवल मुख्य मेट्रिक (ms बनाम RU) और Explain की उपलब्धता भिन्न होती है।

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

करें

आपने जो भी अस्थायी परीक्षण collections बनाई थीं उन्हें drop करें:

js·2 linhas
use <database>
db.<collection>.drop()
करें

DocumentDB के लिए, अगर profiler केवल इस परीक्षण के लिए सक्षम किया गया था, तो आप इसे parameter group पर अक्षम कर सकते हैं और ingestion लागत रोकने के लिए CloudWatch log group को हटा सकते हैं। Cosmos के लिए, अगर आपको निरंतर कैप्चर की ज़रूरत नहीं है तो Log Analytics diagnostic settings को घटाएँ या अक्षम करें।

देखें

परीक्षण डेटा हट गया है और परीक्षण के लिए आपने जो भी सशुल्क cloud tiers सक्षम किए थे वे बंद कर दिए गए हैं।

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

चरणविशेषता
1Query Regressions खोलें और बिना किसी database के डेमो डेटा लोड करें
2एक अलर्ट पढ़ें: L1 मेट्रिक्स, L2 plan diff, L3 निष्कर्ष, L4 निकटवर्ती घटनाएँ, L5 AI, विवरण modal, remediation
3दायरा फ़िल्टर और out-of-scope critical बैनर (अघोषित-बदलाव गार्ड)
4लाइव MongoDB कैप्चर: New slow query, स्थिर-fingerprint dedup, नया shape = नया अलर्ट
5Log Analytics के ज़रिए लाइव Cosmos DB कैप्चर, मेट्रिक के रूप में RU के साथ
6CloudWatch profiler स्ट्रीम के ज़रिए लाइव DocumentDB कैप्चर
7स्थिति/दायरे की दृढ़ता और तीनों engines में एक सुसंगत स्क्रीन
अगर हर स्टेप ने अपेक्षित “देखें” दिया, तो Query Regressions MongoDB, Cosmos DB और DocumentDB पर 100% सत्यापित है। किसी भी विसंगति का स्टेप नंबर नोट कर लें ताकि हम उसे ठीक कर सकें।