PostgreSQL 14通過(guò)libpq改進(jìn)logging
PG14中增強(qiáng)了libpq功能,以跟蹤應(yīng)用程序的服務(wù)器/客戶端通信的可用性。它添加了新的選項(xiàng)控制輸出格式。
背景
libpq是客戶端庫(kù)之一,用戶可以運(yùn)行PQtrace函數(shù)記錄客戶端-服務(wù)端通信。這個(gè)通信是PG使用的一種協(xié)議信息,包括:消息類型的標(biāo)識(shí)符,消息長(zhǎng)度,交換信息的消息內(nèi)容。
應(yīng)用開發(fā)者可以使用這個(gè)日志判斷通信是否按預(yù)期執(zhí)行。使用下面的的語(yǔ)句作為一個(gè)例子:
CREATE TABLESPACE regress_tblspacewith
LOCATION '/home/postgres/src/test/regress/testtablespace'
WITH (random_page_cost = 3.0);
PG13中調(diào)用PQtrace的應(yīng)用會(huì)輸出下面類型的日志到指定文件中:

PG13中l(wèi)ibpq產(chǎn)生的日志
需要注意,當(dāng)前PG版本的PQtrace日志輸出中不包含時(shí)間戳,因此不能作為參考分析慢查詢。另外,因?yàn)橄?biāo)識(shí)符、server/client消息長(zhǎng)度、輸出內(nèi)容分別單獨(dú)一行,可靠性比較低,協(xié)議消息的分析比較困難。標(biāo)記1的Z和C是協(xié)議消息的標(biāo)識(shí)符。要了解每個(gè)標(biāo)識(shí)符的含義,參考手冊(cè)中Message Formats部分
功能改進(jìn)概述
PG14中,改進(jìn)了PQtrace函數(shù),使得輸出的日志更具可讀性并且包含時(shí)間戳。添加了新的函數(shù)PQsetTraceFlags用以控制時(shí)間戳的輸出。
改進(jìn)日志輸出
PG14中改進(jìn)的trace函數(shù)產(chǎn)生了下面類似的輸出:

PG 14中l(wèi)ibpq產(chǎn)生的日志
1)包含了時(shí)間戳
2)消息方向的代碼更加直觀:F表示前端,B表示后端
3)輸出正式的消息名稱,而不是協(xié)議消息的標(biāo)識(shí)符
4)有意義的協(xié)議消息以一行形式輸出
日志檢索方法
和以前一樣,通過(guò)調(diào)用libpq的PQtrace函數(shù)開始記錄日志。如果不需要輸出時(shí)間戳,可以通過(guò)PQsetTraceFlags函數(shù)控制。
影響
PQtrace輸出時(shí)間戳,可以幫助用戶識(shí)別慢查詢。如果應(yīng)用程序突然變慢,可以通過(guò)查看日志中時(shí)間戳差異來(lái)確定server或者client耗費(fèi)了更長(zhǎng)時(shí)間。有意義的協(xié)議消息以一行形式輸出,使得不熟悉lipq日志的人可以輕松了解server和client之間發(fā)送的通信。通過(guò)使用PQsetTraceFlags函數(shù)控制是否輸出時(shí)間戳,可以使用此日志進(jìn)行回歸測(cè)試。通過(guò)不輸出時(shí)間戳,可以使用預(yù)期測(cè)試運(yùn)行的結(jié)果填充日志,并輕松第將其與測(cè)試運(yùn)行中得到的日志進(jìn)行比較。
未來(lái)
PG14的libpq日志將包含時(shí)間戳和更具可讀性的文本。在后續(xù)版本中,我們會(huì)在下面幾個(gè)方面進(jìn)一步提升可用性:
1) 當(dāng)前函數(shù)將日志寫入指定給PQtrace函數(shù)的文件。某些情況下,會(huì)使日志文件膨脹非常大,從而影響文件操作。為解決這個(gè)問(wèn)題,我們希望提供一個(gè)功能來(lái)指定文件的最大大小。
2) 希望添加環(huán)境變量和連接參數(shù),以設(shè)置日志輸出的目錄位置,以及日志文件名來(lái)適應(yīng)環(huán)境,無(wú)需修改應(yīng)用程序。
審核編輯 :李倩
-
SQL
+關(guān)注
關(guān)注
1文章
783瀏覽量
45108 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3333瀏覽量
59010 -
日志
+關(guān)注
關(guān)注
0文章
144瀏覽量
10863
發(fā)布評(píng)論請(qǐng)先 登錄
LTM8053怎么使用PG那個(gè)引腳?
rtthread控制STM32L476的PG7 PG8拉高拉低沒(méi)反應(yīng)是怎么回事?
展望PostgreSQL 18的新特性

用TPS65145給DMD供電時(shí),發(fā)現(xiàn)DMD不供電,PG腳始終為低為什么?
利用SSIS源、查找及目標(biāo)組件集成PostgreSQL數(shù)據(jù)至ETL流程

dbForge Studio for PostgreSQL:PostgreSQL數(shù)據(jù)庫(kù)多功能集成開發(fā)環(huán)境
PostgreSQL將不再支持MD5密碼
米爾-紫光PG2L100H國(guó)產(chǎn)FPGA開發(fā)板試用】按鍵功能測(cè)試報(bào)告
MySQL還能跟上PostgreSQL的步伐嗎

改進(jìn)的TPS61040/1過(guò)壓保護(hù)

如何使用長(zhǎng)USB電纜通過(guò)TPS25840-Q1設(shè)備改進(jìn)眼圖

使用TPS65033x-Q1通過(guò)CISPR-25輻射和傳導(dǎo)發(fā)射

如何使用USB充電器TPS2583x-Q1通過(guò)MFI VBUS規(guī)范

使用MSPM0通過(guò)I2C對(duì)BQ769x2進(jìn)行控制

在高速ADC中通過(guò)校準(zhǔn)改進(jìn)SFDR

評(píng)論