Tìm hiểu về câu lệnh EXPLAIN

Đã hoàn thành

Sử dụng câu lệnh EXPLAIN để hiển thị kế hoạch thực thi cho truy vấn. Giải thích có thể được sử dụng với bất kỳ câu lệnh SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE hoặc CREATE TABLE AS nào.

EXPLAIN hiển thị kế hoạch thực thi cho truy vấn, cho phép bạn hiểu cách PostgreSQL: thực thi một câu lệnh, liệu chỉ mục có được sử dụng, cách nối bảng và chi phí khái toán của truy vấn hay không.

Cú pháp cho EXPLAIN là:

EXPLAIN [ (parameter [, ...] ) ] statement

Các tham số tùy chọn là:

  • PHÂN TÍCH
  • DÀI DÒNG
  • CHI PHÍ
  • BỘ ĐỆM
  • ĐỊNH DẠNG

Chẳng hạn:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Truy vấn đơn giản này trả về thông tin sau đây:

ảnh chụp màn hình hiển thị Kế hoạch Truy vấn.

PHÂN TÍCH

Tùy chọn này thực thi câu lệnh và trả về kế hoạch truy vấn. Đầu ra từ câu lệnh bị loại bỏ, nhưng câu lệnh vẫn được thực thi. Bạn có thể kết hợp các câu lệnh ROLLBACK và EXPLAIN ANALYZE để ngăn các thay đổi được áp dụng với một truy vấn thực hiện thay đổi đối với cơ sở dữ liệu, chẳng hạn như INSERT, UPDATE hoặc DELETE. Chẳng hạn:

BEGIN;

> EXPLAIN ANALYZE INSERT INTO Animal 
> (ani_id, name, weight_kg, cat_id, enc_id) 
> VALUES (28, 'Robin Robin', 0.5, 1, 2);

ROLLBACK;

DÀI DÒNG

Hiển thị thông tin bổ sung bao gồm:

  • danh sách cột đầu ra cho mỗi nút trong cây kế hoạch
  • bảng và tên hàm đủ điều kiện sơ đồ
  • tên các biến trong biểu thức cùng với biệt danh bảng
  • tên của từng lẫy mà thống kê được hiển thị

CHI PHÍ

Bao gồm chi phí khởi động ước tính và tổng chi phí, cộng với số hàng ước tính và độ rộng ước tính của mỗi hàng.

BỘ ĐỆM

Chỉ có thể dùng bộ đệm với tùy chọn PHÂN TÍCH. PostgreSQL dùng bộ đệm ẩn Sử dụng Gần đây Nhất (LRU) để lưu trữ dữ liệu được sử dụng thường xuyên trong bộ nhớ. Bộ đệm hiển thị lượng dữ liệu đến từ bộ đệm ẩn và dung lượng được truy xuất từ đĩa. Hiển thị số lượng chia sẻ, cục bộ và tạm thời chặn lượt truy cập, nội dung đọc và ghi. Dữ liệu do BUFFERS cung cấp có thể giúp hiểu các phần I/O chuyên sâu của truy vấn.

ĐỊNH DẠNG

Xác định định dạng đầu ra. XML, JSON hoặc YAML chứa cùng một thông tin với TEXT nhưng ở định dạng dễ sử dụng hơn cho các chương trình. TEXT là mặc định.