[Tôi hiểu kĩ, bạn cũng thế]: Index database: Phân loại index - p.2
Mình viết theo phong cách Chi-pu nên bạn đọc thông cảm nhé, vì mình đọc tài liệu tiếng anh là chính. enjoy bài viết này thôi.
" Thời điểm tốt nhất để trồng cây là 10 năm trước, thời điểm tốt thứ hai chính là ngày hôm nay. Vậy nên nếu ai vẫn còn không nắm chắc về index trong database thì đây là thời điểm hoàn hảo để làm điều đó. "
Ở bài trước, chúng ta đã có bức tranh tổng quan về index. Ở bài này, chúng ta sẽ định nghĩa từng loại index có trong databse.
Primary Index
Primary Index là một file đã được sort với độ dài của records là cố định. Nó gồm 2 cột, cột đầu tiên là primay-key, cột thứ hai là pointer tới block (hoặc page) chứa records tương ứng. Data trong file này đã được sort theo primary-key.Có 2 cách để tổ chức index trong data-file, đó là:
- Dense Index Với dense index, mỗi record trong table sẽ có 1 entity index trong file index. Hay nói cách khác số lượng entity trong index file bằng với số lượng record trong table. Vì vậy tốc độ tìm kiếm là nhanh nhất, nhưng bù lại tốn nhiều memory cho việc lưu trữ.
- Sparse Index Đối với những table có lượng data lớn thì dense index sẽ tốn thêm một lượng memory đáng kể cho việc lưu trữ index. Vậy nên để giữ cho memory của file index ở mức hợp lí, database sẽ dùng sparse index. Thay vì liên kết mỗi record với index, chúng ta sẽ chia data đã được sắp xếp thành nhiều block, và chỉ pointer tới record đầu tiên trong mỗi block. Record đầu tiên này gọi là Anchor record hay Block anchor.
Dense index tận dụng được tối đa lợi ích nếu size của file index vừa với main memory. Khi đó bất kì một thao tác tìm kiếm nào đều sẽ chỉ tốn 1 I/O.