PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Bộ nhớ cache lượt truy cập được chia sẻ trong postgreSQL

shared hit về cơ bản có nghĩa là giá trị đã được lưu trong bộ nhớ chính của máy tính và không cần thiết phải đọc giá trị này từ đĩa cứng.

Truy cập bộ nhớ chính (RAM) là nhiều nhanh hơn so với việc đọc các giá trị từ đĩa cứng. Và đó là lý do tại sao truy vấn càng nhanh thì càng có nhiều lượt truy cập chia sẻ.

Ngay sau khi khởi động Postgres, không có dữ liệu nào có sẵn trong bộ nhớ chính (RAM) và mọi thứ cần được đọc từ đĩa cứng.

Hãy xem xét bước này từ một kế hoạch thực hiện:

  ->  Seq Scan on products.product_price  (cost=0.00..3210.27 rows=392273 width=0) (actual time=0.053..103.958 rows=392273 loops=1)
        Output: product_id, valid_from, valid_to, price
        Buffers: shared read=2818
        I/O Timings: read=48.382

Phần "Buffers:shared read =2818" có nghĩa là 2818 khối (mỗi 8k) phải được đọc từ đĩa cứng (và mất 48ms - tôi có ổ SSD). 2818 khối đó đã được lưu trữ trong bộ nhớ cache (" bộ đệm được chia sẻ ") để lần sau khi cần, cơ sở dữ liệu không cần đọc (lại) chúng từ đĩa cứng (chậm).

Khi tôi chạy lại câu lệnh đó, kế hoạch sẽ thay đổi thành:

  ->  Seq Scan on products.product_price  (cost=0.00..3210.27 rows=392273 width=0) (actual time=0.012..45.690 rows=392273 loops=1)
        Output: product_id, valid_from, valid_to, price
        Buffers: shared hit=2818

Có nghĩa là 2818 khối mà câu lệnh trước đó vẫn nằm trong bộ nhớ chính (=RAM) và Postgres không cần đọc chúng từ đĩa cứng.

"memory" luôn đề cập đến bộ nhớ chính (RAM) được tích hợp trong máy tính và có thể truy cập trực tiếp vào CPU - trái ngược với "bộ nhớ ngoài".

Có một số bản trình bày về cách Postgres quản lý bộ đệm được chia sẻ:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Năm điều thú vị tôi đã học được tại Hội nghị PostgreSQL Châu Âu 2018

  2. Kiểu dữ liệu nào cho vĩ độ và kinh độ?

  3. Docker - Postgres và pgAdmin 4:Kết nối bị từ chối

  4. heroku:quan hệ auth_group không tồn tại

  5. Perl - DBI và .pgpass