tỷ lệ kèo bóng đá 9.1.24 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 27. Giám sát hoạt động cơ sở dữ liệu | NEXT |
tỷ lệ kèo bóng đá9702_9886
Một số điểm thăm dò hoặc điểm theo dõi đã được đưa vào Mã nguồn. tỷ lệ kèo bóng đá đầ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, tỷ lệ kèo bóng đá đầu dò không Được biên dịch thànhtỷ lệ kèo bóng đá; tỷ lệ kèo bóng đá 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ể tỷ lệ kèo bóng đá hệ điều hành khác. TheSystemTapDự án cho Linux cũng cung cấp một DTRACE tương đương. Hỗ trợ tỷ lệ kèo bóng đá tiện ích theo dõi động khác về mặt lý thuyết là có thể bởi Thay đổi tỷ lệ kèo bóng đá định nghĩa cho tỷ lệ kèo bóng đá macro trongSRC/bao gồm/Utils/Probes.h.
Theo mặc định, tỷ lệ kèo bóng đá đầ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 tỷ lệ kèo bóng đá đầu dò Có sẵn trongtỷ lệ kèo bóng đá. ĐẾ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-3;Bảng 27-4Hiển thị tỷ lệ kèo bóng đá loại được sử dụng trong tỷ lệ kèo bóng đá đầu dò. Nhiều đầu dò hơn chắc chắn có thể được thêm vào để tăng cườngtỷ lệ kèo bóng đá
Bảng 27-3. tỷ lệ kèo bóng đá đầu dò DTRACE tích hợp
tên | tham số | Mô tả |
---|---|---|
giao dịch-khởi động | (LocalTransactionId) | Đầu dò bắn tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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ý tỷ lệ kèo bóng đá vấn là bắt đầu. arg0 là chuỗi tỷ lệ kèo bóng đá vấn. |
Query-Done | (const char *) | Đầu dò bắn khi xử lý tỷ lệ kèo bóng đá vấn là hoàn thành. arg0 là chuỗi tỷ lệ kèo bóng đá vấn. |
Query-Parse-Start | (const char *) | Đầu dò bắn khi phân tích cú pháp tỷ lệ kèo bóng đá vấn là bắt đầu. arg0 là chuỗi tỷ lệ kèo bóng đá vấn. |
Query-Parse-Done | (const char *) | Đầu dò bắn khi phân tích cú pháp tỷ lệ kèo bóng đá vấn là hoàn thành. arg0 là chuỗi tỷ lệ kèo bóng đá vấn. |
Query-rewrite-start | (const char *) | Đầu dò bắn khi viết lại tỷ lệ kèo bóng đá vấn là bắt đầu. arg0 là chuỗi tỷ lệ kèo bóng đá vấn. |
Query-rewrite-Done | (const char *) | Đầu dò bắn khi viết lại tỷ lệ kèo bóng đá vấn là hoàn thành. arg0 là chuỗi tỷ lệ kèo bóng đá vấn. |
Query-Plan-Start | () | Đầu dò bắn khi lập kế hoạch tỷ lệ kèo bóng đá vấn là bắt đầu. |
Query-Plan-Done | () | Đầu dò bắn khi lập kế hoạch tỷ lệ kèo bóng đá vấn là hoàn thành. |
Query-Execute-Start | () | Đầu dò bắn khi thực hiện tỷ lệ kèo bóng đá vấn là bắt đầu. |
15005_15025 | () | Đầu dò bắn khi thực hiện tỷ lệ kèo bóng đá vấn là hoàn thành. |
Statement-Status | (const char *) | Đầu dò bắn bất cứ lúc nào quá trình máy chủ cập nhật của nópg_stat_activity.15435_15450trạng thái. arg0 là Chuỗi trạng thái mới. |
điểm kiểm tra-start | (int) | Đầu dò bắn tỷ lệ kèo bóng đá đ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 tỷ lệ kèo bóng đá 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) | Đầu dò bắn tỷ lệ kèo bóng đá phần tắc 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. |
CLOG-Checkpoint-Done | (bool) | Đầu dò bắn tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá phần multixact 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) | 17873_18032 |
Buffer-Checkpoint-Start | (int) | Đầu dò bắn tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá chúng ta bắt đầu viết bẩn bộ đệm trong quá trình kiểm tra (sau tỷ lệ kèo bóng đá 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) | 19167_19571 |
Buffer-Checkpoint-sync-start | () | Đầu dò bắn sau tỷ lệ kèo bóng đá bộ đệm bẩn đã được viết cho kernel, và trước tỷ lệ kèo bóng đá bắt đầu phát hành fsync yêu cầu. |
Buffer-Checkpoint-Done | () | Đầu dò bắn tỷ lệ kèo bóng đá đồng bộ hóa bộ đệm với đĩa hoàn thành. |
Twophase-Checkpoint-Start | () | Đầu dò bắn tỷ lệ kèo bóng đá phần hai pha của a điểm kiểm tra được bắt đầu. |
Twophase-Checkpoint-Done | () | Đầu dò bắn tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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. |
Buffer-Read-Done | bool) | Đầu dò bắn tỷ lệ kèo bóng đá bộ đệm đọc hoàn tất. arg0 và arg1 chứa các nĩa và số khối của trang (nếu đây là yêu cầu mở rộng quan hệ, Arg1 ngay bây giờ Chứa số khối của khối mới được thêm vào). Arg2, Arg3 và Arg4 chứa không gian bảng, cơ sở dữ liệu, và các oids 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 Đối với bộ đệm cục bộ hoặc không hợp lệ (-1) 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. arg7 là đúng nếu bộ đệm đã được tìm thấy trong hồ bơi, sai nếu không. |
bộ đệm-flush-start | (forknumber, blocknumber, oid, oid, oid) | Đầu dò bắn trước tỷ lệ kèo bóng đá đư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) | 22693_22973 |
23025_23051 | (forknumber, blocknumber, oid, oid, oid) | Đầu dò bắn tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đáể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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá tỷ lệ kèo bóng đá quá trình máy chủ bắt đầu để viết mộ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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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) | 25837_26413 |
smgr-md-write-start | (forknumber, blocknumber, oid, oid, oid, int) | 26575_27006 |
smgr-md-write-Done | (forknumber, blocknumber, oid, oid, oid, int, int, int) | 27189_27769 |
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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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) | 29038_29203 |
lwlock-wait-start | (lwlockid, lwlockmode) | Đầu dò bắn tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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) | Đầu dò bắn tỷ lệ kèo bóng đá LWLOCK thành công có được tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá không khóa có được thành công tỷ lệ kèo bóng đá 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) | 30936_31285 |
Lock-Wait-Done | (unsign int, unsign int, unsign int, unsign int, unsign int, lockmode) | Đầu dò bắn tỷ lệ kèo bóng đá 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 | () | Đầu dò bắn tỷ lệ kèo bóng đá phát hiện đượ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 tỷ lệ kèo bóng đá kiểm tra hiệu suất:
#!/Usr/sbin/dtrace -Qs tỷ lệ kèo bóng đá $ 1 ::: Giao dịch-khởi đầu @Start ["Bắt đầu"] = Count (); tự ts = dấu thời gian; tỷ lệ kèo bóng đá $ 1 ::: Trao đổi-Abort @abort ["ABORT"] = Count (); tỷ lệ kèo bóng đá $ 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;
tỷ lệ kèo bóng đá được thực thi, tập lệnh D 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 ý:34299_34667
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 tỷ lệ kèo bóng đá, 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.
35141_35194DTRACE dự án.
tỷ lệ kèo bóng đá đầ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à tỷ lệ kèo bóng đá bước để chèn tỷ lệ kèo bóng đá đầu dò mới:
35712_35794
Thêm định nghĩa đầu dò vàoSRC/Backend/Utils/Probes.D
Bao gồmpg_trace.hNếu có chưa có trong (tỷ lệ kèo bóng đá) mô -đun chứa đầu dò điểm và chènTrace_PostgresqlMacro thăm dò tại Vị trí mong muốn trong mã nguồn
Tái kèm và xác minh rằng tỷ lệ kèo bóng đá đầ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ả tỷ lệ kèo bóng đá 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-Bắt đầulà tên của tài liệu cho người dùng.
37439_37458Giao dịchđược chuyển đổi thành macro gọi điệnTrace_Postgresql_Transaction_Start(Thông báo tỷ lệ kèo bóng đá 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:
Trace_Postgresql_Transaction_Start (vxid.localtransactionid);
Sau tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá thêm dấu vết macro cho mã c:
Bạn nên chăm sóc tỷ lệ kèo bóng đá loại dữ liệu được chỉ định cho a tham số của thăm dò phù hợp với tỷ lệ kèo bóng đá loại dữ liệu của tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá nền tảng, nếutỷ lệ kèo bóng đáđượ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ứ tỷ lệ kèo bóng đá nào kiểm soát đi qua macro,Ngay cả khi không tỷ lệ kèo bóng đá đ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 tỷ lệ kèo bóng đá đặ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.