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

PostgreSQL?auto_explain的具體使用

 更新時(shí)間:2025年06月17日 08:37:08   作者:腦子進(jìn)水養(yǎng)啥魚?  
PostgreSQL auto_explain插件自動(dòng)記錄慢SQL執(zhí)行計(jì)劃,支持全局、會(huì)話及用戶級(jí)別加載,具有一定的參考價(jià)值,感興趣的可以了解一下

一、概述

auto_explain 插件可以實(shí)現(xiàn)在數(shù)據(jù)庫(kù)日志中自動(dòng)記錄慢 SQL 執(zhí)行計(jì)劃。PostgreSQL 編譯安裝時(shí)使用了 make world & make install-world 命令,則所有內(nèi)置插件(包括 auto_explain)會(huì)默認(rèn)被安裝到數(shù)據(jù)庫(kù)中,可直接調(diào)用。在 PostgreSQL 中執(zhí)行 LOAD 'auto_explain'; 若無(wú)報(bào)錯(cuò)則表明插件已存在。PostgreSQL 主流穩(wěn)定版本 9.x 及以上均已支持。

二、使用

2.1 session_preload_libraries 調(diào)用(用戶級(jí)別)

--調(diào)用
ALTER ROLE u1 SET session_preload_libraries = 'auto_explain';
ALTER ROLE u1 SET auto_explain.log_min_duration = '3s';

--u1 用戶新連入數(shù)據(jù)庫(kù)的會(huì)話,執(zhí)行超3s的sql將在數(shù)據(jù)庫(kù)日志中打印執(zhí)行計(jì)劃
2025-05-27 14:01:10.821 CST [3335] LOG:  duration: 4004.207 ms  plan:
        Query Text: SELECT pg_sleep(4);
        Result  (cost=0.00..0.01 rows=1 width=4)

--取消調(diào)用
ALTER ROLE u1 set session_preload_libraries = default;
ALTER ROLE u1 set session_preload_libraries = default;

2.2 LOAD 調(diào)用(會(huì)話級(jí)別)

--調(diào)用
LOAD 'auto_explain';
set auto_explain.log_min_duration = '3s';

--當(dāng)前會(huì)話,執(zhí)行超3s的sql將在數(shù)據(jù)庫(kù)日志中打印執(zhí)行計(jì)劃
2025-05-27 14:15:03.547 CST [3581] LOG:  duration: 4004.732 ms  plan:
        Query Text: SELECT pg_sleep(4);
        Result  (cost=0.00..0.01 rows=1 width=4)

--取消調(diào)用
臨時(shí)調(diào)用,退出當(dāng)前會(huì)話即可。

2.3 shared_preload_libraries 調(diào)用(全局級(jí)別)

--調(diào)用(若未配置環(huán)境變量$PGDATA替換為postgresql.conf所在實(shí)際路徑)
cat >> $PGDATA/postgresql.conf << 'eof'
shared_preload_libraries = 'auto_explain'
auto_explain.log_min_duration = '3s'
eof

psql postgres postgres -c 'checkpoint'
pg_ctl restart

--新連入數(shù)據(jù)庫(kù)的會(huì)話,執(zhí)行超3s的sql將在數(shù)據(jù)庫(kù)日志中打印執(zhí)行計(jì)劃
2025-05-27 14:25:30.559 CST [3884] LOG:  duration: 5005.176 ms  plan:
        Query Text: SELECT pg_sleep(5);
        Result  (cost=0.00..0.01 rows=1 width=4)

--取消調(diào)用
sed -i '/^shared_preload_libraries = '\''auto_explain'\''/d' $PGDATA/postgresql.conf
sed -i '/^auto_explain.log_min_duration = '\''3s'\''/d' $PGDATA/postgresql.conf

psql postgres postgres -c 'checkpoint'
pg_ctl restart

三、對(duì)比

方式生效范圍是否需要重啟靈活性適用場(chǎng)景主要缺點(diǎn)
shared_preload_libraries全局長(zhǎng)期全局監(jiān)控需重啟,可能資源浪費(fèi)
LOAD當(dāng)前會(huì)話臨時(shí)調(diào)試手動(dòng)操作,無(wú)法自動(dòng)化
session_preload_libraries新會(huì)話按會(huì)話/用戶自動(dòng)啟用僅對(duì)新會(huì)話生效,參數(shù)限制

