paint-brush
Tổng quan về Lập chỉ mục cơ sở dữ liệu cho người mới bắt đầutừ tác giả@pragativerma
5,249 lượt đọc
5,249 lượt đọc

Tổng quan về Lập chỉ mục cơ sở dữ liệu cho người mới bắt đầu

từ tác giả Pragati Verma7m2022/09/09
Read on Terminal Reader
Read this story w/o Javascript

dài quá đọc không nổi

Chỉ mục cơ sở dữ liệu cho phép truy vấn lấy dữ liệu từ cơ sở dữ liệu một cách hiệu quả. Đánh chỉ mục là cách đưa một bảng không có thứ tự thành một thứ tự sẽ phát huy tối đa hiệu quả khi tìm kiếm bản ghi. Các chỉ mục có thể liên quan đến các bảng cụ thể và bao gồm một hoặc nhiều khóa. Một bảng có thể có nhiều chỉ mục được xây dựng từ nó. Cơ sở dữ liệu sẽ phải tìm kiếm qua tất cả 17 bản ghi theo thứ tự chúng xuất hiện trong bảng, từ trên xuống dưới, từng bản ghi một, để tìm kiếm tất cả các trường hợp tiềm năng của `company_id` là 18. Điều này không lý tưởng và có thể là một vấn đề khi nhìn vào bên trong một bảng cơ sở dữ liệu với lượng dữ liệu khổng lồ.
featured image - Tổng quan về Lập chỉ mục cơ sở dữ liệu cho người mới bắt đầu
Pragati Verma HackerNoon profile picture
0-item


Lập chỉ mục cơ sở dữ liệu là cách phổ biến nhất được các nhà phát triển chương trình phụ trợ biết đến và sử dụng để tối ưu hóa các truy vấn cơ sở dữ liệu. Trong bài này, chúng ta sẽ thảo luận chi tiết về lập chỉ mục cơ sở dữ liệu.


Chỉ mục cơ sở dữ liệu là gì?

Chỉ mục cơ sở dữ liệu cho phép truy vấn lấy dữ liệu từ cơ sở dữ liệu một cách hiệu quả. Nói một cách đơn giản hơn, lập chỉ mục là một cách để đưa một bảng không có thứ tự vào một thứ tự sẽ tối đa hóa hiệu quả khi tìm kiếm một bản ghi.


Các chỉ mục có thể liên quan đến các bảng cụ thể và bao gồm một hoặc nhiều khóa. Ngoài ra, một bảng có thể có nhiều chỉ mục được xây dựng từ nó.


Khi một bảng cơ sở dữ liệu không được lập chỉ mục, sẽ không có bất kỳ thứ tự rõ ràng nào của các hàng, do đó, để thực hiện bất kỳ truy vấn nào, nó sẽ cần phải tìm kiếm tuyến tính qua các hàng, nghĩa là, truy vấn sẽ phải tìm kiếm qua từng hàng để tìm. các hàng với điều kiện phù hợp. Như bạn có thể tưởng tượng, điều này không lý tưởng và có thể là một vấn đề khi nhìn vào bên trong một bảng cơ sở dữ liệu với lượng dữ liệu khổng lồ.


Ví dụ, chúng ta có một bảng như hình dưới đây:

COMPANY_ID

ĐƠN VỊ

ĐƠN GIÁ

10

12

1,15

12

12

1,05

14

18

1,31

18

18

1,34

11

24

1,15

16

12

1,31

10

12

1,15

12

24

1,3

18

6

1,34

18

12

1,35

14

12

1,95

21

18

1,36

12

12

1,05

20

6

1,31

18

18

1,34

11

24

1,15

14

24

1,05


Và sau đó, chúng tôi muốn chạy một truy vấn như sau:


 SELECT company_id, units, unit_cost FROM index_test WHERE company_id = 18


Trong trường hợp cụ thể này, cơ sở dữ liệu sẽ phải tìm kiếm qua tất cả 17 bản ghi theo thứ tự chúng xuất hiện trong bảng, từ trên xuống dưới, từng bản ghi một, để tìm kiếm tất cả các trường hợp tiềm năng của company_id là 18.


Việc này sẽ ngày càng tốn nhiều thời gian hơn khi kích thước của bàn tăng lên. Làm thế nào lập chỉ mục có thể giúp đỡ ở đây? Lập chỉ mục có thể giúp chúng tôi thiết lập cột có điều kiện tìm kiếm bật (trong trường hợp này là company_id ) theo cách được sắp xếp để tối ưu hóa hiệu suất truy vấn.


