Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Tối Ưu Hóa Truy Vấn (Query Optimization) Là Gì?

Tối ưu hóa truy vấn có tầm quan trọng lớn cho hiệu suất CSDL quan hệ, đặc biệt thực thi câu lệnh SQL phức tạp. Bộ tối ưu truy vấn quyết định phương pháp tốt nhất thực hiện mỗi truy vấn.

Bộ tối ưu chọn, ví dụ: có dùng chỉ mục cho truy vấn cho trước hay không, và phương pháp join nào dùng khi join nhiều bảng. Quyết định này ảnh hưởng khổng lồ hiệu suất SQL, và tối ưu truy vấn là công nghệ then chốt mọi ứng dụng, từ hệ thống vận hành đến kho dữ liệu và hệ thống phân tích đến hệ thống quản lý nội dung.

Các nguyên tắc tối ưu truy vấn:

  • Hiểu CSDL thực thi truy vấn như thế nào − Bước đầu tiên tối ưu truy vấn là hiểu CSDL đang làm gì. CSDL khác nhau có lệnh khác nhau. Ví dụ: MySQL dùng "EXPLAIN [SQL Query]" xem plan truy vấn. Oracle dùng "EXPLAIN PLAN FOR [SQL Query]" xem plan truy vấn.

  • Truy xuất ít dữ liệu nhất có thể − Càng nhiều thông tin khôi phục từ truy vấn, càng nhiều tài nguyên CSDL cần mở rộng xử lý và lưu bản ghi. Ví dụ: chỉ cần lấy một cột từ bảng, đừng dùng 'SELECT *'.

  • Lưu kết quả trung gian − Đôi khi logic truy vấn phức tạp. Có thể tạo kết quả mong muốn qua subquery, inline view, UNION. Với phương pháp này, kết quả trung gian không lưu trong CSDL mà dùng trực tiếp trong truy vấn. Dẫn đến vấn đề hiệu suất, đặc biệt khi kết quả trung gian có nhiều hàng.

Các chiến lược tối ưu truy vấn:

  • Dùng Chỉ Mục (Use Index) − Sử dụng chỉ mục là chiến lược đầu tiên tăng tốc truy vấn.

  • Bảng Tổng Hợp (Aggregate Table) − Dùng điền trước bảng ở mức cao hơn để ít thông tin hơn cần phân tích.

  • Phân Chia Dọc (Vertical Partitioning) − Phân chia bảng theo cột. Giảm lượng thông tin truy vấn SQL cần xử lý.

  • Phân Chia Ngang (Horizontal Partitioning) − Phân chia bảng theo giá trị dữ liệu, thường là thời gian. Giảm lượng thông tin truy vấn SQL cần xử lý.

  • Phi Chuẩn Hóa (De-normalization) − Quy trình phi chuẩn hóa gộp nhiều bảng thành bảng đơn. Tăng tốc thực thi truy vấn vì ít join bảng hơn.

  • Điều Chỉnh Server (Server Tuning) − Mỗi server có tham số riêng và cung cấp điều chỉnh tham số server để tận dụng tối đa tài nguyên phần cứng, tăng tốc thực thi truy vấn đáng kể.