生產(chǎn)環(huán)境長(zhǎng)期監(jiān)控:優(yōu)先使用 shared_preload_libraries,全局配置過(guò)濾條件(如 log_min_duration)減少日志量。
臨時(shí)診斷:使用 LOAD 命令,靈活且不影響其他會(huì)話。
特定用戶/應(yīng)用分析:使用 session_preload_libraries,通過(guò)連接參數(shù)或角色配置實(shí)現(xiàn)按需加載。

四、其他參數(shù)介紹

詳情參考官網(wǎng):https://www.postgresql.org/docs/current/auto-explain.html

  • auto_explain.log_min_duration (整數(shù)):控制執(zhí)行計(jì)劃日志記錄的最小語(yǔ)句執(zhí)行時(shí)間(單位:毫秒)。設(shè)為 0 時(shí)記錄所有執(zhí)行計(jì)劃。默認(rèn)值 -1 表示禁用日志記錄。例如:設(shè)置為 250 時(shí),所有執(zhí)行時(shí)間 ≥250 毫秒的語(yǔ)句將被記錄。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_parameter_max_length (整數(shù)):控制查詢參數(shù)值的日志記錄方式。默認(rèn)值 -1 表示完整記錄參數(shù)值。0 禁用參數(shù)值記錄。大于 0 時(shí),將參數(shù)值截?cái)酁橹付ㄗ止?jié)數(shù)。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_analyze (布爾值):?jiǎn)⒂煤螅涗泩?zhí)行計(jì)劃時(shí)輸出 EXPLAIN ANALYZE 而非普通 EXPLAIN 結(jié)果。默認(rèn)值:off。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_buffers (布爾值):控制是否在日志中輸出緩沖區(qū)使用統(tǒng)計(jì)信息(等效于 EXPLAIN 的 BUFFERS 選項(xiàng))。僅在 auto_explain.log_analyze 啟用時(shí)生效。默認(rèn)值:off。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_wal (布爾值):控制是否在日志中輸出 WAL 使用統(tǒng)計(jì)信息(等效于 EXPLAIN 的 WAL 選項(xiàng))。僅在 auto_explain.log_analyze 啟用時(shí)生效。默認(rèn)值:off。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_timing (布爾值):控制是否在日志中輸出每個(gè)節(jié)點(diǎn)的定時(shí)信息(等效于 EXPLAIN 的 TIMING 選項(xiàng))。禁用后可減少系統(tǒng)時(shí)鐘讀取開(kāi)銷,適用于僅需實(shí)際行數(shù)而非精確時(shí)間的場(chǎng)景。僅在 auto_explain.log_analyze 啟用時(shí)生效。默認(rèn)值:on。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_triggers (布爾值):控制是否在日志中包含觸發(fā)器執(zhí)行統(tǒng)計(jì)信息。僅在 auto_explain.log_analyze 啟用時(shí)生效。默認(rèn)值:off。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_verbose (布爾值):控制是否在日志中輸出詳細(xì)執(zhí)行計(jì)劃信息(等效于 EXPLAIN 的 VERBOSE 選項(xiàng))。默認(rèn)值:off。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_settings (布爾值):控制是否在日志中輸出影響查詢規(guī)劃的修改后配置選項(xiàng)信息(僅顯示與內(nèi)置默認(rèn)值不同的選項(xiàng))。默認(rèn)值:off。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_format (枚舉):指定 EXPLAIN 輸出格式??蛇x值為 textxml、json 和 yaml,默認(rèn)為 text。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_level (枚舉):設(shè)置自動(dòng)解釋查詢計(jì)劃的日志級(jí)別。有效值為 DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFONOTICE、WARNING 和 LOG,默認(rèn)為 LOG。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.log_nested_statements (布爾值):控制是否記錄嵌套語(yǔ)句(函數(shù)內(nèi)部執(zhí)行的語(yǔ)句)。設(shè)為 off 時(shí)僅記錄頂層查詢計(jì)劃。默認(rèn)值:off。僅超級(jí)用戶可修改此參數(shù)。

  • auto_explain.sample_rate (實(shí)數(shù)):設(shè)置每個(gè)會(huì)話中僅解釋部分語(yǔ)句的比例。默認(rèn)值 1 表示解釋所有查詢。嵌套語(yǔ)句要么全解釋,要么全不解釋。僅超級(jí)用戶可修改此參數(shù)。

