Teknologi

Memahami Latensi Memori dan Kinerja CPU pada Basis Data

Daftar Isi
  1. Perbedaan Kecepatan CPU dan RAM
  2. Dampak Cache pada Kueri Agregasi
  3. Optimalisasi Menggunakan Partisi Radix

Ketika basis data menunjukkan penggunaan CPU mencapai seratus persen, sistem tersebut sebenarnya belum tentu bekerja sepenuhnya secara maksimal. Masalah utama dalam keterbatasan kinerja basis data sering kali terletak pada latensi memori yang jauh lebih lambat dibandingkan operasi internal pada prosesor.

Perbedaan Kecepatan CPU dan RAM

Akses memori jauh lebih lambat jika dibandingkan dengan operasi internal CPU. Prosesor modern mampu memproses sekitar empat hingga delapan instruksi per nanodetik, sementara akses memori ke RAM memerlukan waktu sekitar lima puluh hingga seratus nanodetik. Artinya, sebuah CPU dapat menjalankan sekitar empat ratus hingga delapan ratus instruksi untuk setiap satu kali akses memori dari RAM.

Untuk mengatasi kesenjangan kecepatan ini, CPU dilengkapi dengan singgahan atau cache yang terletak langsung di dalam cip prosesor. Cache tingkat pertama atau L1 memakan waktu sekitar satu nanodetik per operasi memori, yang berarti puluhan kali lebih cepat daripada RAM. Kendati demikian, kapasitas cache CPU tergolong kecil, mulai dari sekitar 64 kilobita untuk L1 hingga beberapa ratus megabita untuk cache yang lebih jauh pada prosesor kelas atas.

Dampak Cache pada Kueri Agregasi

Pemanfaatan cache menjadi salah satu perhatian utama dalam rekayasa kinerja basis data, terutama saat memproses agregasi GROUP BY. Metode naif biasanya menggunakan tabel hash yang terus membesar untuk setiap baris data unik. Jika terdapat jutaan grup unik, hampir setiap akses tabel hash akan berujung pada pengambilan data dari RAM yang membuat prosesor harus menunggu memori dingin.

Sebuah pengujian menggunakan mesin Pivot pada perangkat keras peladen dengan prosesor AMD EPYC 9124 Genoa dan RAM 128 gigabita DDR5 menunjukkan bahwa kueri sederhana pada sembilan puluh sembilan juta baris data memerlukan waktu sekitar 3,9 detik pada percobaan pertama dan 3,6 detik pada percobaan kedua. Pengukuran internal memperlihatkan bahwa CPU mengalami hambatan selama 50,1 persen karena menunggu memori, dan hanya 16,1 persen waktu yang dihabiskan untuk menjalankan operasi yang sebenarnya.

Optimalisasi Menggunakan Partisi Radix

Peningkatan algoritma dapat dilakukan menggunakan metode partisi radix untuk memanfaatkan cache CPU secara lebih optimal. Metode ini membagi proses penggabungan menjadi dua fase terpisah, yakni memisahkan kunci ke dalam ribuan partisi yang berbeda sebelum kemudian membentuk tabel hash dan melakukan agregasi pada setiap partisi.

Pendekatan tersebut membuat tabel hash kerja menjadi lebih kecil sehingga lebih mungkin untuk masuk ke dalam cache CPU. Pengujian dengan metode ini mencatatkan waktu eksekusi yang lebih cepat yaitu 3,3 detik pada percobaan pertama dan 2,7 detik pada percobaan kedua. Hasil pengukuran internal menunjukkan waktu tunggu memori menurun menjadi 23,5 persen, sementara pengerjaan operasi meningkat menjadi 32 persen.

Penggunaan partisi radix juga memangkas volume data yang ditarik dari DRAM secara drastis dari 4,5 gigabita pada versi naif menjadi 1,5 gigabita. Optimalisasi lebih lanjut seperti prapengambilan memori atau prefetching dan pemanfaatan pemrosesan paralel pada enam belas inti peladen dapat semakin meningkatkan kecepatan eksekusi kueri pada mesin Pivot.

Mungkin Anda Suka

Tinggalkan Komentar

Alamat email tidak akan dipublikasikan. Kolom wajib ditandai *