PostgreSQL 14通過libpq改進logging
PG14中增強了libpq功能,以跟蹤應(yīng)用程序的服務(wù)器/客戶端通信的可用性。它添加了新的選項控制輸出格式。
背景
libpq是客戶端庫之一,用戶可以運行PQtrace函數(shù)記錄客戶端-服務(wù)端通信。這個通信是PG使用的一種協(xié)議信息,包括:消息類型的標識符,消息長度,交換信息的消息內(nèi)容。
應(yīng)用開發(fā)者可以使用這個日志判斷通信是否按預(yù)期執(zhí)行。使用下面的的語句作為一個例子:
CREATE TABLESPACE regress_tblspacewith
LOCATION '/home/postgres/src/test/regress/testtablespace'
WITH (random_page_cost = 3.0);
PG13中調(diào)用PQtrace的應(yīng)用會輸出下面類型的日志到指定文件中:
PG13中l(wèi)ibpq產(chǎn)生的日志
需要注意,當(dāng)前PG版本的PQtrace日志輸出中不包含時間戳,因此不能作為參考分析慢查詢。另外,因為消息標識符、server/client消息長度、輸出內(nèi)容分別單獨一行,可靠性比較低,協(xié)議消息的分析比較困難。標記1的Z和C是協(xié)議消息的標識符。要了解每個標識符的含義,參考手冊中Message Formats部分
功能改進概述
PG14中,改進了PQtrace函數(shù),使得輸出的日志更具可讀性并且包含時間戳。添加了新的函數(shù)PQsetTraceFlags用以控制時間戳的輸出。
改進日志輸出
PG14中改進的trace函數(shù)產(chǎn)生了下面類似的輸出:
PG 14中l(wèi)ibpq產(chǎn)生的日志
1)包含了時間戳
2)消息方向的代碼更加直觀:F表示前端,B表示后端
3)輸出正式的消息名稱,而不是協(xié)議消息的標識符
4)有意義的協(xié)議消息以一行形式輸出
日志檢索方法
和以前一樣,通過調(diào)用libpq的PQtrace函數(shù)開始記錄日志。如果不需要輸出時間戳,可以通過PQsetTraceFlags函數(shù)控制。
影響
PQtrace輸出時間戳,可以幫助用戶識別慢查詢。如果應(yīng)用程序突然變慢,可以通過查看日志中時間戳差異來確定server或者client耗費了更長時間。有意義的協(xié)議消息以一行形式輸出,使得不熟悉lipq日志的人可以輕松了解server和client之間發(fā)送的通信。通過使用PQsetTraceFlags函數(shù)控制是否輸出時間戳,可以使用此日志進行回歸測試。通過不輸出時間戳,可以使用預(yù)期測試運行的結(jié)果填充日志,并輕松第將其與測試運行中得到的日志進行比較。
未來
PG14的libpq日志將包含時間戳和更具可讀性的文本。在后續(xù)版本中,我們會在下面幾個方面進一步提升可用性:
1) 當(dāng)前函數(shù)將日志寫入指定給PQtrace函數(shù)的文件。某些情況下,會使日志文件膨脹非常大,從而影響文件操作。為解決這個問題,我們希望提供一個功能來指定文件的最大大小。
2) 希望添加環(huán)境變量和連接參數(shù),以設(shè)置日志輸出的目錄位置,以及日志文件名來適應(yīng)環(huán)境,無需修改應(yīng)用程序。
審核編輯 :李倩
-
SQL
+關(guān)注
關(guān)注
1文章
768瀏覽量
44177 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3283瀏覽量
57759 -
日志
+關(guān)注
關(guān)注
0文章
138瀏覽量
10656
發(fā)布評論請先 登錄
相關(guān)推薦
評論