到此這篇關(guān)于PostgreSQL auto_explain的文章就介紹到這了,更多相關(guān)PostgreSQL auto_explain內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PostgreSQL截取字符串到指定字符位置詳細(xì)示例

    PostgreSQL截取字符串到指定字符位置詳細(xì)示例

    這篇文章主要給大家介紹了關(guān)于PostgreSQL截取字符串到指定字符位置的相關(guān)資料,PostgreSQL數(shù)據(jù)庫(kù)拼接字符串函數(shù)是一種非常重要的函數(shù),使用它可以方便地將不同的字符串進(jìn)行拼接操作,從而得到我們需要的結(jié)果,需要的朋友可以參考下
    2023-07-07
  • postgresql 實(shí)現(xiàn)查詢某時(shí)間區(qū)間的所有日期案例

    postgresql 實(shí)現(xiàn)查詢某時(shí)間區(qū)間的所有日期案例

    這篇文章主要介紹了postgresql 實(shí)現(xiàn)查詢某時(shí)間區(qū)間的所有日期案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • PostgreSQL 查看數(shù)據(jù)庫(kù),索引,表,表空間大小的示例代碼

    PostgreSQL 查看數(shù)據(jù)庫(kù),索引,表,表空間大小的示例代碼

    PostgreSQL 提供了多個(gè)系統(tǒng)管理函數(shù)來(lái)查看表,索引,表空間及數(shù)據(jù)庫(kù)的大小,下面詳細(xì)介紹一下
    2013-08-08
  • CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作

    CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作

    這篇文章主要介紹了CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 使用docker compose啟動(dòng)postgresql的示例代碼

    使用docker compose啟動(dòng)postgresql的示例代碼

    要在啟動(dòng) PostgreSQL 容器時(shí)執(zhí)行特定的初始化文件,可以使用 Docker 的 docker-entrypoint-initdb.d 目錄,這個(gè)目錄下的 SQL 文件會(huì)在容器啟動(dòng)時(shí)被自動(dòng)執(zhí)行,下面是如何修改 Docker Compose 配置文件,以便在啟動(dòng)時(shí)執(zhí)行初始化 SQL 腳本,需要的朋友可以參考下
    2024-10-10
  • postgresql 實(shí)現(xiàn)多表關(guān)聯(lián)刪除

    postgresql 實(shí)現(xiàn)多表關(guān)聯(lián)刪除

    這篇文章主要介紹了postgresql 實(shí)現(xiàn)多表關(guān)聯(lián)刪除操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 在docker上部署postgreSQL主從的超詳細(xì)步驟

    在docker上部署postgreSQL主從的超詳細(xì)步驟

    使用Docker能夠更加高效地部署和管理應(yīng)用程序,提高開(kāi)發(fā)和運(yùn)維的效率,下面這篇文章主要給大家介紹了關(guān)于在docker上部署postgreSQL主從的超詳細(xì)步驟,文中通過(guò)代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表的信息

    postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表的信息

    這篇文章主要給大家介紹了關(guān)于postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表信息的相關(guān)資料,要查詢數(shù)據(jù)表信息,需要用到 系統(tǒng)表或系統(tǒng)視圖等,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • sqoop讀取postgresql數(shù)據(jù)庫(kù)表格導(dǎo)入到hdfs中的實(shí)現(xiàn)

    sqoop讀取postgresql數(shù)據(jù)庫(kù)表格導(dǎo)入到hdfs中的實(shí)現(xiàn)

    這篇文章主要介紹了sqoop讀取postgresql數(shù)據(jù)庫(kù)表格導(dǎo)入到hdfs中的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • PostgreSql從庫(kù)重新配置的詳情

    PostgreSql從庫(kù)重新配置的詳情

    這篇文章主要介紹了PostgreSql從庫(kù)重新配置的詳情,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論