Làm thế nào tôi có thể thời gian truy vấn SQL bằng cách sử dụng psql?


173

Tôi muốn điểm chuẩn một số truy vấn SQL lại cơ sở dữ liệu PostgreSQL của tôi.Có cách nào để tôi có thể truy vấn SQL bằng cách sử dụng psql không?

+3

Để biết thêm chi tiết về điểm chuẩn truy vấn PostgreSQL: http://dba.stackexchange.com/q/42012/9622 15 may. 132013-05-15 22:29:39

236

Chỉ cần bật thời gian bằng cách nhập:

\timing

+1

Từ bash, tùy chọn "-c" của 'psql' không cho phép cài đặt này.Bạn có thể làm điều này với một cái gì đó như: '' 'psql --o/dev/null < 14 jul. 162016-07-14 17:38:46

+1

Hoặc làm 'psql -c '\ time' -c 'chọn 1'' 24 aug. 172017-08-24 02:11:57


60

Thời gian có thể được bật với \timing tại dấu nhắc psql (như Caleb đã nói).

Nếu bạn ở trên 8.4 trở lên, you can add an optional on/off argument to \timing , có thể hữu ích nếu bạn muốn có thể set timing on in .psqlrc - sau đó bạn có thể đặt \timing on một cách rõ ràng trong tập lệnh trong đó kịch bản \timing sẽ tắt

  0

http://www.designmagick.com/article/14/PostgreQuery-Query-Timing cung cấp "Truy cập bị từ chối." 22 sep. 172017-09-22 18:01:01


1

Thời gian \timing trả về cũng bao gồm độ trễ mạng, nếu bạn đang kết nối với máy chủ từ xa.

Khi bạn không muốn điều đó và cũng không cần đầu ra truy vấn, tốt hơn nên sử dụng EXPLAIN ANALYZE , đầu ra kế hoạch truy vấn với ước tính kế hoạch cộng với thời gian thực hiện thực tế.

ví dụ: EXPLAIN ANALYZE SELECT foo from bar ;

  0

... vấn đề duy nhất là bạn không nhận được đầu ra truy vấn bình thường. 17 nov. 172017-11-17 04:56:18

  0

Sử dụng 'giải thích phân tích' mang lại số lần xấp xỉ gấp đôi những gì tôi thấy khi sử dụng '\ time', điều này trái ngược với những gì tôi mong đợi dựa trên các nhận xét ở đây về độ trễ của mạng.Tôi nghi ngờ rằng có quá trình thực thi thông thường của 'analy' làm tăng thêm thời gian truy vấn.Dựa trên các tài liệu, tôi nghĩ rằng 'GIẢI THÍCH (PHÂN TÍCH, TẮT THỜI GIAN) CHỌN foo TỪ bar' sẽ cung cấp cho bạn thông tin về thời gian hữu ích hơn.Xem https://www.postgresql.org/docs/9.6/static/sql-explain.html để biết chi tiết. 05 dec. 172017-12-05 14:53:33