欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PostgreSQL打印實時查詢語句的三種方法

 更新時間:2025年09月09日 09:13:21   作者:Dontla  
這篇文章主要介紹了三種PostgreSQL實時打印查詢的方法:1.通過日志配置記錄所有SQL;2.利用pg_stat_activity監(jiān)控活躍查詢;3.使用pg_stat_statements分析歷史性能,并提醒生產(chǎn)環(huán)境應(yīng)避免全量記錄以減少性能損耗,需要的朋友可以參考下

最后通過后端flask sqlalchemy開啟SQLALCHEMY_ECHO每次數(shù)據(jù)庫訪問打印實現(xiàn)了:

方法 1:通過 PostgreSQL 日志實時查看

1. 修改 PostgreSQL 配置文件

docker-compose.yml 中掛載的 postgresql.conf 文件中,添加以下日志配置:

# 開啟日志記錄所有 SQL 語句
log_statement = 'all'

# 設(shè)置日志輸出格式(推薦包含時間、進程 ID 等)
log_line_prefix = '%t [%p]: [user=%u,db=%d] '

# 開啟日志收集器
logging_collector = on
log_directory = '/var/log/postgresql'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

2. 重啟 PostgreSQL 容器

docker compose down
docker compose up -d

3. 實時查看日志

通過 docker logs 或直接訪問掛載的日志目錄實時查看:

# 方法 1:通過 docker logs 實時查看
docker compose logs -f postgres

# 方法 2:直接訪問宿主機日志目錄(假設(shè)日志掛載到 ./logs)
tail -f ./logs/postgresql-*.log

日志示例

2025-09-07 16:24:38.123 UTC [1234]: [user=postgres,db=postgres] LOG:  statement: SELECT * FROM my_table;

方法 2:通過 pg_stat_activity 實時監(jiān)控

1. 查詢實時執(zhí)行的 SQL

定期執(zhí)行以下 SQL 語句(可通過腳本或 watch 命令):

SELECT 
    pid, 
    usename, 
    query, 
    query_start, 
    now() - query_start AS duration
FROM 
    pg_stat_activity
WHERE 
    state = 'active' 
    AND query != '<IDLE>'
ORDER BY 
    query_start DESC;

2. 使用 watch 實時刷新

watch -n 1 "psql -U postgres -d postgres -c 'SELECT * FROM pg_stat_activity;'"

方法 3:使用 pg_stat_statements 擴展

1. 啟用 pg_stat_statements

postgresql.conf 中添加:

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all

重啟容器后執(zhí)行:

CREATE EXTENSION pg_stat_statements;

2. 查詢實時 SQL 統(tǒng)計

SELECT 
    query, 
    calls, 
    total_exec_time, 
    mean_exec_time
FROM 
    pg_stat_statements
ORDER BY 
    total_exec_time DESC
LIMIT 10;

注意事項

  1. 日志性能開銷log_statement = 'all' 會記錄所有 SQL,可能影響性能,建議僅用于調(diào)試。
  2. 日志輪轉(zhuǎn):通過 log_rotation_agelog_rotation_size 控制日志文件大小。
  3. 權(quán)限問題:確保掛載的日志目錄(如 ./logs)有寫入權(quán)限。
  4. 生產(chǎn)環(huán)境:建議僅記錄慢查詢(log_min_duration_statement)而非所有語句。

總結(jié)

  • 實時打印每條查詢:使用 方法 1(日志記錄)
  • 實時監(jiān)控活躍查詢:使用 方法 2(pg_stat_activity。
  • 分析歷史查詢性能:使用 方法 3(pg_stat_statements

到此這篇關(guān)于PostgreSQL打印實時查詢語句的三種方法的文章就介紹到這了,更多相關(guān)PostgreSQL打印查詢語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • postgresql中的ltree類型使用方法

    postgresql中的ltree類型使用方法

    這篇文章主要給大家介紹了關(guān)于postgresql中l(wèi)tree類型使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用postgresql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • PostgreSQL15.x安裝的詳細(xì)教程

    PostgreSQL15.x安裝的詳細(xì)教程

    PostgreSQL 是一個功能強大的開源關(guān)系型數(shù)據(jù)庫系統(tǒng),基于 C 語言實現(xiàn),采用 PostgreSQL 許可證,這是一種自由軟件許可證,允許用戶自由使用、修改和分發(fā)源代碼,所以本文將給大家介紹PostgreSQL15.x安裝的詳細(xì)教程,需要的朋友可以參考下
    2024-09-09
  • PostgreSQL教程(五):函數(shù)和操作符詳解(1)

    PostgreSQL教程(五):函數(shù)和操作符詳解(1)

    這篇文章主要介紹了PostgreSQL教程(五):函數(shù)和操作符詳解(1),本文講解了邏輯操作符、比較操作符、數(shù)學(xué)函數(shù)和操作符、三角函數(shù)列表、字符串函數(shù)和操作符等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • PostgreSQL 用戶名大小寫規(guī)則小結(jié)

    PostgreSQL 用戶名大小寫規(guī)則小結(jié)

    PostgreSQL默認(rèn)不區(qū)分用戶名大小寫,創(chuàng)建和連接時自動轉(zhuǎn)為小寫,使用雙引號可強制區(qū)分,下面就來介紹一下PostgreSQL 用戶名大小寫規(guī)則,感興趣的可以了解一下
    2025-06-06
  • postgreSQL查詢結(jié)果添加一個額外的自增序列操作

    postgreSQL查詢結(jié)果添加一個額外的自增序列操作

    這篇文章主要介紹了postgreSQL查詢結(jié)果添加一個額外的自增序列操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志

    PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志

    在?般的?產(chǎn)環(huán)境中,數(shù)據(jù)庫都需要開啟歸檔模式,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Postgresql的select優(yōu)化操作(快了200倍)

    Postgresql的select優(yōu)化操作(快了200倍)

    這篇文章主要介紹了Postgresql的select優(yōu)化操作(快了200倍),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgres 連接數(shù)查看與設(shè)置操作

    postgres 連接數(shù)查看與設(shè)置操作

    這篇文章主要介紹了postgres 連接數(shù)查看與設(shè)置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL對比Mysql分析

    PostgreSQL對比Mysql分析

    PostgreSQL功能完備、標(biāo)準(zhǔn)嚴(yán)格,適配復(fù)雜場景與數(shù)據(jù)分析,MySQL簡單高效、高并發(fā)優(yōu)勢明顯,適合讀密集型應(yīng)用,選擇應(yīng)基于業(yè)務(wù)需求與團隊技術(shù)棧,無絕對優(yōu)劣,對PostgreSQL對比Mysql分析相關(guān)知識,感興趣的朋友一起看看吧
    2025-07-07
  • postgreSQL中的row_number() 與distinct用法說明

    postgreSQL中的row_number() 與distinct用法說明

    這篇文章主要介紹了postgreSQL中的row_number() 與distinct用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論