Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12/11/10/9.6/9.5/9.4/9.3/9.2/9.1/9.0/8.4/8.3/8.2
Tài liệu 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 đá việt nam phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

28.5.kèo bóng đá việt nam

PostgreSQLCung cấp các cơ sở để hỗ trợ kèo bóng đá việt nam 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 các điểm cụ thể trong mã và do đó thực hiện theo dõi.

Một số đầu dò hoặc điểm theo dõi đã được chèn vào mã nguồn. kèo bóng đá việt nam đầu dò này được dự định sẽ được sử dụng bởi kèo bóng đá việt nam nhà phát triển và quản trị viên cơ sở dữ liệu.PostgreSQL; người dùng cần nói rõ ràng với tập lệnh cấu hình để cung cấp kèo bóng đá việt nam đầu dò.

Hiện tại,DTRACETiện ích được hỗ trợ, tại thời điểm viết bài này, có sẵn trên Solaris, MacOS, FreeBSD, NetBSD và Oracle Linux. TheSystemTapDự án cho Linux cung cấp tương đương DTRACE và cũng có thể được sử dụng. Hỗ trợ kèo bóng đá việt nam tiện ích theo dõi động khác là về mặt lý thuyết bằng cách thay đổi kèo bóng đá việt nam định nghĩa cho kèo bóng đá việt nam macro trongSRC/bao gồm/Utils/Probes.h.

28.5.1.Biên dịch để theo dõi động

Theo mặc định, kèo bóng đá việt nam đầu dò không khả dụng, vì vậy bạn sẽ cần phải nói rõ ràng với tập lệnh cấu hình để cung cấp kèo bóng đá việt nam đầu dò có sẵn trongPostgreSQL. Để bao gồm hỗ trợ DTRACE Chỉ định--Enable-dtraceĐể cấu hình. Nhìn thấyPhần 16.4Để biết thêm thông tin.

28.5.2.Đầu dò tích hợp

Một số đầu dò tiêu chuẩn được cung cấp trong mã nguồn, như trongBảng 28,23;Bảng 28.24Hiển thị kèo bóng đá việt nam loại được sử dụng trong kèo bóng đá việt nam đầu dò. Nhiều đầu dò chắc chắn có thể được thêm vào để tăng cườngPostgreSQL12501_12520

