PostgreSQL PG14通过libpq改进logging

postgresql 14通过libpq改进logging
pg14中增强了libpq功能,以跟踪应用程序的服务器/客户端通信的可用性。它添加了新的选项控制输出格式。
背景
libpq是客户端库之一,用户可以运行pqtrace函数记录客户端-服务端通信。这个通信是pg使用的一种协议信息,包括:消息类型的标识符,消息长度,交换信息的消息内容。
应用开发者可以使用这个日志判断通信是否按预期执行。使用下面的的语句作为一个例子:
create tablespace regress_tblspacewith
location '/home/postgres/src/test/regress/testtablespace'
with (random_page_cost = 3.0);
pg13中调用pqtrace的应用会输出下面类型的日志到指定文件中:
pg13中libpq产生的日志
需要注意,当前pg版本的pqtrace日志输出中不包含时间戳,因此不能作为参考分析慢查询。另外,因为消息标识符、server/client消息长度、输出内容分别单独一行,可靠性比较低,协议消息的分析比较困难。标记1的z和c是协议消息的标识符。要了解每个标识符的含义,参考手册中message formats部分
功能改进概述
pg14中,改进了pqtrace函数,使得输出的日志更具可读性并且包含时间戳。添加了新的函数pqsettraceflags用以控制时间戳的输出。
改进日志输出
pg14中改进的trace函数产生了下面类似的输出:
pg 14中libpq产生的日志
1)包含了时间戳
2)消息方向的代码更加直观:f表示前端,b表示后端
3)输出正式的消息名称,而不是协议消息的标识符
4)有意义的协议消息以一行形式输出
日志检索方法
和以前一样,通过调用libpq的pqtrace函数开始记录日志。如果不需要输出时间戳,可以通过pqsettraceflags函数控制。
影响
pqtrace输出时间戳,可以帮助用户识别慢查询。如果应用程序突然变慢,可以通过查看日志中时间戳差异来确定server或者client耗费了更长时间。有意义的协议消息以一行形式输出,使得不熟悉lipq日志的人可以轻松了解server和client之间发送的通信。通过使用pqsettraceflags函数控制是否输出时间戳,可以使用此日志进行回归测试。通过不输出时间戳,可以使用预期测试运行的结果填充日志,并轻松第将其与测试运行中得到的日志进行比较。
未来
pg14的libpq日志将包含时间戳和更具可读性的文本。在后续版本中,我们会在下面几个方面进一步提升可用性:
1) 当前函数将日志写入指定给pqtrace函数的文件。某些情况下,会使日志文件膨胀非常大,从而影响文件操作。为解决这个问题,我们希望提供一个功能来指定文件的最大大小。
2) 希望添加环境变量和连接参数,以设置日志输出的目录位置,以及日志文件名来适应环境,无需修改应用程序。


GaN圈“扫地僧”誉鸿锦:身藏宝藏,初现锋芒
汽车信息娱乐系统中电源管理IC设计解决方案
NB-IoT无线抄表方案与LoRa无线抄表方案的区别
全球运营商都面临5G to B挑战,“好戏”正在逐步上演
R&S SMCV100B经济型信号发生器成为移动通信应用的理想选择
PostgreSQL PG14通过libpq改进logging
光伏产业新一轮的产能装备竞赛开启
人民日报数字传播携手中国联通 以5G消息富媒体助力有效触达
大立科技:军品纵向拓展,民品多点开花
基于单片机的角度测量仪的设计
基于80C196的频率测量及在电压采样中的应用
观点 | 先进工业网络,加速工业数字化智能化
有方科技发布全球首创云-管-端接入通信系统化方案
电销机器人怎么样?是不是骗人的?
Apollo两周年:每一辆车都饱含梦想 每一步都迈向开源
用74HC165读8个按键状态
华为折叠屏旗舰要来了,买一部少一部的节奏?
数字资产市场的几种投资策略分析
什么品牌的蓝牙耳机比较好,蓝牙耳机品牌排行榜前十名
手机疯卷大模型,成为AI战场必争之地