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

Chế độ xem vật chất hóa PostgreSQL

Chế độ xem vật chất hóa cho phép bạn lưu trữ kết quả của các truy vấn phức tạp về mặt vật lý và cập nhật chúng theo định kỳ. Vì vậy, chúng rất hữu ích trong những trường hợp bạn cần truy cập dữ liệu nhanh chóng để báo cáo và kinh doanh thông minh. Đây là cách tạo chế độ xem cụ thể hóa trong PostgreSQL.


Chế độ xem PostgreSQL so với Chế độ xem vật chất hóa

Dạng xem vật chất hóa tương tự như dạng xem PostgreSQL cho phép bạn lưu trữ các truy vấn SQL để gọi chúng sau này. Tuy nhiên, dạng xem PostgreSQL cho phép bạn chỉ lưu trữ truy vấn SQL chứ không phải kết quả của nó. Dạng xem vật chất hóa cho phép bạn lưu trữ thực tế kết quả truy vấn và cập nhật chúng theo định kỳ. Do đó, các chế độ xem được vật thể hóa nhanh hơn các chế độ xem PostgreSQL.

Phần thưởng đã đọc:Cách nhận hàng cuối cùng trên mỗi nhóm trong PostgreSQL


Cách tạo dạng xem vật chất hóa trong PostgreSQL

Bạn có thể tạo chế độ xem cụ thể hóa trong PostgreSQL bằng cách sử dụng câu lệnh CREATE MATERIALIZED VIEW như được hiển thị bên dưới.

CREATE MATERIALIZED VIEW view_name
AS query 
WITH [NO] DATA;

Trong câu lệnh trên, bạn cần đề cập đến view_name cũng như truy vấn kết quả mà bạn muốn lưu trữ trong chế độ xem cụ thể hóa.

Cuối cùng, bạn cũng có thể chỉ định tùy chọn VỚI DỮ LIỆU nếu bạn muốn tải dữ liệu vào chế độ xem tại thời điểm tạo. Nếu bạn đề cập KHÔNG CÓ DỮ LIỆU, thì chế độ xem sẽ bị gắn cờ là không đọc được và bạn sẽ không thể truy vấn dữ liệu từ chế độ xem cho đến khi bạn tải dữ liệu vào đó.

Phần thưởng đã đọc:Hàm tạo PostgreSQL


Làm mới chế độ xem vật liệu hóa PostgreSQL

Bạn có thể tải dữ liệu vào chế độ xem cụ thể hóa bằng cách sử dụng câu lệnh REFRESH MATERIALIZED VIEW như được hiển thị

REFRESH MATERIALIZED VIEW view_name

Bạn cũng có thể sử dụng câu lệnh trên để làm mới chế độ xem cụ thể hóa.

Xin lưu ý, câu lệnh REFRESH MATERIALIZED VIEW khóa dữ liệu truy vấn để bạn không thể chạy các truy vấn đối với nó. Bạn có thể tránh nó bằng cách sử dụng tùy chọn CONCURRENTLY

REFRESH MATERIALIZED VIEW CONCURRENTLY view_name

Trong trường hợp này, PostgreSQL tạo một chế độ xem tạm thời, so sánh nó với chế độ xem ban đầu và thực hiện các thao tác chèn, cập nhật và xóa cần thiết. Do đó, tùy chọn CONCURRENTLY chỉ có sẵn cho các chế độ xem cụ thể hóa có một chỉ mục duy nhất.

Để tự động làm mới chế độ xem cụ thể hóa theo định kỳ, bạn có thể chạy LÀM MỚI CHẾ ĐỘ XEM VẬT LIỆU LÀM MỚI qua tập lệnh tự động.

Phần thưởng đã đọc:PostgreSQL Tạo giản đồ


Xóa các chế độ xem cụ thể hóa

Bạn có thể xóa các chế độ xem cụ thể hóa bằng cách sử dụng câu lệnh DROP MATERIALIZED VIEW.

DROP MATERIALIZED VIEW view_name


Các ví dụ về chế độ xem được vật chất hóa

Hãy để chúng tôi xem xét một số ví dụ về chế độ xem cụ thể hóa.

Đây là truy vấn để tạo chế độ xem cụ thể hóa được gọi là sample_view

postgres=# create materialized view sample_view
           as select * from sales
           with no data;

Trong truy vấn ở trên, chúng tôi đã đề cập đến tùy chọn KHÔNG CÓ DỮ LIỆU, do đó chế độ xem sẽ không có bất kỳ dữ liệu nào và sẽ xuất hiện lỗi khi chúng tôi cố gắng truy vấn nó.

postgres=# select * from sample_view;
ERROR: materialized view "sample_view" has not been populated
HINT: Use the REFRESH MATERIALIZED VIEW command.

Bây giờ, chúng tôi sẽ làm mới chế độ xem để tải dữ liệu vào đó và sau đó chạy truy vấn ở trên đối với chế độ xem của chúng tôi.

postgres=# refresh materialized view sample_view;
REFRESH MATERIALIZED VIEW

postgres=# select * from sample_view;
order_date | sale
------------+------
2020-04-01 | 210
2020-04-02 | 125
2020-04-03 | 150
2020-04-04 | 230
2020-04-05 | 200
2020-04-10 | 220
2020-04-06 | 250
2020-04-07 | 215
2020-04-08 | 300
2020-04-09 | 250

Như bạn có thể thấy ở trên, khi chúng tôi chạy lại truy vấn của mình, chúng tôi nhận được kết quả.

Hy vọng rằng bây giờ bạn có thể dễ dàng tạo chế độ xem cụ thể hóa cho cơ sở dữ liệu của mình.

Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo nhiều phiên bản Postgres trên cùng một máy

  2. PostgreSQL:Cấp tất cả các quyền cho người dùng trên cơ sở dữ liệu PostgreSQL

  3. Bắt đầu với Postgres 13 trên Ubuntu 20.04

  4. psycopg2 rò rỉ bộ nhớ sau khi truy vấn lớn

  5. Làm cách nào để xem mã TẠO CHẾ ĐỘ XEM cho một chế độ xem trong PostgreSQL?