Có phần mềm nào (tốt nhất là nguồn mở) hơn có thể phân tích một GIẢI THÍCH PostgreQuery và đề xuất các chỉ số cần thiết giúp tăng tốc truy vấn không?
Có phần mềm nào (tốt nhất là nguồn mở) hơn có thể phân tích một GIẢI THÍCH PostgreQuery và đề xuất các chỉ số cần thiết giúp tăng tốc truy vấn không?
Câu trả lời:
Tôi thực sự chỉ tìm thấy điều này một vài phút trước đây: http://explain.depesz.com/ . Bạn dán vào kết quả của ANALYZE GIẢI THÍCH của bạn và nó cho bạn thấy nơi nào có thể có vấn đề (thậm chí nó được mã hóa màu).
Từ phần trợ giúp ...
Giải thích.depesz.com là công cụ để tìm nguyên nhân thực sự cho các truy vấn chậm. Nói chung, người ta sẽ sử dụng truy vấn EXPLAIN ANALYZE; và đọc đầu ra. Vấn đề là không phải ai cũng có thể dễ dàng hiểu được tất cả các phần của đầu ra và không phải lúc nào cũng rõ liệu nút thực thi trong 17.3ms nhanh hơn hay chậm hơn nút chạy trong 100ms - thực tế là phần đầu tiên được thực thi 7 lần Để sử dụng trang web, chỉ cần đi đến trang đầu tiên của nó và dán vào đó giải thích phân tích đầu ra từ psql của bạn. Đầu ra này có thể trông như thế này. Sau khi tải lên, bạn sẽ được chuyển đến trang hiển thị phân tích cú pháp và độc đáo (tốt, ít nhất là tốt cho tôi :) được tô màu để nhấn mạnh vào các phần quan trọng. Điều này có thể trông như thế này. Lưu ý bên lề: url cho đầu ra được tô màu là liên tục, vì vậy bạn chỉ cần sử dụng nó để hiển thị cho người khác - ví dụ - cho những người tốt bụng đó trên kênh irc #postgresql trên freenode. Biểu đồ này sử dụng 4 màu để đánh dấu những điều quan trọng: nền trắng - mọi thứ đều là nền màu vàng tốt - nút đã cho là nền màu nâu đáng lo ngại - nút đã cho là nền màu đỏ đáng lo ngại hơn - nút đã cho là rất đáng lo ngại, màu nào được sử dụng, được chọn dựa trên chế độ nào bạn sẽ sử dụng: "Độc quyền", "Bao gồm" hoặc "Hàng X".
Tôi không biết về bất kỳ công cụ nào cho Postgres thực hiện thuật toán này và theo tôi, bộ não con người (và thường là một chút thử nghiệm trong môi trường dev) thực sự là công cụ thích hợp duy nhất ở đây. Có rất nhiều yếu tố liên quan, bao gồm cả trình lập kế hoạch truy vấn thậm chí sẽ nghĩ rằng chỉ mục của bạn có đáng sử dụng hay không - điều được xác định theo cách cài đặt của bạn đã điều chỉnh cài đặt kế hoạch truy vấn và kích thước / thống kê trên bảng có liên quan ( S).
Đề xuất tốt nhất tôi có thể thực hiện là thực hiện EXPLAIN ANALYZE
(điều ANALYZE
quan trọng - nó sẽ cung cấp cho bạn thời gian chạy truy vấn & kế hoạch con), xem xét kết quả và tấn công con số lớn nhất bạn thấy đầu tiên. Bạn có thể có thể viết một trình phân tích cú pháp để phá vỡ đầu ra EXPLAIN (đặc biệt là trong 9.0 với đầu ra JSON), nhưng tôi không biết bất kỳ ai đã giải quyết vấn đề này (về cơ bản đây là những gì tối ưu hóa cho MS-SQL làm ...)
Không có gì sản xuất, nhưng đối với người tò mò, có / đã có một dự án nghiên cứu để thực hiện một cái gì đó như thế. Tìm kiếm "Trình tư vấn chỉ mục PostgreSQL".