Docker部署的PostgreSQL慢查詢日志配置指南

目錄

1. 核心步驟

1.1 修改配置文件

1.2 動態加載配置(無需重啟容器)

1.3 驗證配置生效

1.3.1 查看參數

1.3.2 執行測試慢查詢

2. 高級用法

2.1 使用分析工具

2.2 啟用擴展

3. 注意事項

3.1 日志目錄權限

3.2? 性能影響


配置Docker部署的PostgreSQL記錄慢查詢日志,需通過修改配置文件核心參數實現。以下是完整步驟及注意事項,適用于PostgreSQL 10+版本:

1. 核心步驟

1.1 修改配置文件
  • 進入容器
docker exec -it <容器名或ID> bash  
  • 編輯配置文件(通常位于 /var/lib/postgresql/data/postgresql.conf):
vim  /var/lib/postgresql/data/postgresql.conf  
  • 添加或修改以下參數:
#慢查詢閾值(單位:毫秒);記錄超過10000ms(10秒)的查詢  
log_min_duration_statement = 10000  #日志記錄格式(增強可讀性);時間戳、進程ID、用戶、數據庫名  
log_line_prefix = '%m [%p] %u@%d '  #確保日志輸出到標準輸出
log_destination = 'stderr'  #啟動日志收集功能,將日志寫入文件
logging_collector = on  #【可選】自定義日志目錄
log_directory = '/var/log/postgresql'  #【可選】自定義日志文件[可選]
log_filename = 'postgresql-%a.log'  #【可選】記錄連接/斷開事件(輔助定位慢查詢上下文)
log_connections = on
log_disconnections = on#【可選】記錄鎖等待(輔助分析鎖競爭)
log_lock_waits = on#【可選】日志文件命名格式(按日期時間切割)
log_filename = 'postgresql-%Y%m%d_%H%M%S.log'#【高級用法】日志自動切割策略(每天切割一次,或 1GB 切割)
log_rotation_age = '1d'
log_rotation_size = '1GB'#【高級用法】僅對特定數據庫/用戶啟用慢日志
# 對數據庫 'lmzf_db' 設置5000ms閾值  
ALTER DATABASE lmzf_db SET log_min_duration_statement = 5000;  
1.2 動態加載配置(無需重啟容器)
# 在容器內執行 ?
su - postgres ?
pg_ctl reload -D /var/lib/postgresql/data ?

或在宿主機執行:

docker exec <容器名> su - postgres -c 'pg_ctl reload'  
1.3 驗證配置生效
1.3.1 查看參數

? SHOW log_min_duration_statement;

docker exec <容器名> psql -U postgres -c "SHOW log_min_duration_statement;"  
1.3.2 執行測試慢查詢

? SELECT pg_sleep(12);?

docker exec <容器名> psql -U postgres -c "SELECT pg_sleep(12);"  

觀察日志文件是否生成記錄。

2. 高級用法

2.1 使用分析工具

?????????可以使用第三方工具如 pgBadger 對慢查詢日志進行分析,生成詳細的性能報告,幫助識別性能瓶頸。安裝 pgBadger 后,運行以下命令生成報告:?

pgbadger    /path/to/postgresql.log
2.2 啟用擴展

pg_stat_statements?是 PostgreSQL 內置的統計擴展,可記錄 SQL 的執行次數、總耗時等詳細信息(比日志更輕量)。啟用步驟:

-- 1. 在 postgresql.conf 中啟用擴展
shared_preload_libraries = 'pg_stat_statements'  # 添加到該行-- 2. 重啟 PostgreSQL 服務
pg_ctl restart -D /path/to/postgresql/data-- 3. 創建擴展
CREATE EXTENSION pg_stat_statements;-- 4. 查詢慢 SQL 統計(按總耗時排序)
SELECT query, total_time, calls, mean_time 
FROM pg_stat_statements 
ORDER BY total_time DESC 
LIMIT 10;

3. 注意事項

3.1 日志目錄權限

????????若自定義路徑,需提前在 Docker 掛載卷中創建目錄并賦予 postgres 用戶寫權限。

3.2? 性能影響

????????過低的閾值(如 100ms 以下)可能增大 I/O 負載,建議根據業務壓力逐步調整。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917064.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917064.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917064.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 入門教程(四)委托詳解

