PostgreSQL DBA(96) - System Conf(client_min_messages)

husthxd 發表於 2019-09-25

PostgreSQL提供了引數client_min_messages用以控制返回給客戶的訊息級別,不同的級別返回的訊息大小不同,預設為NOTICE。在通常情況下,如果客戶端執行的SQL語句不頻繁的話,使用預設引數即可,但如果客戶端執行大量的SQL,設定該引數為較高階別就顯得有意義了:可以減少訊息的大小從而降低網路負載,提升吞吐。

引數簡介
下面建立一個儲存過程,raise notice顯示通知資訊

[local]:5432 [email protected]=# CREATE OR REPLACE FUNCTION foo() RETURNS void AS
[email protected]# $$
[email protected]$#         BEGIN
[email protected]$#                 RAISE NOTICE 'some message';
[email protected]$#                 RETURN;
[email protected]$#         END;
[email protected]$# $$ LANGUAGE 'plpgsql';
CREATE FUNCTION
Time: 389.227 ms
[local]:5432 [email protected]=#

執行儲存過程

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

在client_min_messages設定為ERROR後,不再顯示NOTICE通知資訊。
下面使用benchmarksql壓測工具測試該引數從NOTICE修改為ERROR後的效能變化。
1.NOTICE

[[email protected] run]$ ./runBenchmark.sh props.pg
2019-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.1
2019-09-25 12:15:25,435  INFO - Term-00, +-------------------------------------------------------------+
2019-09-25 12:15:25,435  INFO - Term-00,  (c) 2003, Raul Barbosa
2019-09-25 12:15:25,435  INFO - Term-00,  (c) 2004-2016, Denis Lussier
2019-09-25 12:15:25,435  INFO - Term-00,  (c) 2016, Jan Wieck
2019-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.Driver
2019-09-25 12:15:25,435  INFO - Term-00, conn=jdbc:postgresql://192.168.26.28:5432/benchmarkdb
2019-09-25 12:15:25,435  INFO - Term-00, user=pg12
2019-09-25 12:15:25,435  INFO - Term-00, 
2019-09-25 12:15:25,435  INFO - Term-00, warehouses=32
2019-09-25 12:15:25,435  INFO - Term-00, terminals=20
2019-09-25 12:15:25,435  INFO - Term-00, runMins=5
2019-09-25 12:15:25,435  INFO - Term-00, limitTxnsPerMin=0
2019-09-25 12:15:25,435  INFO - Term-00, 
2019-09-25 12:15:25,435  INFO - Term-00, newOrderWeight=45
2019-09-25 12:15:25,435  INFO - Term-00, paymentWeight=43
2019-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:25
2019-09-25 12:20:25,707  INFO - Term-00, Session End       = 2019-09-25 12:20:25
2019-09-25 12:20:25,707  INFO - Term-00, Transaction Count = 83171
[[email protected] run]$ 
[[email protected] run]$

2.ERROR

[[email protected] run]$ ./runBenchmark.sh props.pg
2019-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.1
2019-09-25 12:22:57,954  INFO - Term-00, +-------------------------------------------------------------+
2019-09-25 12:22:57,954  INFO - Term-00,  (c) 2003, Raul Barbosa
2019-09-25 12:22:57,955  INFO - Term-00,  (c) 2004-2016, Denis Lussier
2019-09-25 12:22:57,955  INFO - Term-00,  (c) 2016, Jan Wieck
2019-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.Driver
2019-09-25 12:22:57,955  INFO - Term-00, conn=jdbc:postgresql://192.168.26.28:5432/benchmarkdb
2019-09-25 12:22:57,955  INFO - Term-00, user=pg12
2019-09-25 12:22:57,955  INFO - Term-00, 
2019-09-25 12:22:57,955  INFO - Term-00, warehouses=32
2019-09-25 12:22:57,955  INFO - Term-00, terminals=20
2019-09-25 12:22:57,955  INFO - Term-00, runMins=5
2019-09-25 12:22:57,955  INFO - Term-00, limitTxnsPerMin=0
2019-09-25 12:22:57,955  INFO - Term-00, 
2019-09-25 12:22:57,955  INFO - Term-00, newOrderWeight=45
2019-09-25 12:22:57,955  INFO - Term-00, paymentWeight=43
2019-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:58
2019-09-25 12:27:58,267  INFO - Term-00, Session End       = 2019-09-25 12:27:58
2019-09-25 12:27:58,268  INFO - Term-00, Transaction Count = 87254
[[email protected] run]$

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

為免系統隨機擾動導致的誤差,重新測試了一遍

-- NONE
2019-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:05
2019-09-25 14:53:05,385  INFO - Term-00, Session End       = 2019-09-25 14:53:05
2019-09-25 14:53:05,385  INFO - Term-00, Transaction Count = 79491
[[email protected] run]$ 
-- vacuum full;
-- client_min_messages=error
2019-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:28
2019-09-25 14:44:29,102  INFO - Term-00, Session End       = 2019-09-25 14:44:29
2019-09-25 14:44:29,102  INFO - Term-00, Transaction Count = 80434
-- vacuum full;
-- update_process_title=off
-- track_activities=off
2019-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:11
2019-09-25 15:01:11,862  INFO - Term-00, Session End       = 2019-09-25 15:01:11
2019-09-25 15:01:11,862  INFO - Term-00, Transaction Count = 80584
-- vacuum full;
-- client_min_messages=error
-- update_process_title=off
-- track_activities=off
2019-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:46
2019-09-25 15:08:46,923  INFO - Term-00, Session End       = 2019-09-25 15:08:46
2019-09-25 15:08:46,923  INFO - Term-00, Transaction Count = 80350

似乎沒有什麼效果。

參考資料
Reducing log messages on the client

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-2658168/,如需轉載,請註明出處,否則將追究法律責任。