Sự khác biệt giữa B-Tree và Bitmap

Cây B và Bitmap

Có hai loại chỉ mục được sử dụng trong Oracle. Đây là B-Tree và Bitmap. Các chỉ mục này được sử dụng để điều chỉnh hiệu suất, điều này có hiệu lực làm cho việc tìm kiếm các bản ghi và truy xuất chúng khá nhanh. Các hàm chỉ mục tạo một mục nhập cho tất cả các giá trị xuất hiện trong các cột được lập chỉ mục. Các chỉ mục B-Tree là loại được sử dụng bởi các hệ thống OLTP và chủ yếu được triển khai theo mặc định. Mặt khác, Bitmap là một định dạng chỉ mục được nén cao, trong hầu hết các trường hợp, được sử dụng trong kho dữ liệu.

Bitmap nói chung có thể được gọi là một phương pháp lập chỉ mục mặc dù có thể tìm kiếm lợi ích hiệu suất và tiết kiệm lưu trữ. Việc sử dụng nó, như đã nêu trước đó, chủ yếu là trong môi trường lưu trữ dữ liệu. Lý do cho điều này là bởi vì các cập nhật dữ liệu không thường xuyên và các truy vấn ad hoc có nhiều trong môi trường. Trong quá trình thực hiện Bitmap, dữ liệu hồng y thấp được ưu tiên. Bitmap là lựa chọn ưu tiên cho các mục cột có các tùy chọn thấp như giới tính, sẽ chỉ có 2 giá trị và được ưu tiên. Dữ liệu tĩnh trong kho cũng là một đặc tính tốt của dữ liệu sẽ được triển khai xuất sắc bằng Bitmap. Một đặc tính khác của Bitmap là một luồng bit, theo đó mỗi bit được triển khai thành một giá trị cột trong một hàng duy nhất của bảng.

Mặt khác, một chỉ mục cây B là một chỉ mục được tạo trên các cột có chứa các giá trị rất độc đáo. Chỉ mục B-Tree có các mục được sắp xếp trong đó mỗi mục có giá trị khóa tìm kiếm và con trỏ tham chiếu đến một hàng và giá trị đã cho. Trong trường hợp máy chủ tìm thấy một ràng buộc phù hợp liên quan đến giá trị được đề cập, con trỏ được triển khai để tìm nạp hàng.

Một trong những điểm khác biệt giữa hai loại này là có sự trùng lặp thấp và độ đồng bộ cao trong B-Tree trong khi điều ngược lại xảy ra trong Bitmap. Bitmap có các trường hợp trùng lặp cao và tính thân mật thấp. Chỉ số Bitmap được coi là có lợi thế so với chỉ số B-Tree, vì nó có các bảng có hàng triệu hàng vì các cột được chỉ định có số lượng thẻ thấp. Do đó, các chỉ mục trong Bitmap cung cấp hiệu suất tốt hơn so với các chỉ mục B-Tree.

Cây B dường như cực kỳ nhanh khi một bộ dữ liệu nhỏ được thu thập, trong hầu hết các trường hợp, dữ liệu phải vượt quá 10% kích thước cơ sở dữ liệu. Cả hai hoạt động cùng nhau khi có rất nhiều giá trị riêng biệt được lập chỉ mục. Điều đặc biệt đối với B-Tree là một số chỉ mục có thể được hợp nhất để tạo ra một chương trình rất hiệu quả. Mặt khác, Bitmap có xu hướng hoạt động tốt nhất khi có các giá trị được lập chỉ mục thấp hơn để đạt hiệu quả tối đa.

Cây B rất kém khi tìm kiếm các tập hợp dữ liệu lớn hơn vượt quá 10% dữ liệu tập hợp con. Bitmap thực hiện thử thách này để mang lại kết quả chất lượng cao, vì nó hoạt động tốt hơn khi có một vài giá trị riêng biệt.

Nếu có nhiều chỉ mục trong một bảng bận sử dụng B-Tree, một vấn đề có thể phát sinh do các hình phạt nhỏ được áp dụng khi chèn dữ liệu được lập chỉ mục hoặc trong trường hợp bạn cần chèn và cập nhật dữ liệu được lập chỉ mục. Đây không phải là vấn đề với Bitmap, vì nó rất hiệu quả trong việc chèn và cập nhật các giá trị, bất kể kích thước nào trong câu hỏi.

Tóm lược

B-Tree và Bitmap là hai loại chỉ mục được sử dụng trong Oracle
Bitmap là một phương pháp lập chỉ mục, mang lại lợi ích hiệu suất và tiết kiệm lưu trữ
Chỉ mục B-Tree là một chỉ mục được tạo trên các cột có chứa các giá trị rất độc đáo
B-Tree hoạt động tốt nhất với nhiều giá trị được lập chỉ mục riêng biệt
Bitmap hoạt động tốt nhất với nhiều giá trị được lập chỉ mục riêng biệt