文章目錄1、什么是委托2、委托的聲明&#xff08;自定義委托&#xff09;3、委托的使用3.1 實例:把方法當作參數傳給另一個方法3.2 注意:難精通易使用功能強大東西&#xff0c;一旦被濫用則后果非常嚴重4、委托的高級使用4.1 多播&#xff08;multicast&#xff09;委托4.2隱式…

React的基本語法和原理

3. React條件渲染某些情況下&#xff0c;姐妹的內容會根據不同的情況顯示不同的內容&#xff0c;或者決定是否渲染某部分內容&#xff1a; 在React中&#xff0c;所有的條件判斷和普通的JavaScript代碼一致&#xff1b;常見的條件渲染的方式有哪些&#xff1f;方式一&#xff1…

如何在 Gradle 項目中添加依賴?(以添加 AndroidX 版本的 RecyclerView 為例)

1. 確保項目已啟用 AndroidX RecyclerView 的現代版本屬于 AndroidX 庫&#xff0c;需確保項目已啟用 AndroidX&#xff1a; 在 gradle.properties 中應有以下配置&#xff08;通常新建項目默認開啟&#xff09;&#xff1a;android.useAndroidXtrue android.enableJetifiert…

深度學習與圖像處理 | 基于PaddlePaddle的梯度下降算法實現(線性回歸投資預測)

演示基于PaddlePaddle自動求導技術實現梯度下降&#xff0c;簡化求解過程。01、梯度下降法梯度下降法是機器學習領域非常重要和具有代表性的算法&#xff0c;它通過迭代計算來逐步尋找目標函數極小值。既然是一種迭代計算方法&#xff0c;那么最重要的就是往哪個方向迭代&#…

負載均衡集群HAproxy

HAProxy 簡介HAProxy 是一款高性能的負載均衡器和代理服務器&#xff0c;支持 TCP 和 HTTP 應用。廣泛用于高可用性集群&#xff0c;能夠有效分發流量到多個后端服務器&#xff0c;確保服務的穩定性和可擴展性。HAProxy 核心功能負載均衡&#xff1a;支持輪詢&#xff08;round…

重生之我在10天內卷贏C++ - DAY 1

坐穩了&#xff0c;我們的C重生之旅現在正式發車&#xff01;請系好安全帶&#xff0c;前方高能&#xff0c;但絕對有趣&#xff01;&#x1f680; 重生之我在10天內卷贏C - DAY 1導師寄語&#xff1a;嘿&#xff0c;未來的編程大神&#xff01;歡迎來到C的世界。我知道&#x…

[mind-elixir]Mind-Elixir 的交互增強:單擊、雙擊與鼠標 Hover 功能實現

[mind-elixir]Mind-Elixir 的交互增強&#xff1a;單擊、雙擊與鼠標 Hover 功能實現 功能簡述 通過防抖&#xff0c;實現單擊雙擊區分通過mousemove事件&#xff0c;實現hover效果 實現思路 &#xff08;一&#xff09;單擊與雙擊事件 功能描述 單擊節點時&#xff0c;可以觸發…

c++-迭代器類別仿函數常用算法函數

C常用算法函數 1. 前置知識 1.1 迭代器的類別 C中&#xff0c;迭代器是 STL 容器庫的核心組件之一&#xff0c;具有舉足輕重的作用&#xff0c;它提供了一種 統一的方式來訪問和遍歷容器&#xff0c;而無需關心底層數據結構的具體實現。迭代器類似指針&#xff0c;但比指針更通…

Python深度學習框架TensorFlow與Keras的實踐探索

基礎概念與安裝配置 TensorFlow核心架構解析 TensorFlow是由Google Brain團隊開發的開源深度學習框架&#xff0c;其核心架構包含數據流圖&#xff08;Data Flow Graph&#xff09;和張量計算系統。數據流圖通過節點表示運算操作&#xff08;如卷積、激活函數&#xff09;&…

c# net6.0+ 安裝中文智能提示

https://github.com/stratosblue/IntelliSenseLocalizer 1、安裝tool dotnet tool install -g islocalizer 2、 安裝IntelliSense 文件&#xff0c;安裝其他net版本修改下版本號 安裝中文net6.0采集包 islocalizer install auto -m net6.0 -l zh-cn 安裝中英文雙語net6.0采集包…