Với một chỉ mục trên cột company_id , bảng sẽ giống như sau:


COMPANY_ID

ĐƠN VỊ

ĐƠN GIÁ

10

12

1,15

10

12

1,15

11

24

1,15

11

24

1,15

12

12

1,05

12

24

1,3

12

12

1,05

14

18

1,31

14

12

1,95

14

24

1,05

16

12

1,31

18

18

1,34

18

6

1,34

18

12

1,35

18

18

1,34

20

6

1,31

21

18

1,36


Bây giờ, cơ sở dữ liệu có thể chỉ cần tìm kiếm company_id bằng 18 và trả về tất cả các cột được yêu cầu cho hàng đó, rồi chuyển sang hàng tiếp theo. Nếu hàng tiếp theo cũng có company_id là 18 một lần nữa, thì nó cũng sẽ trả về các cột yêu cầu cho hàng này, nhưng nếu hàng tiếp theo có company_id là 18, cơ sở dữ liệu biết rằng nó có thể dừng tìm kiếm ở đây và kết thúc phản hồi .


Đây là một lời giải thích khá đơn giản về chỉ mục cơ sở dữ liệu là gì và chúng có thể làm gì, nhưng còn nhiều điều khác đang diễn ra trong quá trình này. Hãy cùng tìm hiểu sâu hơn về cách hoạt động của lập chỉ mục.


Lập chỉ mục cơ sở dữ liệu hoạt động như thế nào?

Trong thực tế, bảng cơ sở dữ liệu không tự sắp xếp lại mỗi khi điều kiện truy vấn thay đổi để tối ưu hóa hiệu suất cơ sở dữ liệu nhưng thực tế xảy ra là chỉ mục làm cho cơ sở dữ liệu tạo ra một cấu trúc dữ liệu riêng biệt có thể dễ dàng sắp xếp.


Điều quan trọng cần lưu ý là khi một chỉ mục được tạo trên một cột trong cơ sở dữ liệu, nó sẽ tạo ra cấu trúc dữ liệu trên cột cụ thể đó và không có cột nào khác được lưu trữ trong cấu trúc dữ liệu này. Ví dụ: trong ví dụ trên, cấu trúc dữ liệu của chúng ta sẽ chỉ chứa company_id và không có các cột khác như unit hoặc unit_cost .


Nhưng một câu hỏi hợp pháp bật lên ở đây - làm thế nào để cơ sở dữ liệu biết những trường khác trong bảng sẽ được trả về cho một truy vấn. Chúng ta hãy cố gắng để hiểu làm thế nào.


Cấu trúc của một chỉ mục cơ sở dữ liệu


Các chỉ mục cơ sở dữ liệu lưu trữ các con trỏ để tham chiếu thông tin đơn giản cho vị trí của thông tin bổ sung trong bộ nhớ. Nói cách khác, chỉ mục lưu company_id và địa chỉ của hàng cụ thể đó trong bộ nhớ. Trong ví dụ này, chỉ mục cơ sở dữ liệu sẽ trông giống như sau:


COMPANY_ID

POINTER

10

_123

10

_129

11

_127

11

_138

12

_124

12

_130

12

_135

14

_125

14

_131

14

_133

16

_128

18

_126

18

_131

18

_132

18

_137

20

_136

21

_134


Với chỉ mục này, truy vấn có thể kiểm tra các hàng trong cột company_id có giá trị là 18 và sau đó sử dụng con trỏ, nó có thể tìm thông tin liên quan cho bản ghi đó.


Cấu trúc dữ liệu nào được sử dụng để lập chỉ mục?

Sau khi hiểu những gì chúng ta mong đợi từ chỉ mục, hãy xem các cấu trúc dữ liệu phổ biến có thể được sử dụng để lập chỉ mục cơ sở dữ liệu:


B-Cây

B-tree là cấu trúc dữ liệu chỉ mục thường được sử dụng nhất vì chúng nhanh chóng cho việc tra cứu, xóa và chèn. Tất cả các phép toán này đều có thể thực hiện được theo thời gian logarit và dữ liệu chứa trong cây B có thể được sắp xếp dễ dàng.


Bảng băm

Chỉ mục băm thường được sử dụng để mô tả các chỉ mục sử dụng bảng băm . Vì bảng băm đặc biệt hiệu quả trong việc tra cứu dữ liệu, các truy vấn tìm kiếm kết hợp chính xác có thể được xử lý nhanh chóng. Chìa khóa trong chỉ mục băm là giá trị cột và giá trị trong bảng băm là tham chiếu đến dữ liệu hàng của bảng.


