Làm thế nào để xác định chi phí / lợi ích của việc thêm một chỉ mục?


10

Theo Craig Ringer :

Mặc dù thường là một ý tưởng tốt để tạo một chỉ mục trên (hoặc bao gồm) các cột khóa ngoại bên tham chiếu của bạn, nhưng không bắt buộc. Mỗi chỉ mục bạn thêm làm chậm các hoạt động DML xuống một chút, do đó bạn phải trả chi phí hiệu năng cho mỗi INSERT, UPDATEhoặc DELETE. Nếu chỉ số hiếm khi được sử dụng, nó có thể không có giá trị.

Làm thế nào để bạn xác định nếu lợi ích của việc thêm một chỉ mục vượt qua chi phí của nó?

Bạn có hồ sơ kiểm tra đơn vị trước / sau khi thêm một chỉ mục và kiểm tra mức tăng hiệu suất tổng thể? đây có phải là cách tốt hơn không?


pg_stat_user_indexesgiúp hướng dẫn bạn điều này, hiển thị thông tin về việc sử dụng chỉ mục. Để ước tính chi phí bảo trì, bạn có thể xem hoạt động ghi bảng của mình pg_stat_user_tablesnhưng vì HẤP DẪN, không phải tất cả các cập nhật sẽ nhất thiết phải chạm vào chỉ mục để bạn có thể đánh giá quá cao một chút.
Craig Ringer

@CraigRinger, điều đó rất hữu ích. Cảm ơn bạn!
Gili

Tôi chỉ dựa vào pgBadger. Và ruột của tôi.
Colin 't Hart

Câu trả lời:


4

Việc sử dụng chỉ mục phụ thuộc vào cấu trúc dữ liệu của bạn và tính chọn lọc của dữ liệu của bạn. Nếu bạn thực hiện các truy vấn mà bạn không sử dụng chúng, chúng rất tốn kém. Nếu bạn sử dụng chúng một cách hiệu quả thì chúng là công cụ tuyệt vời. Có một công cụ lập kế hoạch truy vấn và phân tích kế hoạch truy vấn ( EXPLAIN) chỉ lập kế hoạch hoặc lập kế hoạch và thực thi các lệnh ( EXPLAIN ANALYZE).

Và có một cuốn sách trực tuyến tuyệt vời: sử dụng chỉ số luke về việc sử dụng chỉ mục được đề xuất


4
Quy tắc của ngón tay cái là tốt đẹp, nhưng quá chung chung trong trường hợp này. Tôi đang tìm kiếm một công cụ / phép đo cụ thể sẽ đề xuất thêm / xóa chỉ mục dựa trên hành vi thời gian chạy thực tế của ứng dụng của tôi.
Gili

Có thể đây là công cụ bạn đang tìm kiếm: enterprisedb.com/products-service-training/products/
mẹo

1

Chọn quy tắc của ngón tay cái và làm theo chúng. Ví dụ, tôi luôn tạo một chỉ mục ở phía tham chiếu của khóa ngoại.

Đảm bảo rằng bạn kiểm tra hiệu suất sản phẩm của mình theo các tiêu chí hiệu suất dựa trên nhu cầu của người dùng. Ví dụ, hệ thống cần xử lý tải đến 100 yêu cầu POST loại X mỗi phút.

Nếu bạn không thể đáp ứng các yêu cầu về hiệu suất của mình thì hãy tinh chỉnh mô hình của bạn, có thể phá vỡ quy tắc ngón tay cái của bạn trong quy trình đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.