【建模與仿真】二階鄰居節點信息驅動的節點重要性排序算法

導讀&#xff1a; 在復雜網絡中&#xff0c;挖掘重要節點對精準推薦、交通管控、謠言控制和疾病遏制等應用至關重要。為此&#xff0c;本文提出一種局部信息驅動的節點重要性排序算法Leaky Noisy Integrate-and-Fire (LNIF)。該算法通過獲取節點的二階鄰居信息計算節點重要性&…

指令微調Qwen3實現文本分類任務

參考文檔&#xff1a; SwanLab入門深度學習&#xff1a;Qwen3大模型指令微調 - 肖祥 - 博客園 vLLM&#xff1a;讓大語言模型推理更高效的新一代引擎 —— 原理詳解一_vllm 原理-CSDN博客 概述 為了實現對100個標簽的多標簽文本分類任務&#xff0c;前期調用gpt-4o進行prom…

【機器學習-3】 | 決策樹與鳶尾花分類實踐篇

0 序言 本文將深入探討決策樹算法&#xff0c;先回顧下前邊的知識&#xff0c;從其基本概念、構建過程講起&#xff0c;帶你理解信息熵、信息增益等核心要點。 接著在引入新知識點&#xff0c;介紹Scikit - learn 庫中決策樹的實現與應用&#xff0c;再通過一個具體項目的方式來…

【數字投影】折幕影院都是沉浸式嗎?

折幕影院作為一種現代化的展示形式&#xff0c;其核心特點在于通過多塊屏幕拼接和投影融合技術&#xff0c;打造更具包圍感的視覺體驗。折幕影院設計通常采用多折幕結構&#xff0c;如三折幕、五折幕等&#xff0c;利用多臺投影機的協同工作&#xff0c;呈現無縫銜接的超大畫面…

數據結構——圖(三、圖的 廣度/深度 優先搜索)

一、廣度優先搜索(BFS)①找到與一個頂點相鄰的所有頂點 ②標記哪些頂點被訪問過 ③需要一個輔助隊列#define MaxVertexNum 100 bool visited[MaxVertexNum]; //訪問標記數組 void BFSTraverse(Graph G){ //對圖進行廣度優先遍歷&#xff0c;處理非連通圖的函數 for(int i0;i…

直擊WAIC | 百度袁佛玉:加速具身智能技術及產品研發,助力場景應用多樣化落地

7月26日&#xff0c;2025世界人工智能大會暨人工智能全球治理高級別會議&#xff08;WAIC&#xff09;在上海開幕。同期&#xff0c;由國家地方共建人形機器人創新中心&#xff08;以下簡稱“國地中心”&#xff09;與中國電子學會聯合承辦&#xff0c;百度智能云、中國聯通上海…

2025年人形機器人動捕技術研討會將在本周四召開

2025年7月31日愛迪斯通所主辦的【2025人形機器動作捕捉技術研討會】是攜手北京天樹探界公司線下活動結合線上直播的形式&#xff0c;會議將聚焦在“動作捕捉軟硬件協同&#xff0c;加速人形機器人訓練”&#xff0c;將深度講解多項核心技術&#xff0c;包含全球知名的慣性動捕大…

Apple基礎(Xcode①-項目結構解析)

要運行設備之前先選擇好設備Product---->Destination---->選擇設備首次運行手機提示如出現 “未受信任的企業級開發者” → 手機打開 設置 ? 通用 ? VPN與設備管理 → 信任你的 Apple ID 即可ContentView 是 SwiftUI 項目里 最頂層、最主界面 的那個“頁面”&#xff0…

微服務 02

一、網關路由網關就是網絡的關口。數據在網絡間傳輸&#xff0c;從一個網絡傳輸到另一網絡時就需要經過網關來做數據的路由和轉發以及數據安全的校驗。路由是網關的核心功能之一&#xff0c;決定如何將客戶端請求映射到后端服務。1、快速入門創建新模塊&#xff0c;引入網關依賴…

04動手學深度學習筆記(上)

04數據操作 import torch(1)張量表示一個數據組成的數組&#xff0c;這個數組可能有多個維度。 xtorch.arange(12) xtensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])(2)通過shape來訪問張量的形狀和張量中元素的總數 x.shapetorch.Size([12])(3)number of elements表…