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
- View: là một “query được đặt tên”, không lưu dữ liệu
- Materialized View: là “query được tính trước”, lưu kết quả thành một bảng
- Ứ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 | Có |
| Tốc độ truy vấn | Chậm | Cực nhanh |
| Cần làm mới | Không | Có |
| 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