EXPLAIN के साथ क्वेरी योजनाओं का विश्लेषण
EXPLAIN और EXPLAIN ANALYZE के उपयोग का गहन अध्ययन करें, ताकि समझ सकें कि PostgreSQL क्वेरी कैसे निष्पादित करता है और इंडेक्स का उपयोग कैसे करता है।
EXPLAIN के साथ क्वेरी योजनाओं का विश्लेषण, CoddyKit पर उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
क्वेरी योजना क्या है
जब आप PostgreSQL से डेटा माँगते हैं, तो वह उसे बस उठा नहीं लेता। पहले वह उस डेटा तक पहुँचने का सबसे अच्छा तरीका तय करता है। इसी ‘सबसे अच्छे तरीके’ को क्वेरी योजना कहते हैं।
डेटाबेस के प्रदर्शन को बेहतर बनाने के लिए क्वेरी योजनाओं को समझना बहुत महत्वपूर्ण है। इससे आपको पता चलता है कि PostgreSQL आपकी क्वेरी कैसे चलाता है और, इससे भी महत्वपूर्ण, कुछ क्वेरी धीमी क्यों हैं।
EXPLAIN से परिचय
PostgreSQL किसी भी SQL कथन की निष्पादन योजना दिखाने के लिए EXPLAIN कमांड देता है। यह पर्दे के पीछे झाँककर डेटाबेस की रणनीति देखने जैसा है।
EXPLAIN आपकी क्वेरी को वास्तव में नहीं चलाता। इसके बजाय, यह तालिका के आँकड़ों के आधार पर एक अनुमानित योजना बनाता है। इस योजना में चुनी गई पहुँच विधियों (डेटा पढ़ने के तरीकों) और जॉइन के क्रम जैसी जानकारी शामिल होती है।
EXPLAIN का मूल आउटपुट
आइए एक सरल क्वेरी के साथ EXPLAIN को काम करते हुए देखें। हम एक छोटी तालिका बनाएँगे और फिर उसकी योजना माँगेंगे।
Seq Scan पर ध्यान दें, जिसका अर्थ ‘क्रमिक स्कैन’ है और जो तालिका की हर पंक्ति पढ़ता है।
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100)
);
INSERT INTO products (name) VALUES
('Laptop'),
('Mouse'),
('Keyboard'),
('Monitor');
EXPLAIN SELECT * FROM products WHERE name = 'Mouse';लागत और पंक्तियों को समझना
EXPLAIN का आउटपुट जटिल लग सकता है, लेकिन दो प्रमुख मापदंड लागत और पंक्तियाँ हैं:
- लागत: क्वेरी के निष्पादन-खर्च का अनुमानित माप। इसमें दो संख्याएँ होती हैं:
{startup_cost}..{total_cost}। स्टार्टअप लागत पहली पंक्ति लौटाए जाने से पहले की लागत है; कुल लागत पूरे संचालन की लागत है। ये निरपेक्ष समय-इकाइयाँ नहीं, बल्कि सापेक्ष मान हैं। - पंक्तियाँ: योजना नोड द्वारा आउटपुट में दी जाने वाली पंक्तियों की अनुमानित संख्या।
आमतौर पर कम लागत बेहतर होती है, लेकिन सटीकता के लिए अनुमानित पंक्तियों पर भी ध्यान दें।
स्कैन के प्रकार: Seq बनाम इंडेक्स
क्वेरी योजना में सबसे पहले देखने वाली चीज़ों में से एक स्कैन का प्रकार है। इससे पता चलता है कि PostgreSQL डेटा तक कैसे पहुँचता है:
- क्रमिक स्कैन (Seq Scan): तालिका की हर पंक्ति को एक-एक करके पढ़ता है। छोटी तालिकाओं के लिए या तब यह प्रभावी होता है, जब आपको तालिका का अधिकांश डेटा चाहिए।
- इंडेक्स स्कैन: विशिष्ट पंक्तियों को तेज़ी से ढूँढने के लिए इंडेक्स का उपयोग करता है। बड़ी तालिका के छोटे हिस्से पर फ़िल्टर लगाने वाली क्वेरी के लिए यह आमतौर पर बहुत तेज़ होता है।
चयन आपकी क्वेरी और तालिका की संरचना पर निर्भर करता है।
EXPLAIN ANALYZE: वास्तविक परिणाम
जहाँ EXPLAIN अनुमान देता है, वहीं EXPLAIN ANALYZE वास्तव में क्वेरी चलाता है और वास्तविक आँकड़े एकत्र करता है। प्रदर्शन की अड़चनों को पहचानने के लिए यह बेहद शक्तिशाली है।
यह योजना में वास्तविक निष्पादन समय और पंक्तियों की संख्या जोड़ता है, जिससे आप अनुमानों की वास्तविकता से तुलना कर सकते हैं। बड़े अंतर अक्सर पुराने तालिका आँकड़ों या गलत चुनी गई योजना का संकेत देते हैं।
EXPLAIN ANALYZE का प्रयोग
आइए एक बड़ी तालिका बनाएँ और ऐसी क्वेरी पर EXPLAIN ANALYZE चलाएँ, जिसमें क्रमिक स्कैन होने की संभावना है। वास्तविक समय और पंक्तियों पर ध्यान दें।
हम 1000 उपयोगकर्ता बनाएँगे और एक विशेष आयु-सीमा के लिए क्वेरी करेंगे।
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(100) UNIQUE,
age INT
);
INSERT INTO users (email, age)
SELECT
'user' || i || '@example.com',
(i % 50) + 18 -- Ages from 18 to 67
FROM generate_series(1, 1000) s(i);
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 60;इंडेक्स के लाभ देखना
अब हमारी users तालिका के age कॉलम पर एक इंडेक्स बनाएँ। फिर वही EXPLAIN ANALYZE क्वेरी दोबारा चलाएँ।
आपको योजना में महत्वपूर्ण बदलाव दिखाई देना चाहिए—संभवतः Seq Scan से Index Scan में—और वास्तविक निष्पादन समय में कमी भी दिखेगी।
CREATE INDEX idx_users_age ON users (age);
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 60;जटिल योजनाएँ पढ़ना
कई संचालन होने पर क्वेरी योजनाएँ बहुत जटिल हो सकती हैं। उन्हें पढ़ने के लिए ये सुझाव उपयोगी हैं:
- नीचे से ऊपर पढ़ें: PostgreSQL आमतौर पर सबसे अंदर वाले (नीचे के) संचालन पहले करता है।
- इंडेंटेशन देखें: इंडेंटेशन अंतर्निहित संचालन दिखाता है। कोई अंदरूनी संचालन अपने मूल संचालन को इनपुट देता है।
- महँगे नोड पहचानें: अधिक
total_costयाactual timeवाले नोड खोजें। यही आपकी अड़चनें हैं। - अनुमानों और वास्तविक मानों की तुलना करें:
estimatedऔरactualके बीचrowsमें बड़े अंतर खराब आँकड़ों या भ्रामक योजना का संकेत दे सकते हैं।
इस योजना का विश्लेषण कीजिए
orders नाम की तालिका पर की गई क्वेरी के लिए नीचे दिए गए EXPLAIN आउटपुट पर विचार करें। यह हमें क्वेरी के निष्पादन के बारे में क्या बताता है?
Seq Scan on orders (cost=0.00..10.50 rows=5 width=100)
Filter: (amount > 100)पुनरावलोकन: अपनी क्वेरी की योजना बनाएँ
बधाई हो! आपने PostgreSQL की क्वेरी योजनाओं का गहराई से विश्लेषण किया है।
EXPLAINएक अनुमानित क्वेरी योजना दिखाता है।EXPLAIN ANALYZEक्वेरी चलाता है और वास्तविक निष्पादन आँकड़े दिखाता है।- डेटा तक पहुँच समझने के लिए स्कैन के प्रकार (Seq Scan, Index Scan) देखें।
- अड़चनें ढूँढने के लिए अनुमानित और वास्तविक लागत तथा पंक्तियों की तुलना करें।
- निष्पादन के प्रवाह को समझने के लिए योजनाएँ नीचे से ऊपर पढ़ें।
EXPLAIN में महारत PostgreSQL के प्रदर्शन को बेहतर बनाने की आधारशिला है। अभ्यास जारी रखें!
एआई शिक्षक के साथ उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 11
- पाठ
- 44
अक्सर पूछे जाने वाले प्रश्न
क्या “EXPLAIN के साथ क्वेरी योजनाओं का विश्लेषण” पाठ निःशुल्क है?
हाँ—“EXPLAIN के साथ क्वेरी योजनाओं का विश्लेषण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“EXPLAIN के साथ क्वेरी योजनाओं का विश्लेषण” में मैं क्या सीखूँगा?
EXPLAIN और EXPLAIN ANALYZE के उपयोग का गहन अध्ययन करें, ताकि समझ सकें कि PostgreSQL क्वेरी कैसे निष्पादित करता है और इंडेक्स का उपयोग कैसे करता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“EXPLAIN के साथ क्वेरी योजनाओं का विश्लेषण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- EXPLAIN के साथ क्वेरी योजनाओं का विश्लेषण
- इंडेक्स उपयोग की निगरानी
- इंडेक्स का पुनर्निर्माण और रखरखाव
- ANALYZE और आँकड़ों से इंडेक्स लागत का समायोजन