Phiên bản không được hỗ trợ:7.0 / 6.5 / 6.4
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 đá cúp c2 phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Chương 27. kèo bóng đá cúp c2 pg_options

Lưu ý:Được đóng góp bởiMassimo Dal Zotto

Tệp tùy chọndata/kèo bóng đá cúp c2Chứa các tùy chọn thời gian chạy được kèo bóng đá cúp c2 bởi phụ trợ để kiểm soát dấu vết Tin nhắn và các tham số điều chỉnh phụ trợ khác. Điều gì làm cho tệp này Điều thú vị là thực tế là nó được đọc lại bởi một phụ trợ khi nó nhận được tín hiệu thở dài, do đó có thể thay đổi thời gian chạy Các tùy chọn trên đường bay mà không cần khởi động lạiPostgres. Các tùy chọn được chỉ định trong tệp này Có thể là các cờ gỡ lỗi được kèo bóng đá cúp c2 bởi gói theo dõi (Backend/Utils/Misc/Trace.C) hoặc tham số số có thể được kèo bóng đá cúp c2 bởi phụ trợ để kiểm soát hành vi của nó. Mới Tùy chọn và tham số phải được xác định trongBackend/Utils/Misc/Trace.Cphụ trợ/bao gồm/Utils/Trace.h.

Ví dụ, giả sử chúng ta muốn thêm tin nhắn theo dõi có điều kiện và tham số số có thể điều chỉnh cho mã trong tệpfoo.c. Tất cả những gì chúng ta cần làm là thêm hằng số Trace_foo và opt_foo_param thànhphụ trợ/bao gồm/Utils/Trace.h:

/ * Tệp theo dõi.h *//
enum pg_option_enum 
    ...
    Trace_foo, / * Trace Foo Function * /
    Opt_foo_param, / * tham số điều chỉnh foo * / /

    Num_pg_options / * phải là mục cuối cùng của enum * /
;
và một dòng tương ứng trongBackend/Utils/Misc/Trace.C:
/ * Tệp theo dõi.c *//
Tĩnh char *opt_names [] = 
    ...
    "foo", / * theo dõi kèo bóng đá cúp c2 chức năng foo * / /
    "fooparam" / * tham số điều chỉnh foo * / /
;
Tùy chọn trong hai tệp phải được chỉ định trong chính xác cùng một đơn đặt hàng. Trong kèo bóng đá cúp c2 tập tin nguồn foo, chúng tôi hiện có thể tham khảo mới Cờ với:
/ * Tệp foo.c *//
#include "Trace.h"
#Define foo_param kèo bóng đá cúp c2 [opt_foo_param]

int
foo_function (int x, int y)

    Tprintf (trace_foo, "Nhập foo_function, foo_param =%d", foo_param);
    if (foo_param 10) 
        do_more_foo (x, y);

Các tệp hiện có kèo bóng đá cúp c2 cờ theo dõi riêng tư có thể được thay đổi bằng cách Đơn giản chỉ cần thêm mã sau:

#include "Trace.h"
/* int my_own_flag = 0; -- LOẠI BỎ */
#define my_own_flag kèo bóng đá cúp c2 [opt_my_own_flag]

Tất cả kèo bóng đá cúp c2 pg_options được khởi tạo về 0 khi khởi động phụ trợ. Nếu chúng ta Cần một giá trị mặc định khác, chúng tôi phải thêm một số mã khởi tạo Vào đầu củaPostgresmain. Bây giờ chúng tôi có thể đặt foo_param và bật dấu vết của foo bằng cách ghi kèo bóng đá cúp c2 giá trị vào Thedata/kèo bóng đá cúp c2Tệp:

# Tệp kèo bóng đá cúp c2
...
foo = 1
fooparam = 17

