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文章
807瀏覽量
46938 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3346瀏覽量
60420 -
日志
+關(guān)注
關(guān)注
0文章
149瀏覽量
11097
發(fā)布評(píng)論請(qǐng)先 登錄
變頻器過(guò)勵(lì)磁增益及軟件過(guò)流問(wèn)題
深入解析 onsemi NXH25T120L2Q1PG 3 - 相 TNPC 模塊
EFM32PG1微控制器:低功耗高性能的理想之選
EFM32PG1微控制器:低功耗高性能的理想之選
E1模擬器16針轉(zhuǎn)換適配器QB - F14T16 - 01使用指南
8N3PG10MBKI - 161:多功能LVPECL合成器的技術(shù)剖析
20W PC 待機(jī)電源設(shè)計(jì):TNY290PG 方案解析
5W充電器設(shè)計(jì)全解析:基于LNK616PG的高效方案
NineData 新增支持 MySQL 到 openGauss PostgreSQL 數(shù)據(jù)復(fù)制鏈路
PG-1000脈沖發(fā)生器在非易失性存儲(chǔ)器(NVM)及MOSFET測(cè)試的應(yīng)用
深入解析EFM32PG1微控制器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)
rtthread控制STM32L476的PG7 PG8拉高拉低沒反應(yīng)是怎么回事?
為什么無(wú)法將 PG.12、PG.13、PG.14 用作 NUC980 的 GPIO?
無(wú)刷直流電機(jī)軟起動(dòng)設(shè)計(jì)改進(jìn)
ESP32通過(guò)OTA無(wú)線局域網(wǎng)遠(yuǎn)程升級(jí)下載程序
PostgreSQL PG14通過(guò)libpq改進(jìn)logging
評(píng)論