Khi cơ sở dữ liệu báo CPU chạy 100%, nhiều kỹ sư mặc định rằng bộ vi xử lý đang làm việc hết công suất. Theo nhóm phát triển Pivot Lake, thực tế không phải vậy: hệ điều hành chỉ coi CPU là rảnh khi không còn tác vụ nào cần nó, còn việc CPU có thật sự bận tính toán hay không lại là chuyện khác.
Chờ RAM tốn kém hơn bạn nghĩ
Một CPU hiện đại xử lý khoảng 4 đến 8 lệnh mỗi nano giây, trong khi một lần truy cập RAM mất 50 đến 100ns. Nói đơn giản, CPU có thể làm 400 đến 800 lệnh trong lúc chờ một lần đọc RAM. Bộ nhớ đệm (cache) nằm ngay trong chip, với L1 cache chỉ mất khoảng 1ns, nhanh hơn RAM 50 đến 100 lần, nhưng dung lượng rất nhỏ, khoảng 64KB.
Bài học từ phép GROUP BY
Phép GROUP BY gom dữ liệu theo nhóm rồi tính tổng hoặc đếm. Cách làm đơn giản là dùng một bảng băm (HashTable) lớn dần theo số nhóm. Khi có hàng triệu nhóm khác nhau, gần như mọi lần tra cứu đều rơi vào RAM, khiến CPU nhìn bề ngoài rất bận nhưng thực chất phần lớn thời gian chỉ ngồi đợi dữ liệu.
Vì sao điều này quan trọng
Với người dùng, đây là lý do một số ứng dụng phân tích dữ liệu chạy chậm dù máy chủ trông đã quá tải. Hướng đi của Pivot Lake là chấp nhận làm thêm việc tính toán để tận dụng cache tốt hơn, một xu hướng đáng chú ý của ngành công nghệ và hạ tầng dữ liệu cho cả startup lẫn doanh nghiệp lớn.






