ĐĂNG KÝ ĐỂ NHẬN THÔNG TIN MỚI NHẤT

Có nên định kỳ Rebuild Index không?

Bài viết này tôi sẽ giúp các bạn làm rõ vấn đề: Có nên định kỳ Rebuild Index trong các cơ sở dữ liệu Production hay không?

Ghi chú: Những gì chia sẻ được đúng kết từ kinh nghiệm thực tế qua các dự án tối ưu thành công của Wecommit. Các bạn có thể xem thông tin những dự án này tại đây.

1. Có nên định kỳ Rebuild Index hay không?

Trong các dự án mà tôi thực hiện, tôi được làm việc với nhiều team DEV, thống kê trong số đó thì đa số anh em tin rằng:

  • Đặt lịch định kỳ Rebuild Index sẽ giúp hiệu năng của Cơ sở dữ liệu được cải thiện.

Ghi chú: khi tôi nói tới Index trong bài này, tôi đang nhắc tới B-tree Index (loại Index đang được sử dụng rất phổ biến của các anh em lập trình).

Rất tiếc, từ góc độ của một người làm việc chuyên sâu về tối ưu Cơ sở dữ liệu, tôi có thể nói rằng: nhận định trên là sai lầm và không có căn cứ chứng minh.

Chúng ta không nên định kỳ Rebuild Index.

Hãy liên tưởng Việc Rebuild Index định kỳ  giống như “Uống thuốc kháng sinh” vậy, một lần bạn bị ốm, bạn thấy rằng uống thuốc kháng sinh giúp mình khỏe hơn. Điều này không đồng nghĩa với việc bạn cứ định kỳ cuối mỗi tháng lại uống thuốc kháng sinh 1 lần (mặc dù cơ thể vẫn đang bình thường).

Với ví dụ trên, bạn sẽ thấy việc tối ưu cũng rất gần gũi với cuộc sống đời thường của chúng ta.

2. Khi nào chúng ta cần thực hiện Rebuild Index?

Bạn cần phải kiểm tra và chắc chắn rằng Index đang gặp các vấn đề sau thì mới nên Rebuild

  • Index đã bị phân mảnh
  • Index tăng trưởng lớn và trong đó các khoảng trống tạo ra do câu lệnh Delete đã không được tái sử dụng.
  • Thông số Index Clustering Factor đã không phù hợp với trạng thái Index hiện tại.

Rất nhiều tài liệu, tips mà các blog trên google đang chia sẻ (ví dụ: độ cao của B-tree Index > 4), nếu xét về bản chất chỉ thuộc những yếu tố bên trên.

3. Nếu bạn muốn biết toàn bộ các kiến thức về Index, hiểu rõ bản chất từ kiến trúc

Bạn có thể hỏi rằng:

  • Khi chúng ta xóa dữ liệu, sau đó lại insert dữ liệu thì các Node Lá trong B-tree Index có được tái sử dụng hay không?
  • Nếu có nhiều Index cùng sử dụng chung 1 cột trong bảng, thì Index nào sẽ được sử dụng khi thực hiện câu lệnh
  • B-tree Index và Bitmap Index là gì?
  • Những gì cần quan tâm với Index trong dự án tối ưu SQL thực tế?
  • Clustering Factor là gì, nó ảnh hưởng thế nào đến hiệu quả của câu lệnh SQL?

Tất cả những nội dung này đều có trong chương trình “Từ điển tối ưu 100x hiệu năng”. Bạn có thể đọc nội dung chương trình này tại đây.

4. Một số bài viết khác liên quan tới Index

5. Nếu bạn muốn liên hệ với tôi

Youtube: https://www.youtube.com/channel/UCtsYzL7iN7rBCPnkjYp4XYw

Zalo: 0888549190

Facebook: https://www.facebook.com/tran.q.huy.71

Email: huy.tranquoc@wecommit.com.vn

 

Views: 1145





    Câu hỏi bảo mật

    Trả lời

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *