Tại sao không sử dụng bảng thay vì chế độ xem cụ thể?


53

Tôi mới sử dụng cơ sở dữ liệu của Oracle. Nếu tôi đã hiểu chính xác, chế độ xem cụ thể hóa là chế độ xem tập hợp kết quả được lưu dưới dạng bảng vật lý trong cơ sở dữ liệu và chế độ xem / bảng này được làm mới dựa trên một số tham số. Nếu chế độ xem được lưu dưới dạng bảng vật lý, tại sao không lưu trữ dữ liệu vào bảng ở vị trí đầu tiên? Vì vậy, lợi ích của việc sử dụng chế độ xem cụ thể thay vì bảng là gì?

Câu trả lời:


59

Một trong những lợi ích lớn nhất của việc sử dụng quan điểm cụ thể hóa là Oracle quan tâm đến việc giữ dữ liệu đồng bộ. Nếu bạn có một bảng tổng hợp riêng, bạn có trách nhiệm giữ cho dữ liệu được đồng bộ hóa. Điều đó thường đòi hỏi một lượng mã hợp lý và một lượng thử nghiệm kha khá và hầu hết các tổ chức quản lý để phạm sai lầm để lại các lỗ hổng khiến bảng tổng hợp không đồng bộ. Điều này đặc biệt đúng khi bạn cố gắng thực hiện làm mới tăng dần của bảng tổng hợp.

Một lợi ích lớn khác là, tùy thuộc vào cài đặt, Oracle có thể sử dụng viết lại truy vấn để sử dụng các khung nhìn cụ thể hóa khi người dùng đưa ra các truy vấn đối với các bảng cơ sở. Vì vậy, ví dụ: nếu bạn có một loạt các báo cáo hiện có dựa vào bảng chi tiết tạo ra kết quả tổng hợp hàng ngày, hàng tháng và hàng năm, bạn có thể tạo chế độ xem cụ thể trên bảng cơ sở tổng hợp dữ liệu ở cấp độ hàng ngày và trình tối ưu hóa có thể sử dụng chế độ xem cụ thể hóa cho tất cả các truy vấn hiện có của bạn. Điều này giúp dễ dàng tối ưu hóa khối lượng công việc báo cáo trong kho dữ liệu mà không cần cố gắng viết lại hàng tá báo cáo để sử dụng bảng tổng hợp mới của bạn hoặc gây rối DBMS_ADVANCED_REWRITEđể buộc viết lại các truy vấn của riêng bạn.


14

Các khung nhìn cụ thể được tự động cập nhật khi các bảng cơ sở của chúng được cập nhật.


1
Lưu ý rằng đó ON DEMANDlà hành vi làm mới mặc định. Quan điểm cụ thể hóa phải được tạo ra với ON COMMIT. và duy trì quan điểm cụ thể hóa là miễn phí. Nó có lẽ rẻ hơn một kích hoạt, mặc dù.
Durette

10

Một trường hợp tốt để sử dụng MV là đôi khi bạn muốn tổng hợp dữ liệu và nhận thông tin tóm tắt này từ các bảng lớn thường xuyên và nhanh chóng. Nếu không có các khung nhìn cụ thể hóa, bạn phải khử chuẩn hóa một số bảng của mình và duy trì các tập hợp thông qua mã hoặc quét liên tục các tập hợp lớn của các hàng. Cả hai cách không phải lúc nào cũng được chấp nhận đặc biệt với bảng điều khiển và các ứng dụng trực tuyến tương tự. Nếu bạn giữ kết quả trong một bảng riêng biệt, bạn sẽ làm phức tạp mã ứng dụng của mình và như @Justin Cave nói, bạn sẽ chịu trách nhiệm đảm bảo rằng dữ liệu được tổng hợp thủ công được đồng bộ hóa. với dữ liệu của bảng gốc.


4

Không phải là người của Oracle, nhưng trường hợp sử dụng khác sẽ là giải pháp của bên thứ ba. Họ thường không hỗ trợ bạn thực hiện các thay đổi đối với thiết kế của họ nhưng MV sẽ "vô hình" đối với mã của họ nhưng cung cấp quyền truy cập vào trích xuất báo cáo / dữ liệu tùy chỉnh.

Nó không miễn phí ở chỗ nó sẽ có chi phí lưu trữ và chi phí thời gian chèn / cập nhật có khả năng ảnh hưởng lớn nhưng có thể được bù đắp bằng thời gian lấy dữ liệu cụ thể so với "chế độ xem thẳng" hoặc tạo bảng thực tế và duy trì ETL xung quanh.

Cuối cùng, làm như vậy có thể làm mất hiệu lực hợp đồng hỗ trợ của bạn với nhà cung cấp, tham khảo ý kiến ​​của bạn-luật sư-blah-blah-blah


2

Thay vì đi trực tiếp đến các khung nhìn cụ thể hóa, hãy để tôi giải thích các lượt xem .

Về cơ bản các khung nhìn tồn tại một cách logic không giống như các bảng. Nếu chúng tôi muốn ẩn các cột nhất định cho người dùng, chúng tôi không thể sử dụng bảng. Tạo một cái nhìn chúng ta có thể đạt được sự bảo mật.

Ca sử dụng: nếu một khung nhìn có liên quan nội bộ với 10 bảng cùng với nhóm theo và các hàm có hàng triệu hàng, thì sẽ mất nhiều thời gian để thực thi.

Vì vậy, đây là các khung nhìn cụ thể hóa giúp chúng ta có được dữ liệu nhanh hơn. Quan điểm cụ thể hóa là tồn tại vật lý trong cơ sở dữ liệu. Bất cứ khi nào bảng cơ sở được cập nhật, khung nhìn Materialized sẽ được cập nhật.

Các khung nhìn cụ thể được cập nhật định kỳ dựa trên định nghĩa truy vấn, bảng không thể thực hiện điều này.


0

Một khung nhìn cụ thể hóa có thể được thiết lập để làm mới tự động trên cơ sở định kỳ. Một bảng có thể cần mã bổ sung để cắt / tải lại dữ liệu.

ví dụ: Chế độ xem cụ thể hóa có dữ liệu từ nhiều bảng có thể được thiết lập để tự động làm mới trong giờ cao điểm. Một bảng vật lý sẽ cần mã bổ sung để cắt / tải lại dữ liệu.

Bảo mật có thể được kiểm soát tốt hơn trong chế độ xem cụ thể hơn là bảng.


0

Một khung nhìn cụ thể hóa là một đối tượng cơ sở dữ liệu chứa kết quả của một truy vấn. Chúng là các bản sao dữ liệu cục bộ được đặt ở xa hoặc được sử dụng để tạo các bảng tóm tắt dựa trên các tập hợp dữ liệu của bảng. http://www.oraappdata.com/2016/04/m vật liệu-view.html


1
Xin lưu ý rằng câu hỏi không phải là về quan điểm cụ thể hóa là gì, mà là về lý do và cách sử dụng nó.
Twinkles
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.