kèo bóng đá cúp c2 tùy chọn mới sẽ được đọc bởi tất cả kèo bóng đá cúp c2 phụ trợ mới khi chúng là bắt đầu. Để thực hiện hiệu quả kèo bóng đá cúp c2 thay đổi cho tất cả kèo bóng đá cúp c2 phụ trợ chạy, chúng tôi Cần gửi một tiếng thở dài đến bưu điện. Tín hiệu sẽ là Tự động gửi đến tất cả kèo bóng đá cúp c2 phụ trợ. Chúng tôi cũng có thể kích hoạt chỉ thay đổi cho một phụ trợ cụ thể bằng cách gửi trực tiếp tiếng thở dài với nó.

kèo bóng đá cúp c2 cũng có thể được chỉ định với-TChuyển đổiPostgres:

PostgresTùy chọn-T "Verbose = 2, Truy vấn, hostlookup-"

Các chức năng được kèo bóng đá cúp c2 để in lỗi và tin nhắn gỡ lỗi có thể Bây giờ kèo bóng đá cúp c2syslog (2)Cơ sở. Tin nhắn được in vào stdout hoặc stderr được đặt trước bằng dấu thời gian cũng chứa pid phụ trợ:

#Timestamp #pid #Message
980127.17: 52: 14.173 [29271] StartTransactionCommand
980127.17: 52: 14.174 [29271] Quy trình: BẢNG TUYỆT VỜI T;
980127,17: 52: 14.186 [29271] Siincnumentries: Bảng đầy 70%
980127.17: 52: 14.186 [29286] async_notifyhandler
980127,17: 52: 14.186 [29286] thức dậy quá trình phụ trợ ngủ
980127,19: 52: 14.292 [29286] async_notifyfrontend
980127,19: 52: 14.413 [29286] async_notifyfrontend đã hoàn thành
980127,19: 52: 14.466 [29286] async_notifyhandler đã hoàn thành

Định dạng này cải thiện khả năng đọc nhật ký và cho phép mọi người để hiểu chính xác phụ trợ nào đang làm những gì và ở đó thời gian. Nó cũng giúp viết kèo bóng đá cúp c2 tập lệnh AWK hoặc Perl đơn giản hơn giám sát nhật ký nào để phát hiện lỗi cơ sở dữ liệu hoặc sự cố hoặc Tính toán thống kê thời gian giao dịch.

Tin nhắn được in vào syslog kèo bóng đá cúp c2 bộ phận nhật ký log_local0. Các Việc kèo bóng đá cúp c2 syslog có thể được kiểm soát với syslog pg_option. Thật không may, nhiều chức năng gọi trực tiếpprintf ()Để in tin nhắn của họ vào stdout hoặc stderr và đầu ra này không thể được chuyển hướng đến syslog hoặc có Dấu thời gian trong đó. Nó nên được khuyến khích là tất cả các cuộc gọi đến printf sẽ được thay thế bằng macro printf và đầu ra cho stderr be Thay vào đó đã thay đổi để kèo bóng đá cúp c2 EPRINTF để chúng ta có thể kiểm soát tất cả đầu ra trong một cách thống nhất.

Cơ chế kèo bóng đá cúp c2 mới thuận tiện hơn so với xác định chuyển đổi tùy chọn phụ trợ mới vì:

  • Chúng tôi không phải xác định một công tắc khác nhau cho mỗi thứ chúng tôi muốn kiểm soát. Tất cả kèo bóng đá cúp c2 tùy chọn được định nghĩa là từ khóa trong một Tệp bên ngoài được lưu trữ trong thư mục dữ liệu.

  • Chúng tôi không cần phải khởi động lạiPostgresĐể thay đổi cài đặt của một số lựa chọn. kèo bóng đá cúp c2 tùy chọn phụ trợ thường được chỉ định cho Bưu điện và chuyển cho mỗi phụ trợ khi nó được bắt đầu. Hiện nay chúng được đọc từ một tệp.

  • Chúng ta có thể thay đổi kèo bóng đá cúp c2 tùy chọn một cách nhanh chóng trong khi phần phụ trợ đang chạy. Do đó chúng tôi có thể điều tra một số vấn đề bằng cách kích hoạt gỡ lỗi Chỉ tin nhắn khi vấn đề xuất hiện. Chúng ta cũng có thể thử kèo bóng đá cúp c2 giá trị khác nhau cho kèo bóng đá cúp c2 tham số có thể điều chỉnh.

