2008-08-26 7 views
5

Làm cách nào để xác định thời điểm sử dụng table clusters? Có hai loại, chỉ mục và băm, để sử dụng cho các trường hợp khác nhau. Theo kinh nghiệm của bạn, có giới thiệu và sử dụng các cụm bảng được trả hết không?Khi nào bạn sử dụng các cụm bảng?

Nếu không có bảng nào của bạn được thiết lập theo cách này, việc sửa đổi chúng để sử dụng các cụm bảng sẽ làm tăng thêm độ phức tạp của quá trình thiết lập. Nhưng lợi ích hiệu suất dự kiến ​​sẽ vượt quá chi phí của sự phức tạp tăng lên trong công việc bảo trì trong tương lai?

Bạn có bất kỳ tài liệu tham khảo hoặc sách trực tuyến yêu thích nào mô tả tốt về phân cụm bảng và đưa ra các ví dụ triển khai tốt không?

// Mẹo Oracle được đánh giá cao.

Trả lời

1

Tôi chưa từng sử dụng các cụm bảng của Oracle, nhưng tôi hiểu rằng các cụm bảng chỉ mục của nó rất giống với các chỉ mục nhóm của MS SQL Server. Nghĩa là dữ liệu hàng được tổ chức thực tế bằng khóa chỉ mục của nhóm.

Điều này làm cho một lý tưởng cho cột được truy cập nhiều có số lượng giá trị có thể hợp lý nhỏ (so với tổng số hàng), trong đó hầu hết truy vấn muốn truy xuất tất cả các hàng có giá trị cụ thể. Bởi vì tất cả các hàng như vậy được lưu trữ vật lý cùng nhau, đĩa I/O, đặc biệt là thời gian tìm kiếm, được giảm.

"Nhỏ hợp lý" không dễ xác định, nhưng mã bưu chính hoặc mã zip trong bảng địa chỉ có vẻ hợp lý nếu bạn thường truy vấn tất cả các địa chỉ trong vùng của một mã. Mã tỉnh/bang/lãnh thổ có thể là lựa chọn quá nhỏ đối với bảng địa chỉ trên toàn quốc. Vì vậy, bạn không muốn sử dụng chúng trên các cột có ít giá trị có thể (ví dụ: M/F cho giới tính) vì sau đó cụm không mua cho bạn bất kỳ thứ gì và có khả năng bạn phải chi phí cho việc chèn. Bạn cũng không bao giờ muốn sử dụng clustering trên các cột khóa thay thế "autonumber" (từ các chuỗi trong Oracle) bởi vì điều đó sẽ tạo ra một "điểm nóng" ở mức độ cuối cùng của bảng khi tất cả các chèn phải thể chất xảy ra ở đó. Bạn cũng không muốn áp dụng phân cụm vào một giá trị cột sẽ được cập nhật vì RDBMS sẽ phải di chuyển bản ghi vật lý để duy trì thứ tự nhóm.

+0

Cụm bảng Oracle không giống như chỉ mục nhóm của SQLServer. –

+0

Xin lỗi vì đã hỏi quá nhiều sau, nhưng tôi không tìm thấy gợi ý nào khác: Có cái gì đó tương tự như cụm bảng của Oracle trong MSSQL không? – landi

7

Tính năng sát thủ của cụm bảng là bạn có thể lưu trữ các hàng có liên quan của các bảng khác nhau tại cùng một vị trí thực tế.

Điều đó có thể cải thiện hiệu suất tham gia theo thứ tự độ lớn. Tuy nhiên, nó không trả tiền thường xuyên như nó âm thanh.

Thời gian duy nhất tôi sử dụng nó là tham gia ba bảng, được thực hiện bởi hai lần kết hợp băm. Phải mất quá lâu;). Tuy nhiên, sự tham gia là trên cùng một cột, do đó, nó đã có thể sử dụng một cụm bảng băm được khóa bởi cột nối. Điều đó làm cho tất cả các hàng liên quan được lưu trữ cùng với (lý tưởng, trong cùng một khối cơ sở dữ liệu). Biết rằng, Oracle có thể thực hiện phép nối với một tối ưu hóa đặc biệt ("cluster join").

Đã nhiều lần tham gia trước, nhưng vẫn cảm thấy như các bảng thông thường (cho INSERT/SELECT/UPDATE/DELETE). Mặt khác, có "các cụm bảng đơn" chủ yếu được sử dụng để kiểm soát "hệ số phân cụm" - Một ý tưởng tương tự như chỉ mục nhóm (được gọi là Bảng chỉ mục-Tổ chức trong Oracle) nhưng không thêm chi phí cao nếu sử dụng chỉ mục phụ.

2

Người ta có thể nói rất nhiều về clustering, nhưng tôi thấy rằng lời giải thích gần như cuối cùng về Oracle cụm (ưu và nhược điểm, khi sử dụng và cách sử dụng) có thể được tìm thấy trong cuốn sách của Tom Kyte của - Effective Oracle by Design, bạn cũng có thể tìm kiếm asktom cho một số ví dụ sử dụng cụm cụ thể (1, 2 v.v.). Bạn chắc chắn nên xem cuốn sách này nếu bạn chưa có.

Một số thông tin bạn cũng có thể tìm thấy here.

Nhưng điều bạn nên luôn luôn làm trước khi tạo cấu trúc giản đồ phức tạp là để cố gắng, để kiểm tra, để chuẩn và lựa chọn giải pháp một thích hợp nhất với nhu cầu của bạn :)

Hope this helps.