Latensi Memori: Musuh Tersembunyi GROUP BY

Judul asli: It's the memory latency, stupid

Mengapa Ini Penting

Memahami latensi memori kunci optimasi query engine dan sistem analitik skala besar.

Pivotlake ungkap mengapa CPU 100% belum tentu bekerja penuh: latensi RAM 50–100ns bisa buat prosesor menganggur sambil menunggu data GROUP BY dari 99 juta baris.

Maor Kern dari Pivotlake menulis analisis mendalam tentang mengapa CPU yang tampak berjalan 100% sebenarnya bisa sebagian besar menganggur — bukan karena kurang tugas, melainkan karena menunggu memori. Faktanya keras: CPU modern mampu mengeksekusi 4–8 instruksi per nanodetik, sedangkan satu akses ke RAM memakan 50–100ns. Artinya, CPU bisa menyelesaikan 400–800 instruksi hanya dalam waktu yang dibutuhkan untuk satu baca memori.

Kern membuktikan ini langsung pada operasi GROUP BY menggunakan dataset ClickBench berisi 99 juta baris. Ia mengganti mesin Pivot yang dioptimalkan dengan implementasi naif berbasis HashMap — satu entri per UserID. Dengan sekitar 17 juta UserID unik, hampir setiap akses HashTable menjadi "cold hit" ke RAM, melewati seluruh hierarki cache (L1 ~64KB, L2 ~1MB, L3 beberapa ratus MB). Hasilnya: CPU terlihat sibuk, padahal sebagian besar waktu dihabiskan menunggu data dari RAM.

Solusinya bukan mengurangi pekerjaan CPU, melainkan justru menambah pekerjaan — dengan teknik seperti pre-partitioning data agar setiap kelompok muat di cache sebelum diproses. Pendekatan ini menukar sedikit komputasi tambahan demi menghilangkan bottleneck latensi memori yang jauh lebih mahal.

Sumber

pivotlake.io — Baca artikel asli →