Ai đó có thể giải thích cho tôi khái niệm về PROJECTION trong cơ sở dữ liệu vertica bằng một truy vấn mẫu?PROJECTION trong cơ sở dữ liệu vertica
Trả lời
Từ Hướng dẫn khái niệm.pdf (khoảng trang 23) của Tài liệu Vertica.
Dự đoán lưu trữ dữ liệu ở định dạng tối ưu hóa thực thi truy vấn. Chúng tương tự với quan điểm vật chất ở chỗ chúng lưu trữ các tập kết quả trên đĩa thay vì tính chúng mỗi lần chúng được sử dụng trong truy vấn.
cũng
Dự là trong suốt đối của SQL cho người dùng cuối. Truy vấn Vertica trình tối ưu hóa tự động chọn các phép chiếu tốt nhất để sử dụng cho bất kỳ truy vấn nào.
Tất cả những gì cần làm cho một phép chiếu để cải thiện hiệu suất truy vấn là tạo phép chiếu. Vertica sẽ tự động chọn phép chiếu tốt nhất để sử dụng cho truy vấn đó. (Lưu ý: Có thể ép buộc một phép chiếu cụ thể bằng cách truy vấn riêng nó thay vì một bảng)
Tôi không biết sự hiểu biết của bạn về dự đoán ở đâu, nhưng câu hỏi cụ thể hơn về dự báo sẽ cho phép xây dựng chi tiết hơn điểm. Nếu bạn đang tìm cách xem khái niệm chung về khái niệm, tôi khuyên bạn nên tìm và đọc Hướng dẫn về khái niệm Concepts.pdf. http://my.vertica.com
Vertica không sử dụng chỉ mục để tìm dữ liệu.
Về mặt khái niệm, bạn vẫn truy cập bảng bằng SQL. Nhưng bên dưới mui xe, dữ liệu trong bảng được lưu trữ trong các phép chiếu mà bạn có thể tối ưu hóa cho các truy vấn khác nhau.
Tôi thích nghĩ về nó như một bảng biểu diễn một cỗ bài. Nếu chơi poker bạn vẫn có thể nói điều gì đó như "Chọn * từ giới hạn CardDeck 5;".
Hãy nói rằng bạn có một bảng định nghĩa với các cột sau:
FaceValue int (chúng ta hãy chỉ giả mệnh giá là ints), Suit varchar (10)
Sau đó tôi có thể tạo ra các dự báo của tôi (tôi 'bỏ qua các chi tiết về phân vùng, siêu chiếu, dự đoán bạn bè, v.v.).
tạo chiếu CardDeck_p1 ( FaceValue MÃ RLE, Suit ) như chọn FaceValue, Suit từ trật tự CardDeck bởi FaceValue;
tạo chiếu CardDeck_p2 ( FaceValue, Suit ) như chọn FaceValue, Suit từ trật tự CardDeck bởi Suit;
Bây giờ, mỗi cột có thể nhận được một loại mã hóa khác được xác định trong phép chiếu.Và nhà thiết kế cơ sở dữ liệu mà tôi chưa sử dụng nhiều kể từ khi tôi ở trên một phiên bản cũ hơn, có thể giúp thiết kế các dự báo cho bạn.
Vì vậy, hãy quay trở lại bộ bài tương tự thẻ, hãy tưởng tượng bạn muốn truy cập một cỗ bài nhưng bạn muốn có các thẻ bài khác nhau. Các dự báo trong Vertica cung cấp cho bạn các phím tắt khác nhau. Các bảng thực sự là một cấu trúc cho phép bạn truy cập dữ liệu được lưu trữ trong các phép chiếu. Nhưng nếu bạn đang viết SQL, bạn truy cập vào các bảng.
Cảm ơn rất nhiều, geoffrobinson! – Murali
Tôi muốn nhấn mạnh điểm được đưa ra trong câu trả lời của geoff - các dự báo là các cấu trúc vật lý trên đĩa. Việc xác định nhiều dự báo cho một bảng có thể cải thiện hiệu suất truy vấn, nhưng với chi phí tăng không gian trên đĩa và thời gian tải chậm hơn (vì các hàng của bạn phải được đặt vào mỗi phép chiếu).
Có siêu dự báo lưu trữ tất cả các cột trong bảng cũng như chiếu một phần. Bạn sẽ sử dụng phép chiếu từng phần khi truy vấn bạn đang tìm kiếm để hỗ trợ/tối ưu hóa chỉ cần một tập con các cột từ bảng. Mỗi bảng cần ít nhất một siêu chiếu. Nếu bạn không xác định, Vertica sẽ cung cấp một mặc định, có thể có hiệu suất rất kém.
Thực hành được khuyến nghị là phải có công cụ Trình thiết kế cơ sở dữ liệu giúp bạn phân tích bảng của mình bằng dữ liệu thử nghiệm và truy vấn kiểm tra, sau đó có thể đề xuất phép chiếu cho bạn. Cá nhân tôi đã không có kết quả tuyệt vời theo cách này, nhưng biết cách sử dụng công cụ DBD nên là một phần của chương trình giảng dạy cho bất kỳ khóa đào tạo nào trong Vertica.
Cảm ơn kimbo305 – Murali
Có một số lời giải thích tốt đẹp của dự Vertica tại vertica.com blog và khuyên làm thế nào để sử dụng nó:
Các liên kết đã bị hỏng .. Chỉ trang chính. –
Có vẻ như bạn đã quen với chế độ xem. Các dự báo giống như quan điểm trong khái niệm, cả hai đều lưu trữ một cái gì đó nhưng ở các cấp độ khác nhau. Tóm lại, các khung nhìn lưu trữ các câu lệnh truy vấn, trong khi các dự báo sẽ lưu trữ các kết quả truy vấn.
Xem bộ nhớ cache các câu lệnh truy vấn. Bạn đặt tên cho các truy vấn được xác định trước rồi gọi chúng sau đó. Các truy vấn xem không được thực thi khi chúng được tạo. Khi bạn thực hiện các truy vấn bằng cách sử dụng chế độ xem, chúng sẽ không nhận được bất kỳ cải thiện hiệu suất nào vì chúng chỉ là các truy vấn thông thường.
Dự đoán lưu trữ kết quả truy vấn. Các truy vấn chiếu được thực hiện khi bạn tạo chúng và kết quả được lưu giữ lâu dài trên bộ nhớ. Khi bạn thực hiện bất kỳ truy vấn nào có thể sử dụng kết quả truy vấn, Vertica sẽ sử dụng các dự báo đó để phản hồi truy vấn do đó cải thiện hiệu suất truy vấn. Sau khi các phép chiếu được tạo ra, bạn không cần phải làm gì đặc biệt, Vertica sẽ tự động chọn các phép chiếu nếu nó có thể có lợi cho truy vấn. Các dự báo có thể được sử dụng cho truy vấn vì truy vấn sử dụng các cột tập hợp con của dự báo, có cùng thứ tự sắp xếp và v.v.
Dự như lượt xem, bạn có thể chọn tập hợp con cột bảng, thực hiện kết hợp với các bảng khác, đặt hàng theo các cột cụ thể. Tuy nhiên, các dự báo khác nhau sẽ chiếm không gian riêng của chúng để lưu kết quả truy vấn, càng có nhiều dự báo được tạo, chúng sẽ tiêu thụ nhiều không gian hơn. Các dự báo sẽ được cập nhật tự động trong khi các bảng nguồn có liên quan được cập nhật. Quá trình cập nhật được thực hiện trong nền và có thể mất một thời gian dài tùy thuộc vào độ phức tạp của truy vấn và kích thước dữ liệu. Do đó, các phép chiếu phù hợp hơn cho nhiều lần đọc hơn là nhiều lần viết.Từ quan điểm trường hợp sử dụng, các dự báo phù hợp hơn cho báo cáo so với bảng điều khiển web thời gian thực.
Trong chi tiết triển khai, các bảng trong Vertica đều hợp lý. Tất cả dữ liệu trong các bảng được lưu trữ trong mỗi phép chiếu siêu liên quan. Phép chiếu siêu chứa tất cả các cột trong bảng và được tạo tự động theo mặc định. Tất cả các phép chiếu khác đều xuất phát từ các phép chiếu siêu.
Vertica sẽ quyết định những gì dự đoán sẽ được sử dụng cho truy vấn, nhưng bạn cũng có thể chỉ định tên của dự trực tiếp để buộc Vertica để sử dụng chúng:
-- List all projections
SELECT projection_name FROM projections;
-- Force to use super projection, _super is the suffix of the super projection
SELECT * FROM FACT_TABLE_super;
Bạn có thể sử dụng giải thích tuyên bố để xem những gì các phép chiếu được sử dụng trong kế hoạch truy vấn. Điều này sẽ giúp bạn cải thiện hiệu suất truy vấn của mình.
Cảm ơn Nija. Câu trả lời của bạn rất hữu ích. Tôi có thêm vài câu hỏi về điều này. Sự hiểu biết của tôi là, DỰ ÁN tương tự như VIEWS ngoại trừ dự báo lưu trữ tập kết quả trên đĩa trong khi lượt xem tính toán dữ liệu từ bảng mỗi khi chúng được sử dụng trong truy vấn. Tôi có thể sử dụng VIEW làm phương án thay thế cho PROJECTION không? Nếu có, tôi có gặp phải bất kỳ vấn đề về hiệu suất nào không? – Murali
@Murali: 'Views' trong Vertica, về cơ bản là các truy vấn. (Từ _SQL Reference Manual.pdf_) "[in] một truy vấn có chứa một khung nhìn, tên khung nhìn được thay thế bằng truy vấn định nghĩa của khung nhìn" – Nija
Cảm ơn bạn. btw, tôi không thể tải xuống Concepts Guide.pdf từ http://my.vertica.com. chỉ có người dùng được ủy quyền mới có thể tải xuống, có vẻ như vậy. Tôi đã đăng ký nhưng chưa nhận được thư kích hoạt. Có cách nào khác để có được hướng dẫn .pdf không? – Murali