PostgreSQL PG14 cải thiện việc đăng nhập thông qua libpq

Cập nhật: 2/2023/XNUMX

PostgreSQL 14 cải thiện việc ghi nhật ký với libpq

Chức năng libpq đã được cải tiến trong PG14 để theo dõi tính khả dụng của giao tiếp máy chủ / ứng dụng khách. Nó thêm các tùy chọn mới để kiểm soát định dạng đầu ra.

lý lịch

libpq là một trong những thư viện máy khách, người dùng có thể chạy chức năng PQtrace để ghi lại giao tiếp máy khách-máy chủ. Giao tiếp này là một loại thông tin giao thức được sử dụng bởi PG, bao gồm: định danh của loại thông điệp, độ dài của thông điệp và nội dung thông báo của thông tin trao đổi.

Các nhà phát triển ứng dụng có thể sử dụng nhật ký này để xác định xem liệu giao tiếp có hoạt động như mong đợi hay không. Sử dụng câu lệnh sau làm ví dụ:

TẠO TABLESPACE regresstblspacewith

VỊ TRÍ '/ home / postgres / src / test / regression / testtablespace'

VỚI (ngẫu nhiên_trang_cost = 3.0) ;

Ứng dụng gọi PQtrace trong PG13 sẽ xuất các loại nhật ký sau vào tệp được chỉ định:

Nhật ký được tạo bởi libpq trong PG13

Cần lưu ý rằng đầu ra nhật ký PQtrace của phiên bản PG hiện tại không chứa dấu thời gian, vì vậy nó không thể được sử dụng làm tham chiếu để phân tích các truy vấn chậm. Ngoài ra, vì mã định danh thông điệp, độ dài thông điệp máy chủ / máy khách và nội dung đầu ra nằm trên một dòng riêng biệt, độ tin cậy tương đối thấp và việc phân tích thông báo giao thức khó khăn hơn. Z và C được đánh dấu 1 là các định danh của thông điệp giao thức. Để hiểu ý nghĩa của từng định danh, hãy tham khảo phần Định dạng Thông báo của sổ tay

Tổng quan về các cải tiến tính năng

Trong PG14, chức năng PQtrace đã được cải tiến để làm cho nhật ký đầu ra dễ đọc hơn và bao gồm dấu thời gian. Một chức năng mới PQsetTraceFlags đã được thêm vào để kiểm soát đầu ra của dấu thời gian.

Cải thiện đầu ra nhật ký

Chức năng theo dõi được cải tiến trong PG14 tạo ra đầu ra tương tự như sau:

Nhật ký được tạo bởi libpq trong PG 14

1) Chứa dấu thời gian

2) Mã của hướng thông báo trực quan hơn: F có nghĩa là giao diện người dùng, B có nghĩa là kết thúc sau

3) Xuất tên thông báo chính thức thay vì mã định danh của thông điệp giao thức

4) Thông báo giao thức có ý nghĩa được xuất trong một dòng

Phương pháp truy xuất nhật ký

Như trước đây, hãy bắt đầu ghi nhật ký bằng cách gọi hàm PQtrace của libpq. Nếu bạn không cần xuất dấu thời gian, bạn có thể kiểm soát nó thông qua chức năng PQsetTraceFlags.

Ảnh hưởng

PQtrace xuất ra dấu thời gian, có thể giúp người dùng xác định các truy vấn chậm. Nếu ứng dụng đột nhiên chậm lại, bạn có thể kiểm tra sự khác biệt về dấu thời gian trong nhật ký để xác định xem máy chủ hoặc máy khách mất nhiều thời gian hơn. Các thông điệp giao thức quan trọng được xuất ra trên một dòng, để những người không quen thuộc với nhật ký lipq có thể dễ dàng hiểu được thông tin liên lạc được gửi giữa máy chủ và máy khách. Bằng cách sử dụng hàm PQsetTraceFlags để kiểm soát xem có xuất ra dấu thời gian hay không, bạn có thể sử dụng nhật ký này để kiểm tra hồi quy. Bằng cách không xuất ra dấu thời gian, bạn có thể điền vào nhật ký các kết quả của quá trình chạy thử nghiệm dự kiến ​​và dễ dàng so sánh nó với nhật ký thu được trong quá trình chạy thử nghiệm.

tương lai

Nhật ký libpq của PG14 sẽ chứa tem thời gian và văn bản dễ đọc hơn. Trong các phiên bản tiếp theo, chúng tôi sẽ cải thiện hơn nữa khả năng sử dụng ở các khía cạnh sau:

1) Hàm hiện tại ghi nhật ký vào tệp được gán cho hàm PQtrace. Trong một số trường hợp, tệp nhật ký sẽ mở rộng rất nhiều, do đó ảnh hưởng đến hoạt động của tệp. Để giải quyết vấn đề này, chúng tôi hy vọng sẽ cung cấp một hàm để chỉ định kích thước tối đa của tệp.

2) Tôi hy vọng sẽ thêm các biến môi trường và tham số kết nối để đặt vị trí thư mục của đầu ra nhật ký và tên tệp nhật ký để thích ứng với môi trường mà không cần sửa đổi ứng dụng.

  Liên kết:

lq9p16e

nl8060bc3117e