बैकएंड डेवलपर इंटरव्यू सवाल

एक रिलीज़ के बाद कोई query धीमी हो गई। बताइए आप query plan कैसे पढ़ते हैं और क्या बदलना है यह कैसे तय करते हैं।

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

explain analyze चलाकर असली plan लें, जिसमें actual row counts और timings होती हैं, फिर सबसे ज़्यादा समय खाने वाला node देखें और estimated rows की actual rows से तुलना करें। बड़ा अंतर मतलब statistics खराब हैं, इसलिए planner ने गलत join या scan चुना। बड़ी टेबल्स पर sequential scans, किसी underestimate से चलने वाले nested loops, और disk पर spill होते sorts खोजें। हल index, अपडेटेड statistics, या ऐसा दोबारा लिखा हुआ predicate है जिसे index इस्तेमाल कर सके।

इंटरव्यूअर यह क्यों पूछते हैं

index तो कोई भी बैकएंड डेवलपर जोड़ सकता है; इंटरव्यूअर देख रहे हैं कि आप करने से पहले जांच करते हैं या नहीं। actual बनाम estimated rows पढ़ना, unsargable predicate पकड़ना, और यह जानना कि छोटी टेबल पर sequential scan ठीक ही है, ये सब असली डेटाबेस काम की निशानी हैं। इससे यह भी खुलता है कि आप पूरा workload देखते हैं या नहीं, क्योंकि कोई एक query अकेले शायद ही धीमी होती है।

अपना जवाब कैसे स्ट्रक्चर करें

  • सिर्फ explain नहीं, explain analyze से असली plan लें।
  • सबसे भारी node खोजें और estimated की actual rows से तुलना करें।
  • आम पैटर्न को उनकी वजहों से जोड़ें।
  • फिक्स की पुष्टि plan दोबारा नापकर करें, अंदाज़े से नहीं।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

मैं explain analyze और buffers से शुरू करता हूं ताकि असली timings और row counts मिलें, और आदर्श रूप से production जितने डेटा पर, क्योंकि छोटे dataset का plan मुझे कुछ नहीं बताता। फिर मैं वह node ढूंढता हूं जिसके पास सबसे ज़्यादा समय है और उसका estimate actual से मिलाता हूं। अगर उसने एक row का अंदाज़ा लगाया और पचास हज़ार मिलीं, तो planner ने nested loop चुना है जो अब आफत है, और असली वजह आमतौर पर पुरानी statistics या कोई correlated predicate होती है जिसे planner model नहीं कर पाता। उसके बाद मैं आम मुजरिम देखता हूं: बड़ी टेबल पर sequential scan, ऐसा filter जो index condition हो सकता था, disk पर spill होता sort, या column के चारों ओर लिपटा कोई function जिससे index बेकार हो जाता है। पिछली बार मेरा मामला यही आखिरी वाला था, email column पर एक lower call जो index को नज़रअंदाज़ कर रहा था; lower of email पर एक functional index ने इसे लगभग 900 मिलीसेकंड से घटाकर दो पर ला दिया। फिर मैं plan दोबारा चलाकर पक्का करता हूं कि उसका आकार बदला है, क्योंकि गर्म cache पर तेज़ चलना कुछ साबित नहीं करता।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • किसी predicate को index इस्तेमाल करने लायक न रहने देने की वजह क्या होती है?
  • statistics की समस्या और गायब index में फर्क आप कैसे पहचानते हैं?
  • sequential scan कब सही plan होता है?

बैकएंड डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं