GROUP BY धीमा क्यों? असली दोषी RAM latency

मूल शीर्षक: It's the memory latency, stupid

यह क्यों महत्वपूर्ण है

Database engine डिज़ाइन में memory latency की समझ query performance को कई गुना प्रभावित करती है।

Pivot के इंजीनियर Maor Kern ने बताया कि CPU 100% दिखने पर भी क्यों धीमा रहता है — कारण है RAM memory latency जो 50-100ns लेती है, जबकि CPU 4-8 निर्देश प्रति nanosecond चला सकता है।

जब किसी database का CPU 100% दिखे, तो यह जरूरी नहीं कि वह पूरी तरह सक्रिय हो। Pivot के blog post में Maor Kern ने समझाया कि CPU अक्सर RAM से data आने का इंतजार करता रहता है — यही असली बाधा है।

संख्याएँ साफ बोलती हैं: L1 cache ~1ns, L2 ~3-4ns, L3 ~10-15ns, और DRAM (RAM) ~50-100ns। यानी एक RAM access में CPU 400-800 निर्देश चला सकता था — पर चलाता नहीं, बस प्रतीक्षा करता है।

GROUP BY aggregations इसी समस्या का शिकार हैं। लाखों unique groups होने पर HashTable की हर access "cold hit" बन जाती है — सीधे RAM से। Cache का कोई फायदा नहीं। Kern ने Pivot engine को जानबूझकर सरल बनाकर ClickBench का "hits" dataset (99 मिलियन rows, ~17 मिलियन unique UserID) पर परीक्षण किया।

समाधान: data को छोटे "chunks" में रखना ताकि CPU cache का पूरा उपयोग हो। यही performance engineering का मूल सिद्धांत है — कम memory fetches, ज्यादा CPU काम।

स्रोत

pivotlake.io — मूल लेख पढ़ें →