Làm thế nào để xem các truy vấn postgres chặn đầy đủ?


9

Tôi đang sử dụng một tuyên bố từ trang này để xem các truy vấn chặn trong Postgres

SELECT bl.pid                 AS blocked_pid,
         a.usename              AS blocked_user,
         ka.query               AS blocking_statement,
         now() - ka.query_start AS blocking_duration,
         kl.pid                 AS blocking_pid,
         ka.usename             AS blocking_user,
         a.query                AS blocked_statement,
         now() - a.query_start  AS blocked_duration
  FROM  pg_catalog.pg_locks         bl
   JOIN pg_catalog.pg_stat_activity a  ON a.pid = bl.pid
   JOIN pg_catalog.pg_locks         kl ON kl.transactionid = bl.transactionid AND kl.pid != bl.pid
   JOIN pg_catalog.pg_stat_activity ka ON ka.pid = kl.pid
  WHERE NOT bl.granted;

Tuy nhiên, các truy vấn bị cắt ngắn vì vậy tôi thường không thể thấy những gì trong WHEREmệnh đề khiến việc gỡ lỗi các vấn đề chặn này rất khó khăn. Có cài đặt nào để tôi có thể yêu cầu postgres đăng nhập toàn bộ truy vấn khôngpg_stat_activity

Câu trả lời:


11

Độ dài của truy vấn được theo dõi có thể được tìm thấy trong tham số track_activity_query_size.

18.8.1. Bộ sưu tập thống kê truy vấn và chỉ mục

track_activity_query_size (integer)

Chỉ định số lượng byte dành riêng để theo dõi lệnh hiện đang thực thi cho mỗi phiên hoạt động cho pg_stat_activity.current_querytrường. Giá trị mặc định là 1024 . Tham số này chỉ có thể được đặt khi máy chủ bắt đầu.

ví dụ: nếu bạn có track_activity_query_size=16384trong cấu hình của mình, thì điều này có nghĩa là văn bản truy vấn lên tới 16k sẽ được thu thập.


1
Chỉ để đảm bảo rằng nó rõ ràng (như đã nêu trong trích dẫn, có thể bị bỏ qua) .. thay đổi tùy chọn cấu hình đó sẽ yêu cầu khởi động lại máy chủ để nó có hiệu lực.
Joishi Bodio
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.