सॉफ्टवेयर इंजीनियर इंटरव्यू सवाल

डेटाबेस index कैसे काम करता है, और index जोड़ने से हालात कब बिगड़ जाते हैं?

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

छोटा जवाब

index एक अलग sorted स्ट्रक्चर होता है, आम तौर पर B tree, जो column की वैल्यू को row की जगह से जोड़ता है ताकि इंजन स्कैन करने के बजाय सीधे seek कर सके। इससे उन columns पर filter या sort करने वाली reads तेज होती हैं। इसकी कीमत writes पर चुकानी पड़ती है, क्योंकि हर insert, update और delete को उसे बनाए रखना पड़ता है, और स्टोरेज भी लगता है। कम selectivity वाले columns और ऐसे index जिन्हें कोई query छूती ही नहीं, आम तौर पर घाटे का सौदा हैं।

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

ज्यादातर इंजीनियरों के पास index सबसे ताकतवर टूल है और सबसे आसानी से बिना समझे कॉपी किया जाने वाला भी। इंटरव्यूअर देख रहा है कि आप इस सौदे का write वाला पहलू समझते हैं, जानते हैं कि selectivity ही तय करती है कि planner index इस्तेमाल करेगा भी या नहीं, और समझा सकते हैं कि हर column पर index लगाना कोई रणनीति नहीं है। इससे query planning की बात भी खुलती है।

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

  • index को row pointers वाले sorted lookup स्ट्रक्चर के तौर पर समझाइए।
  • read का फायदा seeks बनाम scans के हिसाब से बताइए।
  • write और स्टोरेज की लागत साफ साफ बताइए।
  • एक ऐसा मामला दीजिए जहां planner फिर भी index को नजरअंदाज कर देता है।

उदाहरण जवाब

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

index दरअसल एक या ज्यादा columns की sorted कॉपी है, जिसमें rows तक वापस जाने के pointers होते हैं, आम तौर पर B tree, ताकि इंजन हर page पढ़ने के बजाय binary search कर सके। इससे बड़ी table पर filter करना sequential scan से हटकर मुट्ठी भर page reads बन जाता है। कीमत यह है कि हर write को index भी अपडेट करना पड़ता है, तो आठ index वाली table insert पर आठ गुना चुकाती है, और bulk load एकदम धीमे पड़ जाते हैं। दूसरी चीज जो मैं देखता हूं वह है selectivity। अगर कोई column boolean है और नब्बे प्रतिशत rows में true है, तो planner आम तौर पर स्कैन ही करेगा, क्योंकि इतनी rows तक random access क्रम में पढ़ने से महंगा पड़ता है। मेरे सामने एक केस आया जहां किसी ने तीन वैल्यू वाले status column पर index लगाया और कुछ भी बेहतर नहीं हुआ। असल में जिस चीज ने ठीक किया वह था tenant id और created at पर composite index, जो filter और sort दोनों से मेल खाता था, तो डेटाबेस seek करके क्रम में पढ़ सका और अलग से sort करने की जरूरत ही नहीं पड़ी।

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

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

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

  • composite index में column का क्रम क्यों मायने रखता है?
  • covering index से आपको क्या मिलता है?
  • आप कैसे पता करेंगे कि planner आपका index इस्तेमाल कर रहा है या नहीं?

सॉफ्टवेयर इंजीनियर के और सवाल

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

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

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

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

GhostPilot पाएं