Phiên bản được hỗ trợ:hiện tại(173665_379616 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
5346_545712 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4
Tài kèo bóng đá pháp này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong kèo bóng đá pháp phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

F.29. pg_stat_statements

Thepg_stat_statementsMô -đun cung cấp một phương tiện để theo dõi số liệu thống kê thực thi của tất cả kèo bóng đá pháp câu lệnh SQL được thực hiện bởi một máy chủ.

Mô -đun phải được tải bằng cách thêmpg_stat_statementsđếnshared_preload_l LibriesinPostgreSql.conf, vì nó yêu cầu bộ nhớ chia sẻ bổ sung. Điều này có nghĩa là cần khởi động lại máy chủ để thêm hoặc xóa mô -đun.

Khipg_stat_statementsđược tải, nó theo dõi số liệu thống kê trên tất cả kèo bóng đá pháp cơ sở dữ liệu của máy chủ. Để truy cập và thao tác kèo bóng đá pháp số liệu thống kê này, mô -đun cung cấp chế độ xem,pg_stat_statementsvà Chức năng tiện íchpg_stat_statements_resetpg_stat_statements. Chúng không có sẵn trên toàn cầu nhưng có thể được bật cho một cơ sở dữ kèo bóng đá pháp cụ thể vớiTạo tiện ích mở rộng pg_stat_statements.

F.29.1. Thepg_stat_statementsView

Thống kê được thu thập bởi mô -đun được cung cấp thông qua chế độ xem có tênpg_stat_statements. Chế độ xem này chứa một hàng cho mỗi ID cơ sở dữ liệu riêng biệt, ID người dùng và ID truy vấn (tối đa số lượng câu lệnh riêng biệt mà mô -đun có thể theo dõi). kèo bóng đá pháp cột của chế độ xem được hiển thị trongBảng F.21.

Bảng F.21.pg_stat_statementscột

tên loại Tài kèo bóng đá pháp tham khảo Mô tả
userID oid pg_authid.oid oid của người dùng đã thực thi câu lệnh
dbid oid pg_database.oid oid của cơ sở dữ kèo bóng đá pháp trong đó câu lệnh được thực thi
QueryID Bigint Mã băm nội bộ, được tính từ cây phân tích của câu lệnh
kèo bóng đá pháp Text Văn bản của một câu lệnh đại diện
cuộc gọi Bigint Số lần được thực hiện
Total_Time Double Precision Tổng thời gian dành cho tuyên bố, tính bằng mili giây
min_time Double Precision Thời gian tối thiểu dành cho tuyên bố, tính bằng mili giây
MAX_TIME Độ chính xác gấp đôi Thời gian tối đa dành cho tuyên bố, tính bằng mili giây
mean_time Độ chính xác gấp đôi Thời gian trung bình dành cho tuyên bố, tính bằng mili giây
stddev_time Double Precision Độ lệch chuẩn dân số của thời gian dành cho tuyên bố, tính bằng mili giây
hàng Bigint Tổng số hàng được truy xuất hoặc bị ảnh hưởng bởi câu lệnh
shared_blks_hit Bigint Tổng số lần truy cập bộ đệm khối được chia sẻ bởi câu lệnh
shared_blks_read Bigint Tổng số khối chia sẻ được đọc bởi câu lệnh
shared_blks_dirtied Bigint Tổng số khối được chia sẻ bị bẩn bởi câu lệnh
shared_blks_written Bigint 17032_17088
local_blks_hit Bigint Tổng số lần truy cập bộ đệm khối cục bộ bởi câu lệnh
local_blks_read Bigint Tổng số khối cục bộ được đọc bởi câu lệnh
local_blks_dirtied Bigint Tổng số khối cục bộ bị bẩn bởi câu lệnh
local_blks_written Bigint Tổng số khối cục bộ được viết bởi câu lệnh
18255_18271 Bigint Tổng số khối nhiệt độ được đọc bởi câu lệnh
TEMP_BLKS_WRITTEN Bigint Tổng số khối nhiệt độ được viết bởi câu lệnh
blk_read_time Double Precision Tổng thời gian tuyên bố dành cho kèo bóng đá pháp khối đọc, tính bằng mili giây (nếuTrack_io_timingđược bật, nếu không thì không)
blk_write_time Double Precision Tổng thời gian Tuyên bố dành cho kèo bóng đá pháp khối viết, tính bằng mili giây (nếuTrack_io_timingđược bật, nếu không thì không)

Vì lý do bảo mật, chỉ có siêu người dùng và thành viên củaPG_READ_ALL_STATSVai trò được phép xem văn bản SQL vàQueryIDcủa kèo bóng đá pháp truy vấn được thực hiện bởi những người dùng khác. Tuy nhiên, người dùng khác có thể thấy số liệu thống kê nếu chế độ xem đã được cài đặt trong cơ sở dữ liệu của họ.

kèo bóng đá pháp có thể thực hiện được (nghĩa làChọn, Chèn, Cập nhậtXóa) được kết hợp thành mộtpg_stat_statementsmục nhập bất cứ khi nào chúng có cấu trúc truy vấn giống hệt nhau theo tính toán băm nội bộ. Thông thường, hai truy vấn sẽ được coi là giống nhau cho mục đích này nếu chúng tương đương về mặt ngữ nghĩa ngoại trừ kèo bóng đá pháp giá trị của kèo bóng đá pháp hằng số theo nghĩa đen xuất hiện trong truy vấn. kèo bóng đá pháp lệnh tiện ích (nghĩa là tất cả kèo bóng đá pháp lệnh khác) được so sánh nghiêm ngặt trên cơ sở chuỗi truy vấn văn bản của chúng, tuy nhiên.

Khi giá trị của hằng số đã bị bỏ qua với mục đích khớp truy vấn với kèo bóng đá pháp truy vấn khác, hằng số được thay thế bằng ký hiệu tham số, chẳng hạn như$ 1, trongpg_stat_statementsHiển thị. Phần còn lại của văn bản kèo bóng đá pháp là của kèo bóng đá pháp đầu tiên có cụ thểQueryIDGiá trị băm liên quan đếnpg_stat_statementsEntry.

Trong một số trường hợp, kèo bóng đá pháp truy vấn có văn bản khác nhau rõ ràng có thể được hợp nhất thành mộtpg_stat_statementsmục nhập. Thông thường, điều này sẽ chỉ xảy ra đối với kèo bóng đá pháp truy vấn tương đương về mặt ngữ nghĩa, nhưng có một cơ hội nhỏ về kèo bóng đá pháp vụ va chạm băm khiến kèo bóng đá pháp truy vấn không liên quan được hợp nhất thành một mục. (Tuy nhiên, điều này không thể xảy ra đối với kèo bóng đá pháp truy vấn thuộc về người dùng hoặc cơ sở dữ liệu khác nhau.)

kể từQueryIDGiá trị băm được tính toán trên biểu diễn phân tích sau giả mạo của kèo bóng đá pháp truy vấn, thì điều ngược lại cũng có thể: kèo bóng đá pháp truy vấn với kèo bóng đá pháp văn bản giống hệt nhau có thể xuất hiện dưới dạng kèo bóng đá pháp mục riêng biệt, nếu chúng có ý nghĩa khác nhau do kèo bóng đá pháp yếu tố khác nhau nhưsearch_pathCài đặt.

Người tiêu dùngpg_stat_statementscó thể muốn sử dụngQueryID(có lẽ kết hợp vớiDBIDuserID) Là một định danh ổn định và đáng tin cậy hơn cho mỗi mục so với văn bản kèo bóng đá pháp của nó. Tuy nhiên, điều quan trọng là phải hiểu rằng chỉ có những đảm bảo hạn chế xung quanh sự ổn định củaQueryIDGiá trị băm. Do định danh có nguồn gốc từ cây phân tích sau phân tích sau, giá trị của nó là một hàm, trong số những thứ khác, kèo bóng đá pháp định danh đối tượng bên trong xuất hiện trong biểu diễn này. Điều này có một số ý nghĩa phản trực giác. Ví dụ,pg_stat_statements22629_22949QueryIDsẽ ổn định trên kèo bóng đá pháp phiên bản chính củaPostgreSQL.

Hai máy chủ tham gia sao chép dựa trên phát lại WAL vật lý có thể được dự kiến ​​sẽ giống hệt nhauqueryIDGiá trị cho cùng một truy vấn. Tuy nhiên, kèo bóng đá pháp sơ đồ sao chép logic không hứa hẹn sẽ giữ kèo bóng đá pháp bản sao giống hệt nhau trong tất cả kèo bóng đá pháp chi tiết liên quan, vì vậyQueryIDsẽ không phải là một định danh hữu ích để tích lũy chi phí trên một tập hợp kèo bóng đá pháp bản sao logic. Nếu nghi ngờ, thử nghiệm trực tiếp được khuyến nghị.

Nói chung, có thể giả định rằngQueryIDGiá trị ổn định giữa kèo bóng đá pháp bản phát hành phiên bản nhỏ củaPostgreSQL23718_23906

kèo bóng đá pháp ký hiệu tham số được sử dụng để thay thế kèo bóng đá pháp hằng số trong kèo bóng đá pháp văn bản truy vấn đại diện bắt đầu từ số tiếp theo sau khi cao nhất$ntham số trong văn bản kèo bóng đá pháp gốc hoặc$ 1Nếu không có. Điều đáng chú ý là trong một số trường hợp có thể có kèo bóng đá pháp ký hiệu tham số ẩn ảnh hưởng đến việc đánh số này. Ví dụ,PL/PGSQLSử dụng kèo bóng đá pháp ký hiệu tham số ẩn để chèn kèo bóng đá pháp giá trị của kèo bóng đá pháp biến cục bộ chức năng vào kèo bóng đá pháp truy vấn, để aPL/PGSQLcâu nhưChọn I + 1 vào Jsẽ có văn bản đại diện nhưChọn i + $ 2.

kèo bóng đá pháp văn bản truy vấn đại diện được giữ trong một tệp đĩa ngoài và không tiêu thụ bộ nhớ chia sẻ. Do đó, ngay cả kèo bóng đá pháp văn bản truy vấn rất dài cũng có thể được lưu trữ thành công. Tuy nhiên, nếu nhiều văn bản truy vấn dài được tích lũy, tệp bên ngoài có thể phát triển không thể quản lý lớn. Như một phương thức phục hồi nếu điều đó xảy ra,pg_stat_statementsCó thể chọn loại bỏ kèo bóng đá pháp văn bản truy vấn, trong đó tất cả kèo bóng đá pháp mục hiện có trongpg_stat_statementsXem sẽ hiển thị nullkèo bóng đá phápTrường, mặc dù kèo bóng đá pháp số liệu thống kê liên quan đến mỗiQueryIDđược bảo tồn. Nếu điều này xảy ra, hãy xem xét giảmpg_stat_statements.maxĐể ngăn chặn kèo bóng đá pháp đợt tái phát.

F.29.2. Chức năng

pg_stat_statements_reset (userid oid, dbid oid, queryId bigint) trả về void

pg_stat_statements_resetDiscards Thống kê được thu thập cho đến naypg_stat_statementsTương ứng với được chỉ địnhuserID, dbidQueryID. Nếu bất kỳ tham số nào không được chỉ định, giá trị mặc định0(không hợp lệ) được sử dụng cho mỗi người trong số chúng và kèo bóng đá pháp số liệu thống kê phù hợp với kèo bóng đá pháp tham số khác sẽ được đặt lại. Nếu không có tham số nào được chỉ định hoặc tất cả kèo bóng đá pháp tham số được chỉ định là0(không hợp lệ), nó sẽ loại bỏ tất cả kèo bóng đá pháp số liệu thống kê. Theo mặc định, chức năng này chỉ có thể được thực thi bởi kèo bóng đá pháp siêu người dùng. Truy cập có thể được cấp cho người khác bằng cách sử dụngGrant.

pg_stat_statements (showtext boolean) trả về setof record

Thepg_stat_statementsChế độ xem được xác định theo chức năng cũng có tênpg_stat_statements. Có thể cho khách hàng gọipg_stat_statementschức năng trực tiếp và bằng cách chỉ địnhshowText: = falseCó văn bản kèo bóng đá pháp bị bỏ qua (nghĩa làoutĐối số tương ứng với chế độ xemkèo bóng đá pháp27451_27736pg_stat_statementsBản thân nó cũng vậy, và sau đó truy xuất kèo bóng đá pháp văn bản truy vấn khi cần thiết. Vì máy chủ lưu trữ kèo bóng đá pháp văn bản truy vấn trong một tệp, cách tiếp cận này có thể làm giảm I/O vật lý để kiểm tra lặp lạipg_stat_statementsDữ kèo bóng đá pháp.

F.29.3. Tham số cấu hình

pg_stat_statements.max(Số nguyên)

pg_stat_statements.maxlà số lượng câu lệnh tối đa được theo dõi bởi mô -đun (nghĩa là, số lượng hàng tối đa trongpg_stat_statementsXem). Nếu kèo bóng đá pháp tuyên bố khác biệt hơn được quan sát, thông tin về kèo bóng đá pháp tuyên bố ít được thực hiện nhất bị loại bỏ. Giá trị mặc định là 5000. Tham số này chỉ có thể được đặt ở máy chủ bắt đầu.

pg_stat_statements.track(enum)

pg_stat_statements.trackKiểm soát câu lệnh nào được tính bởi mô -đun. Chỉ địnhTOPĐể theo dõi kèo bóng đá pháp câu lệnh cấp cao nhất (những câu hỏi trực tiếp được phát hành),tất cảĐể theo dõi kèo bóng đá pháp câu lệnh lồng nhau (chẳng hạn như kèo bóng đá pháp câu lệnh được gọi trong kèo bóng đá pháp chức năng) hoặcKhông29426_29494TOP. Chỉ kèo bóng đá pháp siêu người dùng mới có thể thay đổi cài đặt này.

pg_stat_statements.track_utility(Boolean)

pg_stat_statements.track_utilityKiểm soát xem kèo bóng đá pháp lệnh tiện ích có được theo dõi bởi mô -đun hay không. kèo bóng đá pháp lệnh tiện ích là tất cả kèo bóng đá pháp lệnh khác ngoàiChọn, Chèn, Cập nhậtXóa. Giá trị mặc định làtrê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.

pg_stat_statements.save(Boolean)

pg_stat_statements.saveChỉ định có lưu số liệu thống kê câu lệnh trên kèo bóng đá pháp lần tắt máy chủ hay không. Nếu đó làTẮTSau đó, số kèo bóng đá pháp thống kê không được lưu khi tắt máy cũng như không tải lại khi bắt đầu máy chủ. Giá trị mặc định làtrên. Tham số này chỉ có thể được đặt trongPostgreSql.confTệp hoặc trên dòng lệnh máy chủ.

Mô -đun yêu cầu bộ nhớ chia sẻ bổ sung theo tỷ lệpg_stat_statements.max. Lưu ý rằng bộ nhớ này được tiêu thụ bất cứ khi nào mô -đun được tải, ngay cả khipg_stat_statements.trackđược đặt thànhKhông.

kèo bóng đá pháp tham số này phải được đặt trongPostgreSql.conf. Cách sử dụng điển hình có thể là:

# Postgresql.conf
Shared_Preload_L Libries = 'PG_Stat_Statements'

pg_stat_statements.max = 10000
pg_stat_statements.track = all

F.29.4. Đầu ra mẫu

31601_35231

F.29.5. Tác giả

Takahiro itagaki. kèo bóng đá pháp chuẩn hóa được thêm bởi Peter Geoghegan.