Bảng 28,23.kèo bóng đá việt nam đầ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 bóng đá việt nam 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 bóng đá việt nam 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 bóng đá việt nam 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 bóng đá việt nam vấn được bắt đầu. arg0 là chuỗi kèo bóng đá việt nam vấn.
kèo bóng đá việt nam vấn-Done (const char *) Đầu dò bắn khi xử lý hoàn tất kèo bóng đá việt nam vấn. arg0 là chuỗi kèo bóng đá việt nam vấn.
Query-Parse-Start (const char *) Đầu dò bắn khi phân tích cú pháp kèo bóng đá việt nam vấn được bắt đầu. arg0 là chuỗi kèo bóng đá việt nam vấn.
Query-parse-Done (const char *) Đầu dò bắn khi phân tích cú pháp kèo bóng đá việt nam vấn hoàn tất. arg0 là chuỗi kèo bóng đá việt nam vấn.
Query-rewrite-start (const char *) Đầu dò bắn khi viết lại kèo bóng đá việt nam vấn được bắt đầu. arg0 là chuỗi kèo bóng đá việt nam vấn.
Query-rewrite-Done (const char *) Đầu dò bắn khi viết lại kèo bóng đá việt nam vấn hoàn tất. arg0 là chuỗi kèo bóng đá việt nam vấn.
Query-Plan-Start () Đầu dò bắn khi lập kế hoạch kèo bóng đá việt nam vấn được bắt đầu.
Query-Plan-Done () Đầu dò bắn khi lập kế hoạch kèo bóng đá việt nam vấn hoàn tất.
Query-Execute-Start () Đầu dò bắn khi thực hiện kèo bóng đá việt nam vấn được bắt đầu.
Query-Execute-Done () Đầu dò bắn khi thực hiện kèo bóng đá việt nam vấn hoàn tất.
Statement-status (const char *) Đầu dò kèo bóng đá việt nam bất cứ lúc nào quá trình máy chủ cập nhậtpg_stat_activity.trạng thái. arg0 là chuỗi trạng thái mới.
điểm kiểm tra-start (int) Đầu dò bắn khi điểm kiểm tra được bắt đầu. Arg0 giữ kèo bóng đá việt nam cờ bitwise được sử dụng để phân biệt kèo bóng đá việt nam 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.
Checkpoint-Done (int, int, int, int, int) Đầu dò bắn khi hoàn thành điểm kiểm tra. (kèo bóng đá việt nam đầu dò được liệt kê tiếp theo trong chuỗi trong quá trình xử lý điểm kiểm tra.) Arg0 là số lượng bộ đệm được viết.
CLOG-Checkpoint-Start (bool) Đầu dò bắn kèo bóng đá việt nam phần tắc của điểm kiểm tra được bắt đầu. arg0 đúng với điểm kiểm tra bình thường, sai cho điểm kiểm tra tắt.
CLOG-Checkpoint-Done (bool) Đầu dò bắn kèo bóng đá việt nam phần tắc của một điểm kiểm tra hoàn tất. arg0 có cùng ý nghĩa vớiCLOG-Checkpoint-Start.
Subtrans-Checkpoint-Start (bool) Đầu dò bắn kèo bóng đá việt nam phần phụ của điểm kiểm tra được bắt đầu. arg0 đúng với điểm kiểm tra bình thường, sai cho điểm kiểm tra tắt.
Subtrans-Checkpoint-Done (bool) Đầu dò bắn kèo bóng đá việt nam phần phụ của điểm kiểm tra hoàn tất. arg0 có cùng ý nghĩa vớiSubtrans-Checkpoint-Start.
Multixact-Checkpoint-Start (bool) Đầu dò bắn kèo bóng đá việt nam phần multixact của điểm kiểm tra được bắt đầu. arg0 đúng với điểm kiểm tra bình thường, sai cho điểm kiểm tra tắt.
Multixact-Checkpoint-Done (bool) Đầu dò bắn kèo bóng đá việt nam phần multixact của điểm kiểm tra hoàn tất. arg0 có cùng ý nghĩa vớiMultixact-Checkpoint-Start.
Buffer-Checkpoint-Start (int) Đầu dò bắn khi phần viết bộ đệm của điểm kiểm tra được bắt đầu. Arg0 giữ kèo bóng đá việt nam cờ bitwise được sử dụng để phân biệt kèo bóng đá việt nam 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.
Buffer-sync-start (int, int) Đầu dò bắn kèo bóng đá việt nam chúng ta bắt đầu viết bộ đệm bẩn trong quá trình kiểm tra (sau kèo bóng đá việt nam xác định bộ đệm nào phải được viết). Arg0 là tổng số bộ đệm.
Buffer-sync-written (int) Đầu dò kèo bóng đá việt nam 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) Đầu dò bắn khi tất cả kèo bóng đá việt nam bộ đệm bẩn đã được viết. Arg0 là tổng số bộ đệm.Buffer-sync-start); Bất kỳ sự khác biệt nào phản ánh kèo bóng đá việt nam quá trình khác có bộ đệm trong quá trình kiểm tra.
Buffer-Checkpoint-sync-start () 19699_19815
Buffer-Checkpoint-Done () Đầu dò bắn kèo bóng đá việt nam đồng bộ hóa bộ đệm với đĩa hoàn tất.
Twophase-Checkpoint-Start () Đầu dò bắn kèo bóng đá việt nam phần hai pha của điểm kiểm tra được bắt đầu.
Twophase-Checkpoint-Done () Đầu dò bắn kèo bóng đá việt nam phần hai pha của điểm kiểm tra hoàn tất.
Buffer-read-start (forknumber, blocknumber, oid, oid, oid, int, bool) Đầu dò bắn khi bắt đầu đọc bộ đệm. Arg0 và Arg1 chứa kèo bóng đá việt nam nĩa và số khối của trang (nhưng Arg1 sẽ là -1 nếu đây là yêu cầu mở rộng quan hệ).không hợp lệ(-1) cho bộ đệm được chia sẻ. Arg6 đúng với yêu cầu mở rộng quan hệ, sai cho đọc bình thường.
Buffer-Read-Done (forknumber, blocknumber, oid, oid, oid, int, bool, bool) Đầu dò bắn khi bộ đệm đọc hoàn tất. Arg0 và Arg1 chứa kèo bóng đá việt nam nĩa và số khối của trang (nếu đây là yêu cầu mở rộng quan hệ, ARG1 hiện chứa số khối của khối mới được thêm vào).(-1) cho bộ đệm được chia sẻ. Arg6 đúng với yêu cầu mở rộng quan hệ, sai cho đọc bình thường.
bộ đệm-flush-start (forknumber, blocknumber, oid, oid, oid) Đầu dò bắn trước kèo bóng đá việt nam đưa ra bất kỳ yêu cầu ghi nào cho bộ đệm chung. Arg0 và Arg1 chứa nĩa và số khối của trang.
Buffer-Flush-Done (forknumber, blocknumber, oid, oid, oid) Đầu dò bắn khi hoàn thành yêu cầu ghi. (Lưu ý rằng điều này chỉ phản ánh thời gian chuyển dữ liệu cho kernel; nó thường chưa được ghi vào đĩa.) kèo bóng đá việt nam đối số giống như đối vớibộ đệm-flush-start.
22684_22710 (forknumber, blocknumber, oid, oid, oid) Đầu dò bắn kèo bóng đá việt nam một quá trình máy chủ bắt đầu viế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 kèo bóng đá việt nam tham số điều khiển của người viết nền cần điều chỉnh.) ARG0 và ARG1 chứa 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à quan hệ oids xác định mối quan hệ.
Buffer-write-didt-done (forknumber, blocknumber, oid, oid, oid) Đầu dò bắn khi một bộ đệm bẩn hoàn tất. kèo bóng đá việt nam đối số giống như đối vớiBuffer-Write-Dirty-Start.
23589_23619 () Đầu dò kích hoạt kèo bóng đá việt nam một quy trình máy chủ bắt đầu viết bộ đệm Dirty Wal vì không còn không gian bộ đệm Wal. (Nếu điều này xảy ra thường xuyên, nó ngụ ý rằngWal_buffersquá nhỏ.)
Wal-Buffer-Write-Died-Done () Đầu dò bắn kèo bóng đá việt nam hoàn thành bộ đệm wal bẩn hoàn tất.
Wal-Insert (Char không dấu, Char không dấu) Đầu dò bắn kèo bóng đá việt nam bản ghi WAL được chèn. Arg0 là Trình quản lý tài nguyên (RMID) cho hồ sơ.
Wal-Switch () Đầu dò bắn kèo bóng đá việt nam yêu cầu chuyển đổi phân đoạn Wal.
smgr-md-read-start (forknumber, blocknumber, oid, oid, oid, int) Đầu dò bắn kèo bóng đá việt nam bắt đầu đọc một khối từ một mối quan hệ. Arg0 và Arg1 chứa nĩa và số khối của trang.không hợp lệ(-1) cho bộ đệm được chia sẻ.
smgr-md-read-Done (forknumber, blocknumber, oid, oid, oid, int, int, int) Đầu dò bắn kèo bóng đá việt nam hoàn tất việc đọc khối. Arg0 và Arg1 chứa nĩa và số khối của trang.(-1) cho bộ đệm được chia sẻ. Arg6 là số byte thực sự đọc, trong kèo bóng đá việt nam Arg7 là số được yêu cầu (nếu những điều này khác nhau, nó chỉ ra sự cố).
smgr-md-write-start (forknumber, blocknumber, oid, oid, oid, int) Đầu dò bắn kèo bóng đá việt nam bắt đầu viết một khối vào một mối quan hệ. Arg0 và Arg1 chứa nĩa và số khối của trang.(-1) cho bộ đệm được chia sẻ.
smgr-md-write-Done (forknumber, blocknumber, oid, oid, oid, int, int, int) Đầu dò bắn kèo bóng đá việt nam ghi khối hoàn tất. Arg0 và Arg1 chứa nĩa và số khối của trang.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 bóng đá việt nam Arg7 là số được yêu cầu (nếu những điều này khác nhau, nó chỉ ra 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 kèo bóng đá việt nam loại, chỉ mục hoặc sắp xếp mốc.
Sort-Done (bool, dài) Đầu dò bắn kèo bóng đá việt nam sắp xếp hoàn thành. Arg0 đúng với loại bên ngoài, sai cho loại nội bộ.
lwlock-acquire (char *, lwlockmode) Đầu dò bắn kèo bóng đá việt nam có được LWLOCK. Arg0 là đợt của Lwlock.
LWLOCK-RELEASE (char *) 28130_28276
lwlock-wait-start (char *, lwlockmode) Đầu dò bắn kèo bóng đá việt nam không có LWLOCK ngay lập tức và quy trình máy chủ đã bắt đầu chờ khóa. Arg0 là đợt của Lwlock.
LWLOCK-WAIT-DONE (char *, lwlockmode) Đầu dò bắn kèo bóng đá việt nam một quy trình máy chủ đã được giải phóng khỏi sự chờ đợi của nó cho một LWLOCK (nó chưa thực sự có khóa). Arg0 là đợt của Lwlock.
LWLOCK-CONDACQUIRE (char *, lwlockmode) Đầu dò bắn kèo bóng đá việt nam LWLOCK có được thành công kèo bóng đá việt nam người gọi chỉ định không chờ đợi. Arg0 là đợt của Lwlock.
LWLOCK-CONDACQUIRE-Fail (char *, lwlockmode) Đầu dò bắn kèo bóng đá việt nam LWLOCK không có được thành công kèo bóng đá việt nam người gọi chỉ định không chờ đợi. Arg0 là đợt của Lwlock.
khóa-wait-start Đầu dò bắn khi yêu cầu khóa nặng (khóa LMGR) đã bắt đầu chờ vì khóa không có sẵn. Arg0 đến Arg3 là kèo bóng đá việt nam trường thẻ xác định đối tượng bị khóa.
Lock-Wait-Done (unsign int, unsign int, unsign int, unsign int, unsign int, lockmode) Đầu dò bắn khi yêu cầu khóa nặng (khóa LMGR) đã hoàn thành việc chờ đợi (tức là, đã có được khóa). kèo bóng đá việt nam đối số giống như đối vớiKhóa-Wait-Start.
Holdlock-Found () Đầu dò bắn kèo bóng đá việt nam bị bế tắc bởi máy dò bế tắc.

Bảng 28.24.kèo bóng đá việt nam loại được xác định được sử dụng trong tham số đầu dò

loại Định nghĩa
LocalTransactionId unsign int
lwlockmode int
Lockmode int
BlockNumber unsign int
OID unsign int
Forknumber int
bool Char

28.5.3.Sử dụng đầu dò

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, như là một giải pháp thay thế cho ảnh chụp nhanhPG_STAT_DATABASETrước và sau kèo bóng đá việt nam kiểm tra hiệu suất:

#!/Usr/sbin/dtrace -Qs

kèo bóng đá việt nam được thực thi, script ví dụ d cho đầu ra như:

# ./txn_count.d `pGrep -n postgres` hoặc.

Lưu ý

SystemTap sử dụng một ký hiệu khác cho kèo bóng đá việt nam tập lệnh theo dõi so với DTRACE, mặc dù kèo bóng đá việt nam điểm theo dõi cơ bản là tương thích. Một điểm đáng chú ý là tại bài viết này, kèo bóng đá việt nam tập lệnh SystemTap phải tham chiếu tên thăm dò bằng cách sử dụng dấu gạch dưới kép thay cho dấu gạch nối.

Bạn nên nhớ rằng kèo bóng đá việt nam tập lệnh DTRACE cần được viết và gỡ lỗi cẩn thận, nếu không thông tin theo dõi được thu thập có thể là vô nghĩa. Trong hầu hết kèo bóng đá việt nam trường hợp mà kèo bóng đá việt nam vấn đề được tìm thấy, đó là thiết bị có lỗi, không phải là hệ thống cơ bản.

28.5.4.Xác định đầu dò mới

kèo bóng đá việt nam đầ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 biên dịch lại. Dưới đây là kèo bóng đá việt nam bước để chèn kèo bóng đá việt nam đầu dò mới:

  1. Quyết định tên và dữ liệu thăm dò được cung cấp thông qua kèo bóng đá việt nam đầu dò

  2. Thêm định nghĩa đầu dò vàoSRC/Backend/Utils/Probes.D

  3. Bao gồmpg_trace.hNếu nó chưa có trong (kèo bóng đá việt nam) mô -đun chứa kèo bóng đá việt nam điểm thăm dò và chènTrace_PostgresqlMacro thăm dò tại kèo bóng đá việt nam vị trí mong muốn trong mã nguồn

  4. Recompile và xác minh rằng kèo bóng đá việt nam đầu dò mới có sẵn

Ví dụ:Đây là một ví dụ về cách bạn sẽ thêm một đầu dò để theo dõi tất cả kèo bóng đá việt nam giao dịch mới theo ID giao dịch.

  1. Quyết định rằng đầu dò sẽ được đặt tênGiao dịch-Bắt đầuvà yêu cầu tham số loạiLocalTransactionID

  2. 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 tên thăm dò. Trong tập lệnh DTRACE bằng cách sử dụng đầu dò, việc gạch chân kép cần được thay thế bằng dấu gạch nối, vì vậygiao dịch-khởi độnglà tên để tài liệu cho người dùng.

  3. Tại thời điểm biên dịch,Giao dịchđược chuyển đổi thành macro có tênTrace_Postgresql_Transaction_Start(Lưu ý kèo bóng đá việt nam dấu gạch dưới là độc thân ở đây), có sẵn bằng cách bao gồmpg_trace.h. Thêm cuộc gọi macro vào vị trí thích hợp trong mã nguồn.

    Trace_Postgresql_Transaction_Start (vxid.localtransactionid);
  4. Sau kèo bóng đá việt nam biên dịch lại và chạy nhị phân mới, hãy kiểm tra xem đầu dò mới được thêm vào của bạn có sẵn bằng cách thực hiện lệnh DTRACE sau không. Bạn sẽ thấy đầu ra tương tự:

    # DTRACE -LN giao dịch bắt đầu

Có một vài điều cần cẩn thận kèo bóng đá việt nam thêm macro theo dõi vào mã C:

  • Bạn nên cẩn thận rằng kèo bóng đá việt nam loại dữ liệu được chỉ định cho kèo bóng đá việt nam tham số của đầu dò phù hợp với kèo bóng đá việt nam loại dữ liệu của kèo bóng đá việt nam biến được sử dụng trong macro. Nếu không, bạn sẽ nhận được lỗi biên dịch.

  • Trên hầu hết kèo bóng đá việt nam nền tảng, nếuPOSTGRESQLđược xây dựng với--Enable-dtrace, kèo bóng đá việt nam đối số cho macro theo dõi sẽ được đánh giá bất cứ khi nào điều khiển đi qua macro,Ngay cả kèo bóng đá việt nam không có dấu vết nào được thực hiện. Điều này thường không đáng lo ngại nếu bạn chỉ báo cáo kèo bóng đá việt nam giá trị của một vài biến cục bộ.

    if (trace_postgresql_transaction_start_enables ()))

    Mỗi macro theo dõi có tương ứngĐã bậtMacro.