千家信息网

PostgreSQL DBA(96) - System Conf(client_min_messages)

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,PostgreSQL提供了参数client_min_messages用以控制返回给客户的消息级别,不同的级别返回的消息大小不同,默认为NOTICE。在通常情况下,如果客户端执行的SQL语句不频繁的话,
千家信息网最后更新 2025年01月21日PostgreSQL DBA(96) - System Conf(client_min_messages)

PostgreSQL提供了参数client_min_messages用以控制返回给客户的消息级别,不同的级别返回的消息大小不同,默认为NOTICE。在通常情况下,如果客户端执行的SQL语句不频繁的话,使用默认参数即可,但如果客户端执行大量的SQL,设置该参数为较高级别就显得有意义了:可以减少消息的大小从而降低网络负载,提升吞吐。

参数简介
下面创建一个存储过程,raise notice显示通知信息

[local]:5432 pg12@testdb=# CREATE OR REPLACE FUNCTION foo() RETURNS void ASpg12@testdb-# $$pg12@testdb$#         BEGINpg12@testdb$#                 RAISE NOTICE 'some message';pg12@testdb$#                 RETURN;pg12@testdb$#         END;pg12@testdb$# $$ LANGUAGE 'plpgsql';CREATE FUNCTIONTime: 389.227 ms[local]:5432 pg12@testdb=#

执行存储过程

[local]:5432 pg12@testdb=# show client_min_messages; client_min_messages --------------------- notice(1 row)Time: 0.589 ms[local]:5432 pg12@testdb=# select foo();NOTICE:  some message foo -----(1 row)Time: 26.838 ms[local]:5432 pg12@testdb=# set client_min_messages='ERROR';SETTime: 0.361 ms[local]:5432 pg12@testdb=# select foo(); foo -----(1 row)Time: 1.638 ms[local]:5432 pg12@testdb=#

在client_min_messages设置为ERROR后,不再显示NOTICE通知信息。
下面使用benchmarksql压测工具测试该参数从NOTICE修改为ERROR后的性能变化。
1.NOTICE

[xdb@localhost run]$ ./runBenchmark.sh props.pg2019-09-25 12:15:25,434  INFO - Term-00, 2019-09-25 12:15:25,435  INFO - Term-00, +-------------------------------------------------------------+2019-09-25 12:15:25,435  INFO - Term-00,      BenchmarkSQL v4.1.12019-09-25 12:15:25,435  INFO - Term-00, +-------------------------------------------------------------+2019-09-25 12:15:25,435  INFO - Term-00,  (c) 2003, Raul Barbosa2019-09-25 12:15:25,435  INFO - Term-00,  (c) 2004-2016, Denis Lussier2019-09-25 12:15:25,435  INFO - Term-00,  (c) 2016, Jan Wieck2019-09-25 12:15:25,435  INFO - Term-00, +-------------------------------------------------------------+2019-09-25 12:15:25,435  INFO - Term-00, 2019-09-25 12:15:25,435  INFO - Term-00, driver=org.postgresql.Driver2019-09-25 12:15:25,435  INFO - Term-00, conn=jdbc:postgresql://192.168.26.28:5432/benchmarkdb2019-09-25 12:15:25,435  INFO - Term-00, user=pg122019-09-25 12:15:25,435  INFO - Term-00, 2019-09-25 12:15:25,435  INFO - Term-00, warehouses=322019-09-25 12:15:25,435  INFO - Term-00, terminals=202019-09-25 12:15:25,435  INFO - Term-00, runMins=52019-09-25 12:15:25,435  INFO - Term-00, limitTxnsPerMin=02019-09-25 12:15:25,435  INFO - Term-00, 2019-09-25 12:15:25,435  INFO - Term-00, newOrderWeight=452019-09-25 12:15:25,435  INFO - Term-00, paymentWeight=432019-09-25 12:15:25,435  INFO - Term-00, orderStatusWeight=4       Term-00, Running Average 2019-09-25 12:20:25,706  INFO - Term-00, 52216    Memory Usage: 26MB / 37MB                 2019-09-25 12:20:25,706  INFO - Term-00,                                                    2019-09-25 12:20:25,707  INFO - Term-00, Measured tpmC (NewOrders) = 7448.89                2019-09-25 12:20:25,707  INFO - Term-00, Measured tpmTOTAL = 16626.58                       2019-09-25 12:20:25,707  INFO - Term-00, Session Start     = 2019-09-25 12:15:252019-09-25 12:20:25,707  INFO - Term-00, Session End       = 2019-09-25 12:20:252019-09-25 12:20:25,707  INFO - Term-00, Transaction Count = 83171[xdb@localhost run]$ [xdb@localhost run]$

2.ERROR