Mặt khác, bảng băm không phải là cấu trúc dữ liệu có thứ tự; do đó, chúng có thể không hiệu quả đối với các loại tìm kiếm khác.


Cây R

R-tree thường được sử dụng trong cơ sở dữ liệu không gian, thường được sử dụng để lập chỉ mục thông tin đa chiều như tọa độ địa lý, hình chữ nhật, đa giác, v.v. Nó hữu ích cho các tìm kiếm như "tìm tất cả các quán cà phê trong vòng 2 dặm từ vị trí của tôi."


Chỉ mục bitmap

Chỉ mục bitmap hữu ích cho các cột có số lần xuất hiện cao của các giá trị như vậy, tức là các cột có độ chọn lọc thấp. Ví dụ: hãy xem xét một cột có giá trị boolean.


Khi nào sử dụng Chỉ mục

Các chỉ mục được thiết kế để tăng hiệu suất cơ sở dữ liệu; do đó, lập chỉ mục có thể được sử dụng bất cứ khi nào chúng ta cần cải thiện đáng kể hiệu suất cơ sở dữ liệu. Cơ sở dữ liệu của bạn càng mở rộng, thì khả năng lập chỉ mục càng có lợi cho bạn.


Tuy nhiên, điều đầu tiên và quan trọng nhất cần nhớ là chỉ mục chiếm thêm không gian; do đó, bảng càng lớn thì chỉ số càng lớn. Mỗi khi bạn thực hiện thao tác thêm, xóa hoặc cập nhật, thao tác tương tự cũng sẽ cần được thực hiện trên chỉ mục.


Khi nào không sử dụng Chỉ mục

Khi dữ liệu được ghi vào cơ sở dữ liệu, bảng gốc được cập nhật đầu tiên, tiếp theo là các chỉ mục khác dựa trên bảng đó. Khi một quá trình ghi được thực hiện vào cơ sở dữ liệu, các chỉ mục sẽ không thể hoạt động cho đến khi chúng được cập nhật. Các chỉ mục sẽ không bao giờ hoạt động nếu cơ sở dữ liệu liên tục được ghi.


Đây là lý do tại sao các chỉ mục thường được áp dụng cho cơ sở dữ liệu trong kho dữ liệu nhận dữ liệu mới trên cơ sở có kế hoạch (trong giờ thấp điểm) hơn là cơ sở dữ liệu sản xuất có thể nhận các lần ghi mới.


Làm thế nào để tạo một chỉ mục?

Đoạn mã sau cho biết cách tạo chỉ mục trên một cột trong cơ sở dữ liệu SQL:


 CREATE INDEX name_index ON Employee (Employee_Name);


Nếu bạn muốn tạo một chỉ mục trên nhiều cột, lệnh SQL sẽ giống như sau:


 CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age);


Nói chung, một chỉ mục chỉ nên được xây dựng trên một bảng nếu dữ liệu trong cột được lập chỉ mục sẽ được truy cập thường xuyên.


Sự kết luận

Vì vậy, chúng ta đã thảo luận chi tiết về lập chỉ mục cơ sở dữ liệu trong bài viết này và cũng đã tìm hiểu về các cấu trúc dữ liệu được sử dụng để thực hiện lập chỉ mục cơ sở dữ liệu và cũng như khi nào thì nên sử dụng chỉ mục và các cách khác.


Để tổng hợp mọi thứ, đây là một bản tóm tắt nhanh:

  • Lập chỉ mục cơ sở dữ liệu có thể giúp giảm đáng kể thời gian của các truy vấn.
  • Lập chỉ mục bao gồm một cấu trúc dữ liệu với các cột cho tiêu chí tìm kiếm cũng như một con trỏ.
  • Con trỏ là địa chỉ trên đĩa nhớ của hàng chứa thông tin còn lại.
  • Để cải thiện hiệu suất truy vấn, cấu trúc dữ liệu chỉ mục (B-Tree, R-Tree, Hash Table hoặc Bitmap) được sắp xếp.
  • Truy vấn tìm kiếm chỉ mục cho hàng được chỉ định; chỉ mục đề cập đến con trỏ sẽ khám phá phần còn lại của thông tin.


Đây là tất cả cho bài viết này. Lập chỉ mục cơ sở dữ liệu là một chủ đề rộng lớn và hơi phức tạp, tôi hy vọng bài viết này sẽ hữu ích trong việc hiểu những điều cơ bản về khái niệm này.


Hãy đọc tiếp!