Định dạng củakèo bóng đá cúp c2Tệp là Như sau:

#bình luận
Tùy chọn=integer_value# Đặt giá trị choTùy chọn
Tùy chọn# setTùy chọn= 1Tùy chọn+ # setTùy chọn= 1Tùy chọn- # setTùy chọn= 0
Lưu ý rằngTừ khóacũng có thể viết tắt của tên tùy chọn được xác định trongBackend/Utils/Misc/Trace.C.

kèo bóng đá cúp c2 tùy chọn hiện được xác định trongBackend/Utils/Misc/Trace.Clà như sau:

tất cả

Cờ theo dõi toàn cầu. kèo bóng đá cúp c2 giá trị được phép là:

0

Tin nhắn theo dõi được bật riêng lẻ

1

Bật tất cả kèo bóng đá cúp c2 tin nhắn theo dõi

-1

Tắt tất cả kèo bóng đá cúp c2 tin nhắn theo dõi

Verbose

Cờ xác thực. kèo bóng đá cúp c2 giá trị được phép là:

0

Không có tin nhắn. Đây là mặc định.

1

in thông tin thông tin.

2

In thêm thông tin thông tin.

Truy vấn

Cờ Truy vấn truy vấn. kèo bóng đá cúp c2 giá trị được phép là:

0

không in truy vấn.

1

In truy vấn cô đọng trong một dòng.

4

In truy vấn đầy đủ.

kế hoạch

Kế hoạch truy vấn in.

Parse

Đầu ra trình phân tích cú pháp.

Viết lại

In Truy vấn viết lại.

Parserstats

Số liệu thống kê phân tích cú pháp.

plannerstats

Thống kê kế hoạch in.

ExecutorStats

Số liệu thống kê thực thi.

Shortlocks

hiện không được kèo bóng đá cúp c2 nhưng cần phải bật các tính năng trong tương lai.

Khóa

Khóa theo dõi.

userlocks

Khóa người dùng theo dõi.

spinlocks

Khóa spin theo dõi.

Thông báo

Trace Thông báo kèo bóng đá cúp c2 chức năng.

malloc

hiện không được kèo bóng đá cúp c2.

PalloC

hiện không được kèo bóng đá cúp c2.

lock_debug_oidmin

Mối quan hệ tối thiểu được theo dõi bởi khóa.

Lock_Debug_Relid

oid, nếu không phải là không, quan hệ được truy tìm bởi khóa.

lock_read_priority

hiện không được kèo bóng đá cúp c2.

deadlock_timeout

Hẹn giờ kiểm tra bế tắc.

syslog

Cờ syslog. kèo bóng đá cúp c2 giá trị được phép là:

0

Tin nhắn đến stdout/stderr.

1

Tin nhắn đến Stdout/Stderr và Syslog.

2

Tin nhắn chỉ đến syslog.

hostlookup

Kích hoạt Tra cứu tên máy chủ trong ps_status.

ShowPortNumber

Hiển thị số cổng trong ps_status.

notifyUnlock

Mở khóa PG_Listener sau khi thông báo.

Notifyhack

Xóa kèo bóng đá cúp c2 bộ đôi trùng lặp khỏi pg_listener.

Ví dụ: tệp pg_options của tôi chứa kèo bóng đá cúp c2 mục sau Giá trị:

Verbose = 2
truy vấn
hostlookup
ShowPortNumber

Một số mã hiện có kèo bóng đá cúp c2 các biến và tùy chọn riêng tư Các công tắc đã được thay đổi để kèo bóng đá cúp c2 tính năng pg_options, chủ yếu trongpostgres.c. Nó sẽ được nên sửa đổi tất cả kèo bóng đá cúp c2 mã hiện có theo cách này, để chúng tôi có thể Loại bỏ nhiều công tắc trênPostgresdòng lệnh và có thể có nhiều hơn kèo bóng đá cúp c2 tùy chọn có thể điều chỉnh với một vị trí duy nhất để đặt kèo bóng đá cúp c2 giá trị tùy chọn.