最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL中ANALYZE命令的使用

 更新時(shí)間:2025年06月15日 15:03:19   作者:文牧之  
PostgreSQL中ANALYZE用于收集統(tǒng)計(jì)信息以優(yōu)化查詢,文中通過示例代碼詳細(xì)的介紹了ANALYZE使用,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

ANALYZE 是 PostgreSQL 中用于收集數(shù)據(jù)庫對象統(tǒng)計(jì)信息的關(guān)鍵命令,這些統(tǒng)計(jì)信息對于查詢優(yōu)化器生成高效執(zhí)行計(jì)劃至關(guān)重要。

一 ANALYZE 命令

1.1 基本語法

ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ]

where option can be one of:

    VERBOSE [ boolean ]
    SKIP_LOCKED [ boolean ]
    BUFFER_USAGE_LIMIT size

and table_and_columns is:

    table_name [ ( column_name [, ...] ) ]

1.2 鎖級(jí)別

  • 不會(huì)鎖表(不阻塞 DML 操作)
  • 只獲取 ShareUpdateExclusiveLock 鎖
    • 允許并發(fā)讀取和寫入
    • 僅阻塞 ALTER TABLEDROP TABLE、VACUUM FULL 等DDL操作
  • 并發(fā)影響
    • ? 允許并發(fā) SELECT/INSERT/UPDATE/DELETE
    • ? 允許并發(fā) CREATE INDEX CONCURRENTLY
    • ? 阻塞 ALTER TABLE、DROP TABLE、VACUUM FULL

1.3 對索引的影響

當(dāng)對表執(zhí)行 ANALYZE 時(shí):

  • 會(huì)收集該表所有索引的統(tǒng)計(jì)信息
  • 不會(huì)重建或修改索引本身
  • 僅更新 pg_statistic 系統(tǒng)目錄中的統(tǒng)計(jì)信息

二 類似操作的鎖對比

命令鎖類型是否阻塞DML主要用途
ANALYZEShareUpdateExclusiveLock更新統(tǒng)計(jì)信息
REINDEX排他鎖重建索引
REINDEX CONCURRENTLYShareUpdateExclusiveLock無鎖重建索引
VACUUMShareUpdateExclusiveLock清理死元組
VACUUM FULL排他鎖重組表數(shù)據(jù)

三 使用場景

3.1 常規(guī)維護(hù)

-- 分析單個(gè)表
ANALYZE customers;

-- 分析特定列
ANALYZE customers (customer_id, name);

-- 分析整個(gè)數(shù)據(jù)庫
ANALYZE;

3.2 數(shù)據(jù)大量變更后

-- 批量導(dǎo)入數(shù)據(jù)后
COPY employees FROM '/path/to/data.csv';
ANALYZE employees;

3.3 性能調(diào)優(yōu)

-- 查詢性能下降時(shí)
ANALYZE VERBOSE orders;

四 配置參數(shù)

自動(dòng)分析

autovacuum_analyze_scale_factor = 0.1  -- 10%行變化后觸發(fā)
autovacuum_analyze_threshold = 50      -- 最少50行變化

采樣設(shè)置

default_statistics_target = 100        -- 統(tǒng)計(jì)信息詳細(xì)程度
alter table large_table set (analyze_sample_percentage = 5); -- 對大表減少采樣

五 監(jiān)控分析狀態(tài)

查看最后分析時(shí)間

SELECT schemaname, relname, last_analyze, analyze_count 
FROM pg_stat_user_tables;

輸出示例:

 schemaname |     relname      |         last_analyze          | analyze_count 
------------+------------------+-------------------------------+---------------
 yewu1      | t4               |                               |             0
 yewu1      | t1               | 2025-05-03 18:51:47.366276-07 |             1
 yewu1      | t2               |                               |             0
 public     | pgbench_history  |                               |             0
 yewu1      | test6            |                               |             0
 public     | pgbench_tellers  |                               |             0
 yewu1      | test5            |                               |             0
 public     | pgbench_branches |                               |             0
 yewu1      | test3            |                               |             0
 yewu1      | test2            |                               |             0
 yewu1      | t3               |                               |             0
 public     | pgbench_accounts |                               |             0
 yewu1      | test10           |                               |             0
 yewu1      | test4            |                               |             0
(14 rows)

檢查待分析變更量

SELECT schemaname, relname, 
       n_mod_since_analyze,
       n_live_tup,
       round(n_mod_since_analyze*100.0/nullif(n_live_tup,0),2) as mod_percent
FROM pg_stat_user_tables
ORDER BY n_mod_since_analyze DESC;

輸出示例:

 schemaname |     relname      | n_mod_since_analyze | n_live_tup | mod_percent 
------------+------------------+---------------------+------------+-------------
 yewu1      | t3               |                 190 |         10 |     1900.00
 yewu1      | test10           |                   4 |          4 |      100.00
 yewu1      | t2               |                   0 |      10000 |        0.00
 public     | pgbench_history  |                   0 |          0 |            
 yewu1      | test6            |                   0 |          0 |            
 public     | pgbench_tellers  |                   0 |          0 |            
 yewu1      | test5            |                   0 |          0 |            
 public     | pgbench_branches |                   0 |          0 |            
 yewu1      | test3            |                   0 |          0 |            
 yewu1      | test2            |                   0 |          0 |            
 public     | pgbench_accounts |                   0 |          0 |            
 yewu1      | t4               |                   0 |      10000 |        0.00
 yewu1      | test4            |                   0 |          0 |            
 yewu1      | t1               |                   0 |          0 |            
