kèo chấp bóng đá hôm nay 8.4.22 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 26. Giám sát hoạt động cơ sở dữ liệu | Chuyển tiếp nhanh | 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.
9944_10154kè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 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 nay11261_11303--Enable-dtraceđể cấu hình. Nhìn thấyPhần 15,5Để 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 26-3. Nhiều hơn chắc chắn có thể được thêm vào để tăng cườngkèo chấp bóng đá hôm nay11836_11855
Bảng 26-3. 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 vào đầ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 khi xử lý kèo chấp bóng đá hôm nay vấn là bắt đầu. arg0 là chuỗi kèo chấp bóng đá hôm nay vấn. |
kèo chấp bóng đá hôm nay vấn-Done | (const char *) | Đầu dò bắn khi xử lý kèo chấp bóng đá hôm nay vấn là hoàn thành. arg0 là chuỗi kèo chấp bóng đá hôm nay vấn. |
Query-Parse-Start | (const char *) | Đầu dò bắn khi phân tích cú pháp kèo chấp bóng đá hôm nay vấn là bắt đầu. arg0 là chuỗi kèo chấp bóng đá hôm nay vấn. |
Query-parse-Done | (const char *) | Đầu dò bắn khi phân tích cú pháp kèo chấp bóng đá hôm nay vấn là hoàn thành. arg0 là chuỗi kèo chấp bóng đá hôm nay vấn. |
Query-rewrite-start | (const char *) | Đầu dò bắn khi viết lại kèo chấp bóng đá hôm nay vấn là bắt đầu. arg0 là chuỗi kèo chấp bóng đá hôm nay vấn. |
Query-rewrite-Done | (const char *) | 14228_14327 |
Query-Plan-Start | () | 14443_14514 |
Query-Plan-Done | () | Đầu dò bắn khi lập kế hoạch kèo chấp bóng đá hôm nay vấn là hoàn thành. |
Query-Execute-Start | () | Đầu dò bắn khi thực hiện kèo chấp bóng đá hôm nay vấn là bắt đầu. |
Query-Execute-Done | () | Đầu dò bắn khi thực hiện kèo chấp bóng đá hôm nay 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.current_querytrạng thái. arg0 là Chuỗi trạng thái mới. |
đ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) | 16380_16539 |
CLOG-Checkpoint-Done | (bool) | Đầu dò bắn kèo chấp bóng đá hôm nay phần tắc của A của A Checkpoint đã hoàn tất. arg0 có cùng ý nghĩa như cho glog-checkpoint-start. |
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 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 multixact 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) | Đầu 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ò bắn 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) | 19106_19510 |
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, bool, 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 đúng với bộ đệm cục bộ, sai cho một bộ đệm chia sẻ. Arg6 đúng với một phần mở rộng quan hệ yêu cầu, sai cho đọc bình thường. |
Buffer-Read-Done | 21151_21223 | 21244_21860 |
bộ đệm-flush-start | (forknumber, blocknumber, oid, oid, oid) | Đầ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 khi yêu cầu ghi hoàn tất. (Lưu ý rằng điều này chỉ phản ánh thời gian để kèo chấp bóng đá hôm nayề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. |
22784_22810 | (forknumber, blocknumber, oid, oid, oid) | Đầ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 | () | 23837_24041Wal_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) | Đầ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ệ. |
smgr-md-read-Done | (forknumber, blocknumber, oid, oid, oid, int, int) | Đầu dò bắn kèo chấp bóng đá hôm nay hoàn tất việc đọc khối. 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à số byte thực sự đọc, trong kèo chấp bóng đá hôm nay Arg6 là số được yêu cầu (nếu những điều này là khác nhau biểu thị sự cố). |
smgr-md-write-start | (forknumber, blocknumber, oid, oid, oid) | Đầu dò bắn kèo chấp bóng đá hôm nay bắt đầu viết một khối thành 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ệ. |
smgr-md-write-Done | (forknumber, blocknumber, oid, oid, oid, 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à số byte thực sự được viết, trong kèo chấp bóng đá hôm nay Arg6 là số được yêu cầu (nếu những điều này khác nhau biểu thị sự cố). |
Sắp xếp bắt đầu | (int, bool, int, int, bool) | Đầu dò bắn khi hoạt động sắp xếp được bắt đầu. Arg0 chỉ ra các loại, chỉ mục hoặc sắp xếp mốc. Arg1 là đúng cho thực thi giá trị độc đáo. Arg2 là số khóa cột. Arg3 là số lượng kilobyte của bộ nhớ làm việc cho phép. arg4 là đúng nếu kèo chấp bóng đá hôm nay cập ngẫu nhiên vào loại Kết quả là bắt buộc. |
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) | 28833_29095 |
LWLOCK-CONDACQUIRE | (lwlockid, lwlockmode) | Đầu dò bắn kèo chấp bóng đá hôm nay LWLOCK thành công có được kèo chấp bóng đá hôm nay người gọi chỉ định không chờ đợi. arg0 là id của lwlock. Arg1 là chế độ khóa được yêu cầu, độc quyền hoặc được chia sẻ. |
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) | 30023_30372 |
Lock-Wait-Done | (unsign int, unsign int, unsign int, unsign int, unsign int, lockmode) | 30576_30783 |
Holdlock-Found | () | Đầu dò bắn kèo chấp bóng đá hôm nay bị bế tắc được tìm thấy bởi Máy dò bế tắc. |
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, Script ví dụ 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 gạch chân kép 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.
Bạn nên nhớ rằng các tập lệnh DTRACE cần phải được cẩn thận được viết và gỡ lỗi, nếu không thì thông tin theo dõi được thu thập có thể là vô nghĩa. Trong hầu hết các trường hợp mà các vấn đề được tìm thấy nó là công cụ có lỗi, không phải là cơ bản hệ thống. Khi thảo luận về thông tin được tìm thấy bằng cách sử dụng động kèo chấp bóng đá hôm nay, hãy chắc chắn gửi kèm theo tập lệnh được sử dụng để cho phép điều đó được kiểm tra và thảo luận.
34227_34280DTRACE 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ènTrace_PostgresQLMacros thăm dò tại Vị trí mong muốn trong mã nguồn
Recompile 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:
37019_37087
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 hiện 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:
Bạn nên chăm sóc kèo chấp bóng đá hôm nay loại dữ liệu được chỉ định cho a tham số của thăm dò phù hợp với kèo chấp bóng đá hôm nay loại dữ liệu của kèo chấp bóng đá hôm nay biến được sử dụng trong macro. Nếu không, bạn sẽ nhận được tổng hợp lỗi.
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ả khi không kèo chấp bóng đá hôm nay đang được thực hiện38616_38938
if (trace_postgresql_transaction_start_enables ())) Trace_Postgresql_Transaction_Start (some_function (...));
Mỗi macro theo dõi có tương ứngĐã bậtMacro.