TheAuto_Explain
Mô -đun cung cấp một phương tiện để ghi lại kèo bóng đá pháp kế hoạch thực thi của kèo bóng đá pháp câu lệnh chậm, mà không phải chạyGiải thíchbằng tay. Điều này đặc biệt hữu ích để theo dõi kèo bóng đá pháp truy vấn không được tối ưu hóa trong kèo bóng đá pháp ứng dụng lớn.
Mô-đun không cung cấp kèo bóng đá pháp hàm có thể truy cập SQL. Để sử dụng nó, chỉ cần tải nó vào máy chủ. Bạn có thể tải nó vào một phiên riêng lẻ:
load 'auto_explain';
(Bạn phải là siêu nhân để làm điều đó.) Cách sử dụng điển hình hơn là tải nó vào một số hoặc tất cả kèo bóng đá pháp phiên bằng cách bao gồmauto_explain
insession_preload_l Librieshoặcshared_preload_l LibriesinPostgreSql.conf
. Sau đó, bạn có thể theo dõi kèo bóng đá pháp truy vấn chậm bất ngờ bất kể khi nào chúng xảy ra. Tất nhiên có một mức giá trên chi phí cho điều đó.
Có một số tham số cấu hình kiểm soát hành vi củaauto_explain
. Lưu ý rằng hành vi mặc định là không làm gì, vì vậy bạn phải đặt ít nhấtauto_explain.log_min_duration
Nếu bạn muốn bất kỳ kết quả nào.
auto_explain.log_min_duration
(11652_11661
)auto_explain.log_min_duration
là thời gian thực hiện tuyên bố tối thiểu, tính bằng mili giây, sẽ khiến kế hoạch của tuyên bố được ghi lại. Đặt cái kèo bóng đá pháp thành0
Nhật ký tất cả kèo bóng đá pháp gói.-1
(mặc định) vô hiệu hóa việc ghi nhật ký kèo bóng đá pháp kế hoạch. Ví dụ: nếu bạn đặt nó thành250ms
Sau đó, tất cả kèo bóng đá pháp câu lệnh chạy 250ms trở lên sẽ được ghi lại. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.log_analyze
(Boolean
)auto_explain.log_analyze
Nguyên nhânGiải thích Phân tích
đầu ra, thay vì chỉ12675_12684
12689_12822
12909_13126auto_explain.log_timing
cải thiện chi phí hiệu suất, với giá thu được ít thông tin hơn.
auto_explain.log_buffers
(Boolean
)auto_explain.log_buffers
Kiểm soát xem số liệu thống kê sử dụng bộ đệm có được in khi kế hoạch kèo bóng đá pháp thi được ghi lại hay không; nó tương đương vớibộ đệm
Tùy chọnGiải thích
. Tham số kèo bóng đá pháp không có hiệu lực trừ khiauto_explain.log_analyze
được bật. Tham số này bị tắt theo mặc định. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.log_timing
(Boolean
)auto_explain.log_timing
Kiểm soát xem thông tin thời gian mỗi nút được in khi kế hoạch kèo bóng đá pháp thi được ghi lại; nó tương đương vớiThời gian
Tùy chọnGiải thích
. Chi phí của việc đọc liên tục đồng hồ hệ thống có thể làm chậm kèo bóng đá pháp truy vấn đáng kể trên một số hệ thống, do đó, có thể hữu ích khi đặt tham số này thành TẮT khi chỉ cần số lượng hàng thực tế và không cần thời gian chính xác. Tham số này không có hiệu lực trừ khiauto_explain.log_analyze
được bật. Tham số này được bật theo mặc định. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.log_triggers
(Boolean
)auto_explain.log_triggers
gây ra thống kê thực thi kích hoạt được bao gồm khi một kế hoạch thực hiện được ghi lại. Tham số kèo bóng đá pháp không có hiệu lực trừ khiauto_explain.log_analyze
được bật. Tham số này bị tắt theo mặc định. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.log_verbose
(Boolean
)auto_explain.log_verbose
Kiểm soát xem kèo bóng đá pháp chi tiết dài dòng có được in khi kế hoạch thực thi được ghi lại hay không; nó tương đương vớiVerbose
Tùy chọnGiải thích
. Tham số này bị tắt theo mặc định. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.log_sinstall
(Boolean
)auto_explain.log_sinstall
16333_16640
auto_explain.log_format
(enum
)auto_explain.log_format
ChọnGiải thích
Định dạng đầu ra sẽ được sử dụng. kèo bóng đá pháp giá trị được phép làText
, XML
, json
vàYAML
. Mặc định là văn bản. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.log_level
(enum
)auto_explain.log_level
Chọn mức nhật ký tại đó Auto_Explain sẽ đăng nhập gói truy vấn. Giá trị hợp lệ làDEBUG5
, DEBUG4
, Debug3
, Debug2
, DEBUG1
, INFO
, Thông báo
, cảnh báo
vàlog
. Mặc định làlog
. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.log_nested_statements
(Boolean
)auto_explain.log_nested_statements
gây ra kèo bóng đá pháp câu lệnh lồng nhau (kèo bóng đá pháp câu lệnh được thực thi bên trong một hàm) được xem xét để ghi nhật ký. Khi nó tắt, chỉ có kèo bóng đá pháp kế hoạch truy vấn cấp cao nhất được ghi lại. Tham số này bị tắt theo mặc định. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.
auto_explain.sample_rate
(Real
)auto_explain.sample_rate
18944_19188
Trong cách sử dụng thông thường, kèo bóng đá pháp tham số này được đặt trongPostgreSql.conf
, mặc dù kèo bóng đá pháp siêu người dùng có thể thay đổi chúng khi đang bay trong kèo bóng đá pháp phiên riêng của họ. Cách sử dụng điển hình có thể là:
# postgresql.conf session_preload_l Librars = 'auto_explain' auto_explain.log_min_duration = '3S'
19798_20042
Điều kèo bóng đá pháp có thể tạo ra đầu ra nhật ký như:
Log: Thời lượng: 3.651 Kế hoạch MS: Truy vấn văn bản: Chọn Đếm (*) Từ pg_class, pg_index Trong đó oid = indrelid và indisunique; Tổng hợp (chi phí = 16,79..16,80 hàng = 1 chiều rộng = 0) (thời gian kèo bóng đá pháp tế = 3.626..3.627 hàng = 1 vòng lặp = 1) - Tham gia băm (chi phí = 4.17..16,55 hàng = 92 chiều rộng = 0) (thời gian kèo bóng đá pháp tế = 3.349..3.594 hàng = 92 vòng lặp = 1) Hash Cond: (pg_class.oid = pg_index.indrelid) - SEQ SCAN trên pg_class (chi phí = 0,00..9,55 hàng = 255 chiều rộng = 4) (thời gian kèo bóng đá pháp tế = 0,016..0.140 hàng = 255 vòng = 1) - băm (chi phí = 3.02..3.02 hàng = 92 chiều rộng = 4) (thời gian kèo bóng đá pháp tế = 3.238..3.238 hàng = 92 vòng = 1) Xô: 1024 lô: 1 Bộ nhớ Sử dụng: 4kb - SEQ SCAN trên pg_index (chi phí = 0,00..3.02 hàng = 92 chiều rộng = 4) (thời gian kèo bóng đá pháp tế = 0,008..3.187 hàng = 92 vòng = 1) Bộ lọc: Indisunique
Takahiro itagaki<itagaki.takahiro@oss.ntt.co.jp