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

pgFincore 1.2, một phần mở rộng PostgreSQL

pgFincore 1.2 là một phần mở rộng của PostgreSQL để kiểm tra và thao tác với bộ đệm lưu trữ dữ liệu của hệ điều hành. Phần mở rộng đã có lịch sử 7 năm sử dụng, với những bước phát triển tương ứng với nhu cầu sản xuất.

Tải xuống tại đây phiên bản 1.2 mới nhất, tương thích với PostgreSQL 9.6.

Bộ nhớ đệm dữ liệu

Bộ nhớ đệm trang dữ liệu là một hoạt động diễn ra "tự nhiên", ở một số cấp độ trong quản lý dữ liệu. Đối tượng rất đơn giản:vô số lớp được xếp chồng lên nhau giữa dữ liệu được ghi vật lý trên đĩa và phần cung cấp lại cho người dùng. Hiện tại hầu hết mọi lớp dữ liệu đều có phần trừu tượng để phục vụ cho việc đọc và ghi lệnh nhanh hơn. Do đó, phần lớn ổ cứng cung cấp bộ nhớ đệm ghi, làm chậm quá trình ghi vật lý và bộ nhớ đệm đọc cho phép bạn dự đoán các yêu cầu trong tương lai và cung cấp dữ liệu nhanh hơn. Hệ thống tương đương tồn tại trong SAN, thẻ RAID, hệ điều hành, phần mềm, v.v.

Tất nhiên, PostgreSQL có hệ thống quản lý riêng để ghi và đọc, bộ đệm được chia sẻ , có thể được kiểm tra bằng phần mở rộng pg_buffercache.

Có thể kiểm tra bộ nhớ cache của hệ điều hành bằng các công cụ hệ thống và pgFincore chuyển cái này vào PostgreSQL.

Đọc trước

Hầu hết các hệ điều hành tối ưu hóa đường dẫn dữ liệu bằng cách cung cấp cửa sổ đọc trước, điều này cho phép tải trước dữ liệu vào bộ nhớ cache và do đó cung cấp nó nhanh hơn cho các ứng dụng. PostgreSQL chứa một số tối ưu hóa để hỗ trợ hành vi này ở cấp hệ thống và cũng mang chức năng tương tự với tùy chọn effect_io_concurrency.

Một giải pháp để tạo thuận lợi cho những tối ưu hóa này là sử dụng lệnh gọi hệ thống POSIX_FADVISE. Một lần nữa pgFincore chuyển giải pháp này trong PostgreSQL.

pgFincore 1.2

Do đó, phần mở rộng này cho phép:

  • để có được thông tin chính xác về hoạt động của một bảng hoặc một chỉ mục (và một số tệp khác được PostgreSQL sử dụng) trong bộ nhớ cache của hệ thống hỗ trợ POSIX (linux, BSD,…),
  • để sử dụng bộ nhớ cache này:tạo một bản đồ của nó và khôi phục nó sau này hoặc trên một máy chủ khác,
  • để tối ưu hóa đường dẫn thông qua lệnh gọi posix_fadvise.

Tải pgFincore

Các gói Debian và Red Hat có sẵn trong các bản phân phối và cho mỗi phiên bản PostgreSQL trên các kho lưu trữ Apt PGDG và RPM PGDG.

Và các nguồn trên kho lưu trữ pgfincore git.

Cần trợ giúp?

Ngoài hỗ trợ cộng đồng, bạn có thể liên hệ với 2ndQuadrant.

Ví dụ về việc sử dụng

Thiết lập

$ sudo apt-get install postgresql-9.6-pgfincore
$ psql -c 'CREATE EXTENSION pgfincore;'

Thông tin hệ thống

# select * from pgsysconf_pretty();
 os_page_size | os_pages_free | os_total_pages 
--------------+---------------+----------------
 4096 bytes   | 314 MB        | 16 GB

Tối ưu hóa bước đi ngẫu nhiên (giảm cửa sổ đọc trước)

# select * from pgfadvise_random('pgbench_accounts_pkey');
          relpath | os_page_size | rel_os_pages | os_pages_free 
------------------+--------------+--------------+---------------
 base/16385/24980 | 4096         | 2            | 1853808

Tối ưu hóa truyền tải tuần tự (tăng cửa sổ đọc trước)

# select * from pgfadvise_sequential('pgbench_accounts');
 relpath          | os_page_size | rel_os_pages | os_pages_free 
------------------+--------------+--------------+---------------
 base/16385/25676 | 4096         | 3176         | 1829288

Kiểm tra bộ nhớ cache

# select * from pgfincore('pgbench_accounts');
      relpath       | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit 
--------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
 base/11874/16447   |       0 |         4096 |       262144 |         3 |         1 |        408444 | 
 base/11874/16447.1 |       1 |         4096 |        65726 |         0 |         0 |        408444 | 

Tải bảng vào bộ nhớ

# select * from pgfadvise_willneed('pgbench_accounts');
      relpath       | os_page_size | rel_os_pages | os_pages_free 
--------------------+--------------+--------------+---------------
 base/11874/16447   |         4096 |       262144 |         80650
 base/11874/16447.1 |         4096 |        65726 |         80650

Xóa bộ nhớ cache của bảng

# select * from pgfadvise_dontneed('pgbench_accounts');
      relpath       | os_page_size | rel_os_pages | os_pages_free
--------------------+--------------+--------------+---------------
 base/11874/16447   |         4096 |       262144 |        342071
 base/11874/16447.1 |         4096 |        65726 |        408103

Khôi phục các trang đã lưu trong bộ nhớ cache

Ở đây chúng tôi sử dụng tham số kiểu chuỗi bit đại diện cho các trang để tải và tải xuống từ bộ nhớ.

# select * 
  from pgfadvise_loader('pgbench_accounts', 0, true, true, 
                       B'101001'); -- Varbit décrivant les pages à manipuler
     relpath      | os_page_size | os_pages_free | pages_loaded | pages_unloaded 
------------------+--------------+---------------+--------------+----------------
 base/11874/16447 |         4096 |        408376 |            3 |              3

LƯU Ý:đối với bản trình diễn, chỉ có 6 trang dữ liệu được xử lý ở trên, 1 trang tải trang, 0 trang tải xuống.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đối với người mới bắt đầu, có nhiều sự khác biệt giữa MySQL và PostgreSQL không

  2. Nhận các giá trị mặc định của các cột trong bảng trong Postgres?

  3. Cho phép rỗng trong cột duy nhất

  4. Cân bằng tải PostgreSQL trong đám mây trở nên dễ dàng

  5. Cấp tất cả trên một lược đồ cụ thể trong db cho một vai trò nhóm trong PostgreSQL