View vs Materialized View

Một query JOIN 5 bảng chạy 3 giây -> giảm còn 30ms mà không cần sửa code backend?

Khái niệm

  1. View: là một “query được đặt tên”, không lưu dữ liệu
  2. Materialized View: là “query được tính trước”, lưu kết quả thành một bảng
  3. Ứng dụng: Tăng tóc báo cáo và analytics cho hệ thống read-heavy.
Tính năng View Materialized View
Lưu dữ liệu Không
Tốc độ truy vấn Chậm Cực nhanh
Cần làm mới Không
Tối ưu hiệu suất Không Rất mạnh

Ưu/Nhược điểm của Materialized View

  • Ưu điểm:

    • Tăng tốc query cực lớn (vd: 3s -> 30s)
    • Giảm tải cho cơ sở dữ liệu
    • Hoàn hảo cho dashboard & analytics
    • Không cần thay đổi code ứng dụng
  • Nhược điểm:

    • Dữ liệu không real-time, cần làm mới
    • Phù hợp cho dữ liệu ít thay đổi
    • Quá trình làm mới có thể tốn kém
    • Không phải CSDL nào cũng hỗ trợ

Khi nào nên dùng?

  • Nên dùng khi:

    • Dashboard & Analytics
    • Báo cáo định kỳ (ngày, tuần, tháng)
    • Hệ thống read-heavy (đọc nhiều)
    • Query phức tạp (nhiều JOINs, tổng hợp)
  • Không nên dùng khi:

    • Cần dữ liệu real-time tuyệt đối
    • Dữ liệu thay đổi liên tục (ghi nhiều)
    • Logic cần phân tán (microservices)
    • Muốn tránh quản lý việc làm mới