Thứ Sáu, 13 tháng 1, 2023

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

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.

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é!

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Tăng tốc database phần 1 index - khái niệm cơ bản, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master