[xdb@localhost run]$ ./runBenchmark.sh props.pg2019-09-25 12:22:57,954  INFO - Term-00, 2019-09-25 12:22:57,954  INFO - Term-00, +-------------------------------------------------------------+2019-09-25 12:22:57,954  INFO - Term-00,      BenchmarkSQL v4.1.12019-09-25 12:22:57,954  INFO - Term-00, +-------------------------------------------------------------+2019-09-25 12:22:57,954  INFO - Term-00,  (c) 2003, Raul Barbosa2019-09-25 12:22:57,955  INFO - Term-00,  (c) 2004-2016, Denis Lussier2019-09-25 12:22:57,955  INFO - Term-00,  (c) 2016, Jan Wieck2019-09-25 12:22:57,955  INFO - Term-00, +-------------------------------------------------------------+2019-09-25 12:22:57,955  INFO - Term-00, 2019-09-25 12:22:57,955  INFO - Term-00, driver=org.postgresql.Driver2019-09-25 12:22:57,955  INFO - Term-00, conn=jdbc:postgresql://192.168.26.28:5432/benchmarkdb2019-09-25 12:22:57,955  INFO - Term-00, user=pg122019-09-25 12:22:57,955  INFO - Term-00, 2019-09-25 12:22:57,955  INFO - Term-00, warehouses=322019-09-25 12:22:57,955  INFO - Term-00, terminals=202019-09-25 12:22:57,955  INFO - Term-00, runMins=52019-09-25 12:22:57,955  INFO - Term-00, limitTxnsPerMin=02019-09-25 12:22:57,955  INFO - Term-00, 2019-09-25 12:22:57,955  INFO - Term-00, newOrderWeight=452019-09-25 12:22:57,955  INFO - Term-00, paymentWeight=432019-09-25 12:22:57,955  INFO - Term-00, orderStatusWeight=4       Term-00, Running Average 2019-09-25 12:27:58,267  INFO - Term-00, 79156    Memory Usage: 18MB / 37MB                 2019-09-25 12:27:58,267  INFO - Term-00,                                                    2019-09-25 12:27:58,267  INFO - Term-00, Measured tpmC (NewOrders) = 7815.72                2019-09-25 12:27:58,267  INFO - Term-00, Measured tpmTOTAL = 17440.12                       2019-09-25 12:27:58,267  INFO - Term-00, Session Start     = 2019-09-25 12:22:582019-09-25 12:27:58,267  INFO - Term-00, Session End       = 2019-09-25 12:27:582019-09-25 12:27:58,268  INFO - Term-00, Transaction Count = 87254[xdb@localhost run]$

TPMC 7815 vs 7448,提升比例为4.9%

为免系统随机扰动导致的误差,重新测试了一遍

-- NONE2019-09-25 14:53:05,384  INFO - Term-00, Measured tpmC (NewOrders) = 7168.43                2019-09-25 14:53:05,384  INFO - Term-00, Measured tpmTOTAL = 15890.5                        2019-09-25 14:53:05,384  INFO - Term-00, Session Start     = 2019-09-25 14:48:052019-09-25 14:53:05,385  INFO - Term-00, Session End       = 2019-09-25 14:53:052019-09-25 14:53:05,385  INFO - Term-00, Transaction Count = 79491[xdb@localhost run]$ -- vacuum full;-- client_min_messages=error2019-09-25 14:44:29,101  INFO - Term-00, Measured tpmC (NewOrders) = 7239.02                2019-09-25 14:44:29,101  INFO - Term-00, Measured tpmTOTAL = 16079.06                       2019-09-25 14:44:29,101  INFO - Term-00, Session Start     = 2019-09-25 14:39:282019-09-25 14:44:29,102  INFO - Term-00, Session End       = 2019-09-25 14:44:292019-09-25 14:44:29,102  INFO - Term-00, Transaction Count = 80434-- vacuum full;-- update_process_title=off-- track_activities=off2019-09-25 15:01:11,861  INFO - Term-00, Measured tpmC (NewOrders) = 7253.43                2019-09-25 15:01:11,861  INFO - Term-00, Measured tpmTOTAL = 16111.73                       2019-09-25 15:01:11,862  INFO - Term-00, Session Start     = 2019-09-25 14:56:112019-09-25 15:01:11,862  INFO - Term-00, Session End       = 2019-09-25 15:01:112019-09-25 15:01:11,862  INFO - Term-00, Transaction Count = 80584-- vacuum full;-- client_min_messages=error-- update_process_title=off-- track_activities=off2019-09-25 15:08:46,923  INFO - Term-00, Measured tpmC (NewOrders) = 7194.55                2019-09-25 15:08:46,923  INFO - Term-00, Measured tpmTOTAL = 16059.38                       2019-09-25 15:08:46,923  INFO - Term-00, Session Start     = 2019-09-25 15:03:462019-09-25 15:08:46,923  INFO - Term-00, Session End       = 2019-09-25 15:08:462019-09-25 15:08:46,923  INFO - Term-00, Transaction Count = 80350

似乎没有什么效果。

参考资料
Reducing log messages on the client

0