2013-05-21 47 views
7

Trong Teradata tôi có thể sử dụng một tuyên bố như ...Sử dụng THU THẬP SỐ LIỆU THỐNG KÊ trong Teradata

collect statistics on my_table column(col1) 

này sẽ thu thập số liệu thống kê trên bàn và lưu trữ chúng trong quan điểm DBC như ColumnStats, IndexStats và MultiColumnStats. Tôi cũng theo ấn tượng rằng trình tối ưu hóa (công cụ phân tích cú pháp) sẽ tìm thấy số liệu thống kê khi chúng có sẵn và sử dụng chúng thay vì ước tính số lượng thẻ/chỉ số bảng để đưa ra quyết định tốt hơn về cách thực hiện truy vấn.

Điều này nghe có vẻ tuyệt vời, nhưng tôi có một số câu hỏi.

  • có bất kỳ bất lợi nào khi sử dụng collect stats không?
  • Khi nào thích hợp/không thích hợp để sử dụng số liệu thống kê thu thập trong tập lệnh SQL của bạn?
  • Lợi ích hiệu suất để thu thập số liệu thống kê trên một trường đã được lập chỉ mục là gì?
  • Số liệu thống kê được lưu trữ trong bao lâu (bảng, bảng dễ bay hơi)?
  • Bất kỳ nhận xét nào khác liên quan đến collect statistics sẽ được đánh giá cao.
+0

Xin lỗi nhưng IMO câu hỏi này không phải là "phù hợp" đối với SO. Thu thập số liệu thống kê là một phần rất quan trọng, có lẽ là thiết yếu của Teradata và có rất nhiều bài báo trực tuyến thảo luận về chủ đề này. Ngoài ra, bạn có quá nhiều phần khác nhau để câu hỏi này được trả lời rõ ràng. Bất kỳ một trong những viên đạn có thể có giá trị yêu cầu một lần nữa. Bỏ phiếu để đóng là "không xây dựng". – BellevueBob

+0

Hey Bob bạn có nghĩ rằng nó sẽ phù hợp hơn cho việc di chuyển câu hỏi đến trang web SO của cơ sở dữ liệu quản trị viên hơn là bỏ phiếu "không mang tính xây dựng"? Tôi đã tìm thấy bài viết nhưng không ai thực sự giải quyết câu hỏi của tôi (s) – ChrisCamp

Trả lời

10

1> có bất kỳ bất lợi nào khi sử dụng số liệu thống kê thu thập không?

Có, thu thập số liệu thống kê chính nó là tốn thời gian, nó thực sự xác định vị trí dữ liệu từ AMPS và chèn số liệu thống kê trong bảng từ điển.

Giả sử bạn có định nghĩa bảng như sau:

ct t1 (x1 int, y1 int, z1 int);

Bảng chứa hàng triệu hàng và z1 không bao giờ được sử dụng trong điều kiện ST/Join, khi đó không đáng để thu thập số liệu thống kê trên z1.

2> Khi nào thích hợp/không phù hợp để sử dụng số liệu thống kê thu thập trong tập lệnh SQL của bạn?

Đã trả lời ở trên. Nếu một cột sẽ được sử dụng như điều kiện ST/Join .i.e trong mệnh đề where hoặc on, bạn phải thu thập số liệu thống kê, nếu không thì không cần thiết.

3> Lợi ích hiệu suất để thu thập số liệu thống kê trên một trường đã được lập chỉ mục là gì?

ct t1 (x1 int, y1 int) chỉ mục chính (x1);

cho truy vấn đơn giản như sel * từ t1, trong đó x1 = 5;

sẽ chứng minh tính hữu ích của việc thu thập số liệu thống kê.

Làm cách nào?

trình tối ưu hóa có thể ước tính chính xác số lượng hàng mà truy vấn này sẽ chọn và nếu t1 sẽ được kết hợp với t2 nói, tham gia hiệu quả sẽ được chọn bởi trình tối ưu hóa.

4> Số liệu thống kê được lưu trữ trong bao lâu (bảng, bảng dễ bay hơi)?

Bảng: vĩnh viễn.

bảng dễ bay hơi: cho đến khi phiên hết hạn.

5> Bất kỳ nhận xét nào khác liên quan đến thống kê thu thập sẽ được đánh giá cao.

Không có gì được thảo luận về số liệu thống kê nhiều cột.

Nói, truy vấn giống như:

sel * từ t1 tham gia t2 trên y1 = y2 và x1 = 2;

sau đó thu thập số liệu thống kê nhiều cột trên (x1, y1) sẽ khá hữu ích trong việc tối ưu hóa.

Ngoài ra, nếu bảng nhân khẩu đã được thay đổi (tăng số lượng hàng), bạn phải xem xét lại việc thu thập số liệu thống kê

+0

Hey có người sử dụng, tôi đánh giá cao những suy nghĩ ra phản ứng – ChrisCamp

Các vấn đề liên quan