Sort Key and Prefix Index
Sort Key and Prefix Index
Index Principles
Doris lưu trữ data trong 1 cấu trúc tương tự SSTable ( Sorted String Table ). Cấu trúc này là 1 cấu trúc dữ liệu có thứ tự ( tương tự như List trong Java ), nó có thể được sắp xếp và lưu trữ dựa vào 1 hoặc nhiều cột chỉ định. Với cấu trúc dữ liệu như vậy, với điều kiện tìm kiếm trên tất cả hoặc 1 phần các cột được sắp xếp sẽ đem lại hiệu năng cao.
Dựa vào sorted keys, Doris có thêm 1 cái gọi là prefix index. Data trong bảng được lưu trữ 1 cách logical trong các Data Block dựa vào số lượng rows. Mỗi logical data block lưu trữ 1 index entry trong bảng prefix index, với độ dài của index entry ko quá 36 bytes. Nội dung index entry sẽ là prefix của các cột được sắp xếp ( sorted keys ) của hàng đầu tiên trong data block.
Bởi vì prefix index tương đối nhỏ, nên có thể cache hoàn toàn trên memory, cho phép ta nhanh chóng lấy được vị trí của data block và cải thiện hiệu quả query.
- 36 byte đầu tiên của row trong data block được sử dụng làm prefix index cho row đó.
- Khi gặp loại VARCHAR, prefix index sẽ bị cắt bớt trực tiếp.
- Nếu cột đầu tiên là VARCHAR, ngay cả khi nó không đạt tới 36 byte, nó sẽ bị cắt trực tiếp và các cột tiếp theo sẽ không được đưa vào prefix index.
Use cases
- Tip Vì định nghĩa KEY của một bảng là duy nhất nên một bảng chỉ có thể có một loại prefix index. Đối với các truy vấn sử dụng các cột khác không thể lấy prefix làm điều kiện, hiệu quả có thể không đáp ứng được như mong muốn. Có hai giải pháp:
- Tạo inverted index trên các cột yêu cầu truy vấn tăng tốc vì một bảng có thể có nhiều inverted index.
- Đối với các bảng DUPLICATE Model, có thể tạo nhiều prefix index bằng cách tạo Materialized View với các thứ tự cột được điều chỉnh. Để biết thêm chi tiết, hãy tham khảo Tăng tốc truy vấn bằng Materialized View - Apache Doris
Comments
Post a Comment