Home / Data Engineer / Database / Bạn có biết rằng PostgreSQL sử dụng HAI lớp bộ nhớ đệm (cache) trong RAM ?

Bạn có biết rằng PostgreSQL sử dụng HAI lớp bộ nhớ đệm (cache) trong RAM ?

Bạn có biết rằng PostgreSQL sử dụng HAI lớp bộ nhớ đệm (cache) trong RAM ?

Mỗi khi PostgreSQL đọc một dòng dữ liệu (row), dữ liệu đó có thể đến từ một trong ba nguồn sau:

1) shared_buffers – bộ nhớ đệm do PostgreSQL quản lý

Đây là lớp cache gần PostgreSQL nhất.
• PostgreSQL tự quản lý vùng nhớ này.
• Nó lưu các trang dữ liệu (disk pages) vừa được truy cập.
• Khi dữ liệu đã nằm trong shared_buffers, việc đọc sẽ rất nhanh vì không cần truy cập hệ điều hành hay ổ đĩa.

Đây là lớp phục vụ nhanh nhất.

2) OS Page Cache – bộ nhớ đệm do hệ điều hành quản lý

Hệ điều hành sử dụng phần RAM chưa dùng đến để làm bộ nhớ đệm cho các trang dữ liệu đã đọc từ hệ thống tệp (filesystem).

Trong trường hợp:
• PostgreSQL không tìm thấy dữ liệu trong shared_buffers
• Nhưng trang dữ liệu đó đang nằm trong page cache của hệ điều hành

→ PostgreSQL vẫn đọc rất nhanh, chỉ cần sao chép dữ liệu từ OS page cache vào shared_buffers.

Việc này vẫn nhanh, vì chưa phải truy cập đĩa vật lý.

3) Filesystem / phần cứng (đĩa)

Nếu dữ liệu không tồn tại trong cả hai lớp cache:
• Hệ thống tệp sẽ gửi yêu cầu xuống ổ đĩa
• Ổ đĩa (SSD/HDD) sẽ đọc dữ liệu vật lý

Đây là tình huống chậm nhất do phải truy cập I/O vật lý. 

Nguồn: https://www.facebook.com/share/p/1HKpZUjnp3/

Leave a Reply

Your email address will not be published. Required fields are marked *