Chế độ xem cụ thể hóa trong oracle là gì
Một chế độ xem cụ thể hóa là một đối tượng cơ sở dữ liệu có chứa kết quả của một truy vấn. Nó khác với chế độ xem oracle đơn giản. Chế độ xem cụ thể hóa này có dữ liệu được lưu trữ và khi bạn truy vấn chế độ xem cụ thể hóa, nó sẽ trả về dữ liệu từ dữ liệu được lưu trữ. Mệnh đề FROM của truy vấn có thể đặt tên cho bảng, dạng xem và các dạng xem cụ thể hóa khác. Gọi chung các đối tượng này được gọi là bảng tổng thể (một thuật ngữ sao chép) hoặc bảng chi tiết (một thuật ngữ kho dữ liệu). Tham chiếu này sử dụng "bảng chính" để có tính nhất quán. Cơ sở dữ liệu chứa các bảng chính được gọi là cơ sở dữ liệu tổng thể.
Khi bạn tạo một dạng xem hiện thực hóa, Cơ sở dữ liệu Oracle sẽ tạo một bảng nội bộ và ít nhất một chỉ mục Oracle và có thể tạo một dạng xem, tất cả đều nằm trong lược đồ của dạng xem cụ thể hóa. Cơ sở dữ liệu Oracle sử dụng các đối tượng này để duy trì dữ liệu dạng xem cụ thể hóa. Bạn phải có các đặc quyền cần thiết để tạo các đối tượng này.
Các đặc quyền cần thiết để tạo chế độ xem cụ thể hóa
Người dùng phải có TẠO CHẾ ĐỘ XEM VẬT LIỆU để tạo chế độ xem cụ thể hóa
Cú pháp chung
CREATE MATERIALIZED VIEW BUILD [IMMEDIATE | DEFERRED] REFRESH [FAST | COMPLETE | FORCE ] ON [COMMIT | DEMAND ] [[ENABLE | DISABLE] QUERY REWRITE] [ON PREBUILT TABLE] AS ;
Giải thích từng thuật ngữ
BUILD [NGAY LẬP TỨC | DEFERRED] | Chúng tôi có thể chỉ định để điền ngay lập tức Hoặc chúng tôi có thể chỉ định DEFERRED để điền vào lần làm mới được yêu cầu đầu tiên. |
LÀM MỚI [NHANH CHÓNG | HOÀN THIỆN | LỰC LƯỢNG] | Có ba tùy chọn ở đây. Mỗi tùy chọn được giải thích bên dưới 1) NHANH CHÓNG:Đang thử làm mới nhanh. Nếu các bản ghi chế độ xem cụ thể hóa không có trước các bảng nguồn, thì việc tạo không thành công. 2) HOÀN THÀNH:Phân đoạn bảng hỗ trợ chế độ xem cụ thể hóa được cắt bớt và tạo lại hoàn toàn bằng cách sử dụng truy vấn được liên kết. 3) LỰC LƯỢNG:Cố gắng làm mới nhanh. Nếu không thể thực hiện được, quá trình làm mới hoàn toàn sẽ được thực hiện. |
BẬT [CAM KẾT | NHU CẦU] | Chúng tôi có thể chỉ định ON COMMIT để quá trình làm mới được kích hoạt bởi một thay đổi dữ liệu đã cam kết trong một trong các bảng phụ thuộc. Hoặc chúng tôi có thể chỉ định ON DEMAND để quá trình làm mới được thực hiện bởi một yêu cầu thủ công hoặc một tác vụ đã lên lịch. |
[[BẬT | ĐÃ TẮT] QUERY REWRITE] | Chế độ xem đủ điều kiện để ghi lại truy vấn |
CREATE MATERIALIZED VIEW mv_test
BUILD IMMEDIATE
REFRESH complete
ON demand AS
SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP,DEPT
where EMP.DEPTNO= DEPT.DEPTNO;
Làm mới chế độ xem cụ thể hóa
Chúng tôi có thể làm mới chế độ xem cụ thể hóa thông qua gói PLSQL DBMS_MVIEW
Gói DBMS_MVIEW chứa ba API để thực hiện các hoạt động làm mới:
DBMS_MVIEW.REFRESH
Làm mới một hoặc nhiều chế độ xem cụ thể hóa.
DBMS_MVIEW.REFRESH_ALL_MVIEWS
Làm mới tất cả các chế độ xem cụ thể hóa.
DBMS_MVIEW.REFRESH_DEPENDENT
Làm mới tất cả các dạng xem hiện thực hóa phụ thuộc vào một bảng chính được chỉ định hoặc dạng xem cụ thể hóa hoặc danh sách các bảng chính hoặc dạng xem cụ thể hóa.
EXECUTE DBMS_MVIEW.REFRESH('MV_TEST','C');
Here C stands for Complete refresh
Nếu bạn cố gắng làm mới nhanh, hãy sử dụng lệnh bên dưới
EXECUTE DBMS_MVIEW.REFRESH('MV_TEST','F');
Here F stands for fast Refresh
Nó sẽ xuất hiện lỗi, vì không có nhật ký chế độ xem cụ thể hóa. chúng tôi sẽ kiểm tra nhật ký xem cụ thể hóa bên dưới
Với Oracle 12c, Oracle đã giới thiệu API DBMS_SYNC_REFRESH mới để làm mới
Oracle Materialized View Log là gì
Khi các thay đổi DML được thực hiện đối với dữ liệu bảng chính, Cơ sở dữ liệu Oracle lưu trữ các hàng mô tả những thay đổi đó trong nhật ký chế độ xem cụ thể hóa và sau đó sử dụng nhật ký chế độ xem hiện thực hóa để làm mới các chế độ xem cụ thể hóa dựa trên bảng chính. Quá trình này được gọi là làm mới gia tăng hoặc nhanh chóng. Nếu không có nhật ký chế độ xem cụ thể hóa, Cơ sở dữ liệu Oracle phải thực thi lại truy vấn chế độ xem cụ thể hóa để làm mới chế độ xem cụ thể hóa. Quá trình này được gọi là làm mới hoàn toàn. Thông thường, làm mới nhanh mất ít thời gian hơn làm mới hoàn toàn.
Nhật ký dạng xem cụ thể hóa nằm trong cơ sở dữ liệu chính trong cùng một lược đồ với bảng chính. Một bảng chính chỉ có thể có một nhật ký dạng xem cụ thể hóa được xác định trên đó. Cơ sở dữ liệu Oracle có thể sử dụng nhật ký dạng xem cụ thể hóa này để thực hiện làm mới nhanh chóng cho tất cả các dạng xem cụ thể hóa có thể làm mới nhanh dựa trên bảng chính.
Để làm mới nhanh một chế độ xem kết hợp đã được hiện thực hóa, bạn phải tạo nhật ký chế độ xem cụ thể hóa cho từng bảng được tham chiếu bởi chế độ xem cụ thể hóa.
Làm mới nhóm
Nhóm làm mới là một tập hợp của một hoặc nhiều khung nhìn cụ thể hóa mà Oracle làm mới trong một giao dịch nguyên tử, đảm bảo rằng các mối quan hệ giữa các bảng chính được giữ nguyên
Ví dụ:
CREATE MATERIALIZED VIEW mv_test
TABLESPACE test_data
BUILD IMMEDIATE
REFRESH complete ON COMMIT AS
SELECT a.name,b.salary FROM [email protected]_LINK a, [email protected]_LINK b where a.emp_id=b.emp_id;CREATE MATERIALIZED VIEW mv_test
TABLESPACE test_data
BUILD IMMEDIATE
REFRESH force ON COMMIT AS
SELECT a.name,b.salary FROM [email protected]_LINK a, [email protected]_LINK b where a.emp_id=b.emp_id;CREATE MATERIALIZED VIEW LOG ON emp;exec DBMS_REFRESH.MAKE(name=>'test_grp', -
list=>'test_mv1,test_mv2','mv_test' -
next_date => sysdate, -
interval => 'null');exec DBMS_REFRESH.REFRESH('test_grp');
Cách kiểm tra trạng thái của chế độ xem Vật liệu hóa
SELECT MVIEW_NAME, STALENESS, LAST_REFRESH_TYPE, COMPILE_STATE
FROM USER_MVIEWS ORDER BY MVIEW_NAME;
Tùy chọn làm mới ngoài vị trí cho Chế độ xem cụ thể hóa
Với 12c Release 1, một tùy chọn làm mới mới có sẵn để cải thiện tính khả dụng và hiệu suất làm mới chế độ xem cụ thể hóa. Tùy chọn làm mới này được gọi là làm mới ngoài vị trí vì nó sử dụng các bảng bên ngoài trong quá trình làm mới thay vì làm mới "tại chỗ" hiện có áp dụng trực tiếp các thay đổi cho bảng vùng chứa chế độ xem cụ thể hóa. Tùy chọn làm mới không phù hợp hoạt động với tất cả các phương thức làm mới hiện có, chẳng hạn như FAST ('F'), COMPLETE ('C'), PCT ('P') và FORCE ('?').
Làm mới ngoài vị trí đặc biệt hiệu quả khi xử lý các tình huống có lượng lớn thay đổi dữ liệu, trong đó các câu lệnh DML thông thường không mở rộng quy mô tốt. Nó cũng cho phép bạn đạt được mức độ sẵn sàng rất cao vì các khung nhìn cụ thể hóa đang được làm mới có thể được sử dụng để truy cập trực tiếp và ghi lại truy vấn trong quá trình thực thi các câu lệnh làm mới.
Khi làm mới không đúng vị trí, toàn bộ hoặc các phần bị ảnh hưởng của chế độ xem được vật thể hóa được tính vào một hoặc nhiều bảng bên ngoài.
exec dbms_mview.refresh('MV_TEST', out_of_place=>true, atomic_refresh=>false) ;
Sự khác biệt giữa Chế độ xem Vật liệu hóa và Chế độ xem Oracle
Như đã giải thích ở trên Chế độ xem cụ thể hóa dựa trên đĩa và được cập nhật định kỳ dựa trên định nghĩa truy vấn.
Lượt xem chỉ là ảo và chạy định nghĩa truy vấn mỗi khi chúng được truy cập. Trong chế độ xem không có tập hợp kết quả nào được lưu trữ và nó truy cập vào bảng bên dưới mỗi khi chế độ xem được truy cập
Cũng đã đọc
Oracle tham gia
truy vấn con của Oracle
https://en.wikipedia.org/wiki/Materialized_view