Lấy số liệu thống kê của các truy vấn chạy chậm


10

Ứng dụng cơ sở dữ liệu của tôi chạy nhiều truy vấn khác nhau. Tôi đã đặt log_min_duration_statementthành 1000. Nhưng các truy vấn được ghi lại ở đó không phải lúc nào cũng chậm, hầu hết chúng chỉ mất vài ms.

Có thể lấy số liệu thống kê của tất cả các truy vấn không và tần suất chúng mất hơn 1000ms?


1
Xem nếu điều đó giúp: cài đặt log_min_duration_statement bị bỏ qua . Hoặc bạn quên tải lại cấu hình sau khi thay đổi cài đặt.
Daniel Vérité

Câu trả lời:


11

Cài đặt phần mở rộng pg_stat_statements bằng lệnh SQL

CREATE EXTENSION pg_stat_statements

Bạn có thể muốn đảm bảo rằng bạn tạo điều này bằng cách sử dụng một người dùng thích hợp (chẳng hạn như người dùng mà ứng dụng của bạn sử dụng hoặc một số tài khoản dba). Xin lưu ý rằng bất kỳ người dùng nào tạo tiện ích mở rộng cũng sẽ sở hữu nó.

Điều này sẽ yêu cầu khởi động lại máy chủ để có thể sử dụng được (vì bạn phải thay đổi cấu hình trong postgresql.conf một chút nhỏ ảnh hưởng đến mức tiêu thụ bộ nhớ), nhưng nó sẽ cung cấp cho bạn số liệu thống kê về tất cả các truy vấn.

Vui lòng xem trang tài liệu để biết thêm thông tin về những gì pg_stat_statements cung cấp. Xem ở đây để tham khảo nhanh về cấu hình của tệp cấu hình postgresql.conf cho pg_stat_statements.

Khi bạn đã cài đặt và chạy, bạn có thể xem số liệu thống kê bằng cách truy vấn chế độ xem pg_stat_statements ..

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..

2

Cách @JoishiBodio cho biết bạn có thể sử dụng pg_stat_statementstiện ích mở rộng để xem thống kê truy vấn chậm. Đối với những người đấu tranh với cài đặt (như tôi đã làm):

  1. Kiểm tra xem pg_stat_statementstrong danh sách các tiện ích mở rộng có sẵn:

    SELECT * FROM pg_available_extensions;
  2. Hãy thử cài đặt postgresql-contribgói thông qua trình quản lý gói hệ thống của bạn, trên Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Sau đó làm lại bước 1.

  1. Thêm pg_stat_statementsvào shared_preload_librariestrong cấu hình PostgreSQL:

thông qua postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

thông qua các đối số dòng lệnh (không có dấu ngoặc kép!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Sau đó tạo phần mở rộng trong cơ sở dữ liệu:

    CREATE EXTENSION pg_stat_statements;
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.