Database Tuning Mindset & Nghệ Thuật Indexing: Đừng Để Database Của Bạn Thở Oxy!
Bạn có bao giờ được giao fix một con bug: "Api GET /users dạo này chạy chậm quá, tận 5s mới load xong"?
Giải pháp đầu tiên nảy ra trong đầu bạn là gì? Thêm RAM? Nâng cấp CPU? Hay lên StackOverflow search "Cách làm MySQL chạy nhanh hơn" và copy một dòng lệnh CREATE INDEX vô thưởng vô phạt? 🎣
Việc "chữa cháy" như vậy có thể giải quyết vấn đề tạm thời, nhưng hệ thống sẽ sớm sụp đổ lại khi dữ liệu phình to. Đó là lúc bạn cần đến Database Tuning Mindset (Tư duy Tối ưu hóa Database) và hiểu rõ bản chất "phép thuật" của Indexing.
Hãy cùng đi sâu vào tâm trí của một Senior DBA để xem họ tối ưu hóa như thế nào nhé!
1. Ẩn Dụ: Cuốn Từ Điển Bách Khoa Toàn Thư (Analogy First) 🔄
Hãy tưởng tượng bạn có một thư viện khổng lồ với 1 triệu cuốn sách không được sắp xếp (Tương đương Database không Tuning).
Sếp yêu cầu bạn: "Tìm cho tôi cuốn sách Bí Mật Database!"
- Góc nhìn 1 (Full Table Scan): Bạn đi từ kệ số 1, nhìn từng cuốn sách một cho đến cuốn thứ 999.999 mới thấy nó. Bạn mất 1 tháng. Sếp đuổi việc bạn.
- Góc nhìn 2 (Dùng Index): Sếp thông minh hơn, ông ấy thuê một ông cán bộ thư viện sừng sỏ. Ông này mất 1 tuần để viết ra một quyển Sổ tra cứu (Index). Trong quyển sổ ghi: "Chữ B nằm ở tầng 2, khu A. Chữ Bí nằm ở kệ số 5, hàng 3". Nhờ quyển sổ này, khi sếp hỏi, bạn mở đúng trang sổ, nhìn địa chỉ và đi thẳng đến kệ sách lấy trong vòng 5 phút!
Đó chính xác là cách Index hoạt động. Nhưng, quyển sổ tra cứu này cũng có giá của nó (Trade-off):
- Tốn thêm tiền mua giấy để ghi (Tốn dung lượng ổ đĩa).
- Mỗi khi mua sách mới, bạn không chỉ nhét sách lên kệ, mà phải chạy đi sửa lại quyển sổ tra cứu (Làm chậm thao tác
INSERT,UPDATE,DELETE).