kèo chấp bóng đá hôm nay 9.2.24 Tài liệu | ||||
---|---|---|---|---|
prev | UP | 9275_9323 | NEXT |
kèo chấp bóng đá hôm naycung cấp kèo chấp bóng đá hôm nay cơ sở để hỗ trợ theo dõi động của máy chủ cơ sở dữ liệu. Điều này cho phép một tiện ích bên ngoài được gọi tại kèo chấp bóng đá hôm nay điểm cụ thể trong mã và do đó thực hiện theo dõi.
Một số điểm thăm dò hoặc điểm theo dõi đã được đưa vào Mã nguồn. kèo chấp bóng đá hôm nay đầu dò này được dự định sẽ được sử dụng bởi cơ sở dữ liệu nhà phát triển và quản trị viên. Theo mặc định, kèo chấp bóng đá hôm nay đầu dò không Được biên dịch thànhkèo chấp bóng đá hôm nay; kèo chấp bóng đá hôm nay Người dùng cần phải nói rõ ràng với tập lệnh cấu hình để thực hiện đầu dò có sẵn.
Hiện tại, chỉDTRACETiện ích được hỗ trợ, có sẵn trên OpenSolaris, Solaris 10 và Mac OS X Leopard. Nó được mong đợi DTRACE sẽ có sẵn trong tương lai trên FreeBSD và Có thể kèo chấp bóng đá hôm nay hệ điều hành khác. TheSystemTapDự án cho Linux cũng cung cấp một DTRACE tương đương. Hỗ trợ kèo chấp bóng đá hôm nay tiện ích theo dõi động khác về mặt lý thuyết là có thể bởi Thay đổi kèo chấp bóng đá hôm nay định nghĩa cho kèo chấp bóng đá hôm nay macro trongSRC/bao gồm/Utils/Probes.h.
Theo mặc định, kèo chấp bóng đá hôm nay đầu dò không khả dụng, vì vậy bạn sẽ cần phải Nói rõ ràng cho tập lệnh cấu hình để tạo kèo chấp bóng đá hôm nay đầu dò Có sẵn trongkèo chấp bóng đá hôm nay. ĐẾN Bao gồm hỗ trợ DTRACE Chỉ định--Enable-dtraceĐể cấu hình. Nhìn thấyPhần 15.4Để biết thêm thông tin.
Một số đầu dò tiêu chuẩn được cung cấp trong mã nguồn, Như thể hiện trongBảng 27-15;Bảng 27-16Hiển thị kèo chấp bóng đá hôm nay loại được sử dụng trong kèo chấp bóng đá hôm nay đầu dò. Nhiều đầu dò hơn chắc chắn có thể được thêm vào để tăng cườngkèo chấp bóng đá hôm nay11899_11918
Bảng 27-15. kèo chấp bóng đá hôm nay đầu dò DTRACE tích hợp
tên | tham số | Mô tả |
---|---|---|
Giao dịch-khởi động | (LocalTransactionId) | Đầu dò bắn kèo chấp bóng đá hôm nay bắt đầu một giao dịch mới. arg0 là id giao dịch. |
giao dịch-commit | (LocalTransactionId) | Đầu dò bắn kèo chấp bóng đá hôm nay giao dịch hoàn thành thành công. arg0 là id giao dịch. |
Giao dịch-Abort | (LocalTransactionId) | Đầu dò bắn kèo chấp bóng đá hôm nay giao dịch hoàn thành không thành công. arg0 là id giao dịch. |
Query-Start | (const char *) | Đầu dò bắn kèo chấp bóng đá hôm nay xử lý truy vấn là bắt đầu. arg0 là chuỗi truy vấn. |
Truy vấn-Done | (const char *) | Đầu dò bắn kèo chấp bóng đá hôm nay xử lý truy vấn là hoàn thành. arg0 là chuỗi truy vấn. |
Query-Parse-Start | (const char *) | 13612_13708 |
Query-parse-Done | (const char *) | Đầu dò bắn kèo chấp bóng đá hôm nay phân tích cú pháp truy vấn là hoàn thành. arg0 là chuỗi truy vấn. |
Query-rewrite-start | (const char *) | Đầu dò bắn kèo chấp bóng đá hôm nay viết lại truy vấn là bắt đầu. arg0 là chuỗi truy vấn. |
Query-rewrite-Done | (const char *) | Đầu dò bắn kèo chấp bóng đá hôm nay viết lại truy vấn là hoàn thành. arg0 là chuỗi truy vấn. |
Query-Plan-Start | () | Đầu dò bắn kèo chấp bóng đá hôm nay lập kế hoạch truy vấn là bắt đầu. |
Query-Plan-Done | () | Đầu dò bắn kèo chấp bóng đá hôm nay lập kế hoạch truy vấn là hoàn thành. |
Query-Execute-Start | () | Đầu dò bắn kèo chấp bóng đá hôm nay thực hiện truy vấn là bắt đầu. |
Query-Execute-Done | () | Đầu dò bắn kèo chấp bóng đá hôm nay thực hiện truy vấn là hoàn thành. |
Statement-Status | (const char *) | Đầu dò kích hoạt bất cứ kèo chấp bóng đá hôm nay nào quá trình máy chủ cập nhật của nópg_stat_activity.trạng thái. Arg0 là trạng thái mới sợi dây. |
điểm kiểm tra-start | (int) | Đầu dò bắn kèo chấp bóng đá hôm nay điểm kiểm tra được bắt đầu. arg0 giữ các cờ bitwise được sử dụng để phân biệt các khác nhau Các loại điểm kiểm tra, chẳng hạn như tắt máy, ngay lập tức hoặc lực lượng. |
Checkpoint-Done | (int, int, int, int, int) | Đầu dò bắn kèo chấp bóng đá hôm nay hoàn tất điểm kiểm tra. (Các đầu dò được liệt kê tiếp theo trong chuỗi Xử lý điểm kiểm tra.) Arg0 là số bộ đệm viết. Arg1 là tổng số bộ đệm. arg2, arg3 và arg4 chứa số lượng tệp XLOG được thêm vào, Đã loại bỏ và tái chế tương ứng. |
CLOG-Checkpoint-Start | (bool) | 16430_16589 |
CLOG-Checkpoint-Done | (bool) | 16713_16862 |
Subtrans-Checkpoint-Start | (bool) | Đầu dò bắn kèo chấp bóng đá hôm nay phần con của A Điểm kiểm tra được bắt đầu. arg0 đúng với bình thường điểm kiểm tra, sai cho điểm kiểm tra tắt. |
Subtrans-Checkpoint-Done | (bool) | Đầu dò bắn kèo chấp bóng đá hôm nay phần con của A Checkpoint đã hoàn tất. arg0 có cùng ý nghĩa như cho Subtrans-Checkpoint-Start. |
Multixact-Checkpoint-Start | (bool) | Đầu dò bắn kèo chấp bóng đá hôm nay phần đa biến của A của A Điểm kiểm tra được bắt đầu. arg0 đúng với bình thường điểm kiểm tra, sai cho điểm kiểm tra tắt. |
Multixact-Checkpoint-Done | (bool) | Đầu dò bắn kèo chấp bóng đá hôm nay phần đa biến của A của A Checkpoint đã hoàn tất. arg0 có cùng ý nghĩa như cho multixact-checkpoint-start. |
Buffer-Checkpoint-Start | (int) | Đầu dò bắn kèo chấp bóng đá hôm nay phần viết bộ đệm của Một trạm kiểm soát được bắt đầu. Arg0 giữ các cờ bitwise được sử dụng để phân biệt các loại điểm kiểm tra khác nhau, chẳng hạn như tắt máy, ngay lập tức hoặc lực lượng. |
Buffer-sync-start | (int, int) | thăm dò bắn kèo chấp bóng đá hôm nay chúng ta bắt đầu viết bẩn bộ đệm trong quá trình kiểm tra (sau kèo chấp bóng đá hôm nay xác định Bộ đệm phải được viết). arg0 là tổng số bộ đệm. Arg1 là con số hiện đang bị bẩn và cần được viết. |
Buffer-sync-written | (int) | Đầu dò kèo chấp bóng đá hôm nay sau mỗi bộ đệm được viết Trong quá trình kiểm tra. arg0 là số ID của bộ đệm. |
Buffer-sync-Done | (int, int, int) | thăm dò bắn kèo chấp bóng đá hôm nay tất cả các bộ đệm bẩn đã được viết. Arg0 là tổng số bộ đệm. Arg1 là số lượng bộ đệm thực sự được viết bởi quá trình điểm kiểm tra. arg2 là số dự kiến sẽ được viết (arg1 của bộ đệm-sync-start); bất kì Sự khác biệt phản ánh các quá trình khác có bộ đệm xả Trong điểm kiểm tra. |
Buffer-Checkpoint-sync-start | () | Đầu dò bắn sau kèo chấp bóng đá hôm nay bộ đệm bẩn đã được viết cho kernel, và trước kèo chấp bóng đá hôm nay bắt đầu phát hành fsync yêu cầu. |
Buffer-Checkpoint-Done | () | Đầu dò bắn kèo chấp bóng đá hôm nay đồng bộ hóa bộ đệm với đĩa hoàn thành. |
Twophase-Checkpoint-Start | () | Đầu dò bắn kèo chấp bóng đá hôm nay phần hai pha của A điểm kiểm tra được bắt đầu. |
Twophase-Checkpoint-Done | () | Đầu dò bắn kèo chấp bóng đá hôm nay phần hai pha của a Điểm kiểm tra đã hoàn tất. |
Buffer-read-start | (forknumber, blocknumber, oid, oid, oid, int, bool) | Đầu dò bắn kèo chấp bóng đá hôm nay bắt đầu đọc bộ đệm. arg0 và arg1 chứa các nĩa và số khối của trang (nhưng arg1 sẽ là -1 nếu đây là mối quan hệ Yêu cầu mở rộng). arg2, arg3 và arg4 chứa không gian bảng, cơ sở dữ liệu và các OID quan hệ xác định mối quan hệ. Arg5 là ID của phần phụ trợ đã tạo ra mối quan hệ tạm thời cho bộ đệm cục bộ, hoặc Không hợp lệ (-1) cho bộ đệm được chia sẻ. Arg6 là đúng Đối với yêu cầu mở rộng quan hệ, sai cho bình thường đọc. |
21258_21276 | (forknumber, blocknumber, oid, oid, oid, int, bool, bool) | 21389_22090 |
bộ đệm-flush-start | 22183_22225 | Đầu dò bắn trước kèo chấp bóng đá hôm nay đưa ra bất kỳ yêu cầu ghi nào Đối với một bộ đệm được chia sẻ. arg0 và arg1 chứa nĩa và khối số của trang. arg2, arg3 và arg4 chứa không gian bảng, cơ sở dữ liệu và các OID quan hệ xác định mối quan hệ. |
Buffer-Flush-Done | (forknumber, blocknumber, oid, oid, oid) | Đầu dò bắn kèo chấp bóng đá hôm nay hoàn thành yêu cầu ghi. (Lưu ý rằng điều này chỉ phản ánh thời gian để truyền dữ liệu đến hạt nhân; Nó thường không thực sự được viết để đĩa chưa.) Các đối số giống như đối với bộ đệm-flush-start. |
23014_23040 | 23061_23103 | Đầu dò bắn kèo chấp bóng đá hôm nay quá trình máy chủ bắt đầu Viết một bộ đệm bẩn. (Nếu điều này xảy ra thường xuyên, nó ngụ ý rằngShared_buffersquá nhỏ hoặc các tham số điều kèo chấp bóng đá hôm nayển bgwriter cần Điều chỉnh.) Arg0 và Arg1 chứa ngã ba và khối số của trang. arg2, arg3 và arg4 chứa không gian bảng, cơ sở dữ liệu và các OID quan hệ xác định mối quan hệ. |
Buffer-write-didt-done | (forknumber, blocknumber, oid, oid, oid) | Đầu dò bắn kèo chấp bóng đá hôm nay viết Buffer bẩn hoàn thành. Các đối số giống như đối với bộ đệm-write-dirty-start. |
Wal-Buffer-Write-Dirty-Start | () | Đầu dò bắn kèo chấp bóng đá hôm nay quá trình máy chủ bắt đầu Viết bộ đệm wal bẩn vì không còn bộ đệm wal Không gian có sẵn. (Nếu điều này xảy ra thường xuyên, nó ngụ ý cái đóWal_buffersquá nhỏ.) |
Wal-Buffer-Write-Dast-Done | () | Đầu dò bắn kèo chấp bóng đá hôm nay viết bộ đệm wal bẩn hoàn thành. |
xlog-insert | (Char không dấu, Char không dấu) | Đầu dò bắn kèo chấp bóng đá hôm nay bản ghi WAL được chèn. Arg0 là Trình quản lý tài nguyên (RMID) cho hồ sơ. Arg1 chứa các cờ thông tin. |
XLOG-SWITCH | () | Đầu dò bắn kèo chấp bóng đá hôm nay chuyển đổi phân đoạn Wal được yêu cầu. |
smgr-md-read-start | (forknumber, blocknumber, oid, oid, oid, int) | Đầu dò bắn kèo chấp bóng đá hôm nay bắt đầu đọc một khối từ một mối quan hệ. arg0 và arg1 chứa nĩa và khối số của trang. arg2, arg3 và arg4 chứa không gian bảng, cơ sở dữ liệu và các OID quan hệ xác định mối quan hệ. Arg5 là ID của phần phụ trợ tạo mối quan hệ tạm thời cho bộ đệm cục bộ hoặc Không hợp lệ |
smgr-md-read-Done | (forknumber, blocknumber, oid, oid, oid, int, int, int) | 25821_26397 |
smgr-md-write-start | (forknumber, blocknumber, oid, oid, oid, int) | Đầu dò bắn kèo chấp bóng đá hôm nay bắt đầu viết một khối để một mối quan hệ. arg0 và arg1 chứa nĩa và khối số của trang. arg2, arg3 và arg4 chứa không gian bảng, cơ sở dữ liệu và các OID quan hệ xác định mối quan hệ. Arg5 là ID của phần phụ trợ đã tạo ra mối quan hệ tạm thời cho bộ đệm cục bộ, hoặc Không hợp lệ |
smgr-md-write-Done | (forknumber, blocknumber, oid, oid, oid, int, int, int) | Đầu dò bắn kèo chấp bóng đá hôm nay ghi khối hoàn tất. arg0 và arg1 chứa các nĩa và số khối của trang. Arg2, Arg3 và Arg4 chứa không gian bảng, Cơ sở dữ liệu và các OID quan hệ xác định mối quan hệ. arg5 là ID của phần phụ trợ đã tạo ra quan hệ tạm thời cho một bộ đệm cục bộ, hoặc Không hợp lệ (-1) cho bộ đệm được chia sẻ. Arg6 là Số byte thực sự được viết, trong kèo chấp bóng đá hôm nay Arg7 là số được yêu cầu (nếu những điều này khác nhau, nó chỉ ra rắc rối). |
Sắp xếp bắt đầu | (int, bool, int, int, bool) | 27888_28238 |
Sort-Done | (bool, dài) | Đầu dò bắn kèo chấp bóng đá hôm nay sắp xếp hoàn thành. arg0 là Đúng cho loại bên ngoài, sai cho loại nội bộ. Arg1 là số lượng khối đĩa được sử dụng cho một loại bên ngoài, hoặc kilobyte của bộ nhớ được sử dụng cho một loại nội bộ. |
lwlock-acquire | (lwlockid, lwlockmode) | Đầu dò bắn kèo chấp bóng đá hôm nay có được LWLOCK. Arg0 là id của lwlock. Arg1 là khóa được yêu cầu chế độ, độc quyền hoặc được chia sẻ. |
LWLOCK-RELEASE | (lwlockid) | Đầu dò bắn kèo chấp bóng đá hôm nay LWLOCK đã được phát hành (nhưng lưu ý rằng bất kỳ người phục vụ được phát hành nào chưa được thức tỉnh). arg0 là id của lwlock. |
lwlock-wait-start | (lwlockid, lwlockmode) | Đầu dò bắn kèo chấp bóng đá hôm nay LWLOCK không ngay lập tức Có sẵn và một quy trình máy chủ đã bắt đầu chờ đợi Khóa để trở nên có sẵn. Arg0 là id của lwlock. Arg1 là chế độ khóa được yêu cầu, độc quyền hoặc chia sẻ. |
LWLOCK-WAIT-DONE | (lwlockid, lwlockmode) | Đầu dò bắn kèo chấp bóng đá hôm nay quá trình máy chủ phát hành từ sự chờ đợi của nó cho một lwlock (nó không thực sự có khóa chưa). Arg0 là id của lwlock. Arg1 là chế độ khóa được yêu cầu, độc quyền hoặc chia sẻ. |
lwlock-condacquire | (lwlockid, lwlockmode) | 30130_30349 |
lwlock-condacquire-fail | (lwlockid, lwlockmode) | Đầu dò bắn kèo chấp bóng đá hôm nay không khóa có được thành công kèo chấp bóng đá hôm nay người gọi được chỉ định không chờ. Arg0 là id của lwlock. Arg1 là yêu cầu Chế độ khóa, độc quyền hoặc được chia sẻ. |
Khóa-Wait-Start | (unsign int, unsign int, unsign int, unsign int, unsign int, lockmode) | Đầu dò bắn kèo chấp bóng đá hôm nay yêu cầu một người nặng ký khóa (khóa LMGR) đã bắt đầu chờ vì khóa là Không có sẵn. arg0 đến arg3 là các trường thẻ Xác định đối tượng bị khóa. Arg4 chỉ ra loại đối tượng bị khóa. Arg5 chỉ ra khóa Loại được yêu cầu. |
Lock-Wait-Done | (unsign int, unsign int, unsign int, unsign int, unsign int, lockmode) | Đầu dò bắn kèo chấp bóng đá hôm nay yêu cầu đối với một hạng nặng Khóa (khóa LMGR) đã chờ hoàn thành (tức là, có có được khóa). Các đối số giống như đối với Khóa-Wait-Start. |
Holdlock-Found | () | 31794_31875 |
Ví dụ dưới đây hiển thị tập lệnh DTRACE để phân tích số lượng giao dịch trong hệ thống, thay thế cho Ảnh chụp nhanhPG_STAT_DATABASETrước và sau kèo chấp bóng đá hôm nay kiểm tra hiệu suất:
#!/Usr/sbin/dtrace -Qs kèo chấp bóng đá hôm nay $ 1 ::: Giao dịch-khởi đầu @Start ["Bắt đầu"] = Count (); tự ts = dấu thời gian; kèo chấp bóng đá hôm nay $ 1 ::: Trao đổi-Abort @abort ["ABORT"] = Count (); kèo chấp bóng đá hôm nay $ 1 ::: Giao dịch-commit /tự ts/ @Commit ["cam kết"] = Count (); @time ["Tổng thời gian (ns)"] = sum (dấu thời gian - tự ts); tự ts = 0;
kèo chấp bóng đá hôm nay được thực thi, tập lệnh D cho đầu ra như vậy BẰNG:
# ./txn_count.d `pGrep -n postgres` hoặc. ^C Bắt đầu 71 Cam kết 70 Tổng thời gian (ns) 2312105013
Lưu ý:SystemTap sử dụng một ký hiệu khác cho tập lệnh theo dõi hơn Dtrace, mặc dù cơ bản Điểm theo dõi là tương thích. Một điểm đáng chú ý là Tại bài viết này, kèo chấp bóng đá hôm nay tập lệnh SystemTap phải tham khảo đầu dò Tên sử dụng Double nhấn mạnh thay cho dấu gạch nối. Đây là dự kiến sẽ được sửa trong kèo chấp bóng đá hôm nay bản phát hành SystemTaP trong tương lai.
34694_35115
Có thể tìm thấy thêm kèo chấp bóng đá hôm nay tập lệnh trong PGFoundryDTRACE dự án.
kèo chấp bóng đá hôm nay đầu dò mới có thể được xác định trong mã bất cứ nơi nào Nhà phát triển mong muốn, mặc dù điều này sẽ yêu cầu tái biên. Dưới đây là kèo chấp bóng đá hôm nay bước để chèn kèo chấp bóng đá hôm nay đầu dò mới:
Quyết định tên và dữ liệu thăm dò được cung cấp thông qua kèo chấp bóng đá hôm nay đầu dò
Thêm định nghĩa đầu dò vàoSRC/Backend/Utils/Probes.D
Bao gồmpg_trace.hNếu có chưa có trong (kèo chấp bóng đá hôm nay) mô -đun chứa đầu dò điểm và chèn36169_36187Macros thăm dò tại Vị trí mong muốn trong mã nguồn
Tái kèm và xác minh rằng kèo chấp bóng đá hôm nay đầu dò mới là có sẵn
Ví dụ:Đây là một ví dụ về cách bạn sẽ thêm một thăm dò để theo dõi tất cả kèo chấp bóng đá hôm nay giao dịch mới theo ID giao dịch.
Quyết định rằng đầu dò sẽ được đặt têngiao dịch-khởi độngvà yêu cầu tham số của gõ locorTransactionId
Thêm định nghĩa đầu dò vàoSRC/Backend/Utils/Probes.D:
Giao dịch thăm dò artart (localTransactionId);
Lưu ý việc sử dụng gạch chân kép trong đầu dò tên. Trong tập lệnh dtrace bằng cách sử dụng đầu dò, đôi gạch chân cần được thay thế bằng dấu gạch nối, vì vậyGiao dịch-khởi độnglà tên của tài liệu cho người dùng.
Tại thời điểm biên dịch,Giao dịchđược chuyển đổi thành macro gọi điệnTrace_Postgresql_Transaction_Start(Thông báo kèo chấp bóng đá hôm nay dấu gạch dưới là độc thân ở đây), có sẵn bởi bao gồmpg_trace.h. Thêm cuộc gọi macro đến vị trí thích hợp trong nguồn mã số. Trong trường hợp này, nó trông giống như sau:
37912_37976
Sau kèo chấp bóng đá hôm nay biên dịch lại và chạy nhị phân mới, hãy kiểm tra rằng đầu dò mới được thêm vào của bạn có sẵn bằng cách thực thi theo lệnh dtrace. Bạn sẽ thấy tương tự đầu ra:
# DTRACE -LN Giao dịch -Bắt đầu Tên chức năng mô -đun nhà cung cấp ID 18705 Postgresql49878 Postgres StartTransactionCommand Giao dịch bắt đầu 18755 Postgresql49877 Postgres StartTransactionCommand Giao dịch bắt đầu 18805 Postgresql49876 Postgres StartTransactionCommand Giao dịch bắt đầu 18855 Postgresql49875 Postgre 18986 Postgresql49873 Postgres StartTransactionCommand Giao dịch-Bắt đầu
Có một vài điều cần cẩn thận kèo chấp bóng đá hôm nay thêm dấu vết macro cho mã c:
38936_39138
Trên hầu hết kèo chấp bóng đá hôm nay nền tảng, nếukèo chấp bóng đá hôm nayđược xây dựng với--Enable-dtrace, Các đối số cho một dấu vết macro sẽ được đánh giá bất cứ kèo chấp bóng đá hôm nay nào kiểm soát đi qua macro,Ngay cả kèo chấp bóng đá hôm nay không Truy tìm đang được thực hiện. Điều này thường không có giá trị lo lắng về việc nếu bạn chỉ báo cáo các giá trị của một Vài biến cục bộ. Nhưng hãy cẩn thận kèo chấp bóng đá hôm nay đặt đắt tiền chức năng gọi vào các đối số. Nếu bạn cần phải làm điều đó, xem xét bảo vệ macro bằng một tấm séc để xem liệu Trace thực sự được bật:
if (trace_postgresql_transaction_start_enables ())) Trace_Postgresql_Transaction_Start (some_function (...));
Mỗi macro theo dõi có tương ứngĐã bậtMacro.