(14 rows)

六 性能考慮

資源使用

  • 會(huì)消耗CPU和I/O資源
  • 對大表可能耗時(shí)較長

最佳實(shí)踐

  • 在低峰期執(zhí)行大表分析
  • 對關(guān)鍵表設(shè)置更頻繁的自動(dòng)分析
  • 超大表考慮減小采樣比例

七 與VACUUM的區(qū)別

特性ANALYZEVACUUM
主要目的收集統(tǒng)計(jì)信息清理死元組
鎖級(jí)別ShareUpdateExclusive同左(但VACUUM FULL為排他鎖)
是否回收空間是(VACUUM FULL)
更新統(tǒng)計(jì)信息可選(ANALYZE選項(xiàng))

更多詳細(xì)信息請查看官方文檔:https://www.postgresql.org/docs/16/sql-analyze.html

PostgreSQL 中的 ANALYZE 命令不會(huì)鎖表,是安全的維護(hù)操作,可以隨時(shí)在生產(chǎn)環(huán)境執(zhí)行。如果需要重建索引(而非更新統(tǒng)計(jì)信息),則應(yīng)使用 REINDEX 命令,并注意其鎖行為。

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

相關(guān)文章

  • PostgreSQL查看正在執(zhí)行的任務(wù)并強(qiáng)制結(jié)束的操作方法

    PostgreSQL查看正在執(zhí)行的任務(wù)并強(qiáng)制結(jié)束的操作方法

    這篇文章主要介紹了PostgreSQL查看正在執(zhí)行的任務(wù)并強(qiáng)制結(jié)束的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析

    PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析

    這篇文章主要介紹了PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • postgres 數(shù)據(jù)庫遷移的幾種方法

    postgres 數(shù)據(jù)庫遷移的幾種方法

    本文詳細(xì)介紹了postgres 數(shù)據(jù)庫遷移的幾種方法,包括數(shù)據(jù)文件備份、數(shù)據(jù)文件遷移方案以及常見問題及其解決方案,感興趣的可以了解一下
    2025-07-07
  • postgreSQL 非count方法算記錄數(shù)操作

    postgreSQL 非count方法算記錄數(shù)操作

    這篇文章主要介紹了postgreSQL 非count方法算記錄數(shù)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL高級(jí)特性與性能優(yōu)化的實(shí)戰(zhàn)指南

    PostgreSQL高級(jí)特性與性能優(yōu)化的實(shí)戰(zhàn)指南

    本文將深入探討PostgreSQL的高級(jí)特性與性能優(yōu)化技術(shù),結(jié)合Python實(shí)踐,幫助開發(fā)者充分發(fā)揮PostgreSQL的潛力,文中的示例代碼講解詳細(xì),需要的小伙伴可以了解下
    2026-02-02
  • PostgreSQL常用優(yōu)化技巧示例介紹

    PostgreSQL常用優(yōu)化技巧示例介紹

    PostgreSQL的SQL優(yōu)化技巧其實(shí)和大多數(shù)使用CBO優(yōu)化器的數(shù)據(jù)庫類似,因此一些常用的SQL優(yōu)化改寫技巧在PostgreSQL也是能夠使用的。當(dāng)然也會(huì)有一些不同的地方,今天我們來看看一些在PostgreSQL常用的SQL優(yōu)化改寫技巧
    2022-09-09
  • postgresql13主從搭建Ubuntu

    postgresql13主從搭建Ubuntu

    這篇文章主要為大家介紹了postgresql13主從搭建Ubuntu實(shí)現(xiàn)過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Postgresql?REGEXP開頭的正則函數(shù)用法圖文詳解

    Postgresql?REGEXP開頭的正則函數(shù)用法圖文詳解

    正則表達(dá)式是指一個(gè)用來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串,下面這篇文章主要給大家介紹了關(guān)于Postgresql?REGEXP開頭的正則函數(shù)用法的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • PostgreSQL數(shù)據(jù)庫備份還原全攻略

    PostgreSQL數(shù)據(jù)庫備份還原全攻略

    本文主要介紹邏輯備份和連續(xù)歸檔方式的備份及還原,文件系統(tǒng)級(jí)備份由于比較簡單,這里不在贅述,以下操作使用的數(shù)據(jù)庫版本為PostgreSQL 12.5,不同的數(shù)據(jù)庫版本在進(jìn)行連續(xù)歸檔操作時(shí)會(huì)有細(xì)微差異,需要的朋友可以參考下
    2024-04-04
  • PostgreSQL VACUUM 清理機(jī)制詳解

    PostgreSQL VACUUM 清理機(jī)制詳解

    本文主要介紹了PostgreSQL VACUUM 清理機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05

最新評(píng)論

深圳市| 黄骅市| 文水县| 邢台县| 竹北市| 沿河| 廊坊市| 祁阳县| 巴林左旗| 大港区| 曲阜市| 南漳县| 互助| 迁西县| 田阳县| 阳曲县| 岳池县| 堆龙德庆县| 芮城县| 梁山县| 儋州市| 文山县| 油尖旺区| 彝良县| 吴川市| 麻栗坡县| 石渠县| 凤山市| 奈曼旗| 石棉县| 枣庄市| 徐水县| 百色市| 长海县| 田林县| 望江县| 修文县| 扎兰屯市| 鹤庆县| 桦南县| 南澳县|