- vừa được xem lúc

Tăng tốc database phần 1 index - khái niệm cơ bản

0 0 42

Người đăng: Nguyễn Đình Nghĩa

Theo Viblo Asia

Phần đầu tiên trong chuỗi bài là các phần liên quan tới database, nhiều bạn thích trình bày các vấn đề khác về database tuy nhiên theo kinh nghiệm cá nhân mình thấy hiểu về index trong db rất quan trọng trong quá trình nâng cao hiệu năng của chương trình, đôi khi chỉ cần đánh index thôi mà tốc độ đang từ rùa bò trở nên tốc độ bàn thờ . Nhưng có phải index luôn giúp truy vấn nhanh hơn không? Đầu tiên là khái niệm index là gì?

Bây giờ mọi người chỉ cần dùng điện thoại, máy tính là có từ điển tra một phát là ra từ ngày, ngày xưa mình học tiếng anh phải tra một quyền từ điển dày cộp như thế này

Nếu quyển từ điển đó mà không có thứ tự, cách tra tốt nhất là gì? Có thể có bạn có nhiều cách nhưng với mình chắc là đọc từ đầu tới cuối để tìm từ cần tra. Có lẽ nhiều bạn sẽ bảo ai lại dở hơi đi làm một quyển từ điển mà không có thứ tự, nhưng lại không ai bảo có thằng dở hơi nào tạo table mà không đánh index.

Nhiều người hay so sánh index với mục lục của cuốn sách, điều đó tương đối đúng nó giúp tìm nội dung của một chương nhanh hơn, nó nằm ngoài nội dung chính (thường ở đầu hay cuối cuốn sách), nó chỉ đơn giản trỏ tới số trang có nội dung cần tìm. Index cũng như vậy nó cũng nằm độc lập với bảng, nó có chỗ lưu trữ riêng của nó, và nó trỏ tới bản ghi cần tìm. Tuy nhiên cấu trúc của index thì không giống mới mục lục, với mục lục bạn vẫn cần phải tìm hết mục lục từ trên xuống dưới để tìm ra chương mình cần tìm, nhưng index thì khôn hơn một tý, nó giống một quyển từ điển . Khi bạn truy vấn theo index cũng như khi bạn tra từ điển (có thứ tự dò nhanh hơn không cần phải đọc hết từ đầu đến cuối). Tuy nhiên index phức tạp hơn từ điển, từ điển một khi đã in ra thì không đổi nữa, muốn đổi thì đợi lần tái bản sau nhé! Còn database thì thường xuyên được cập nhật, thêm sửa xóa dẫn đến index cũng phải được cập nhật liên tục.

Mục lục của cuốn sách cố định sau khi in xong, nó không bao giờ lớn hơn kích thước nội dung , còn index thì có thể theo nhiều trường dữ liệu khác nhau, nó tốn dung lượng lưu trữ trong ổ cứng, làm phình to database (tốn tài nguyên ở đây chứ đâu). Mỗi khi dữ liệu thay đổi nó lại phải cập nhật lại, chèn thêm bớt index sau khi thêm sửa xóa. Vấn đề làm sao để khi bạn thay đổi dữ liệu database chạy vẫn nhanh, nó không cần đợi quá lâu để đợi cập nhật index, vậy làm thế nào mà index lại được cập nhanh như thế sau mỗi lệnh insert, delete,update? Dữ đúng thứ tự của index mà không cần thay đổi một đống data của index.

Điều này được giải quyết bằng cách kết hợp hai cấu trúc dữ liệu "doubly linked list" và một "cây tìm kiếm". Hai cấu trúc này giải thích hầu hết các đặc điểm về hiệu năng của database. Về cấu trúc dữ liệu của index mình sẽ mô tả ở bài sau.

Bây giờ mình phải đi ngủ rồi. Các bài viết về index mình đều tham khảo tại https://use-the-index-luke.com/sql/table-of-contents Các bạn có thể vào đọc nhé!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối

0 0 132

- vừa được xem lúc

[Embulk #1] Công cụ giúp giảm nỗi đau chuyển đổi dữ liệu

Embulk là gì. Embulk là một công cụ open source có chức năng cơ bản là load các record từ database này và import sang database khác.

0 0 55

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 107

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 923

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 41

- vừa được xem lúc

Lưu trữ dữ liệu với Data Store

. Data Store là một trong những componet của bộ thư viện Android JetPack, nó là một sự lựa chọn hoàn hảo để thay thế cho SharedPreferences để lưu trữ dữ liệu đơn giản dưới dạng key-value. Chúng ta cùng làm một so sánh nhỏ để thấy sự tối ưu của Data Store với SharedPreferences nhé.

0 0 71