当前位置: 首页 > news >正文

PostgreSQL 查看表膨胀情况的方法

PostgreSQL 查看表膨胀情况的方法

表膨胀(Table Bloat)是PostgreSQL中由于MVCC机制导致的一种常见现象,当大量数据被更新或删除后,表中会积累"死元组"(dead tuples),这些死元组占据空间但不可见,导致表实际占用的磁盘空间远大于有效数据所需空间。

使用内置视图查看表膨胀

1 使用 pg_stat_user_tables 视图

SELECTschemaname || '.' || relname AS table_name,pg_size_pretty(pg_total_relation_size(relid)) AS total_size,pg_size_pretty(pg_relation_size(relid)) AS data_size,n_live_tup AS live_tuples,n_dead_tup AS dead_tuples,round((n_dead_tup::numeric / (n_live_tup + n_dead_tup) * 100), 2) AS dead_tuple_percent,last_vacuum,last_autovacuum
FROM pg_stat_user_tables
WHERE n_live_tup > 0
ORDER BY dead_tuple_percent DESC;

输出示例:

  table_name  | total_size | data_size  | live_tuples | dead_tuples | dead_tuple_percent |        last_vacuum         |        last_autovacuum        
--------------+------------+------------+-------------+-------------+--------------------+----------------------------+-------------------------------yewu1.t3     | 8192 bytes | 8192 bytes |          10 |          90 |              90.00 |                            | 2025-04-04 00:59:57.62698-07yewu1.t1     | 712 kB     | 440 kB     |       10000 |           0 |               0.00 | 2025-05-02 00:09:40.147-07 | 2025-04-03 16:43:51.808336-07yewu1.test10 | 8192 bytes | 8192 bytes |           4 |           0 |               0.00 |                            | yewu1.t2     | 472 kB     | 440 kB     |       10000 |           0 |               0.00 |                            | 2025-04-03 16:46:51.858759-07
(4 rows)

2. 使用 pgstattuple 扩展获取详细膨胀数据

-- 先创建扩展
CREATE EXTENSION IF NOT EXISTS pgstattuple;-- 查看特定表的膨胀情况
SELECT * FROM pgstattuple('schema_name.table_name');-- 估算所有表的膨胀情况
SELECTschemaname || '.' || relname AS table,(pgstattuple(schemaname || '.' || relname)).*
FROM pg_stat_user_tables;

输出示例:

          table          | table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_
percent 
-------------------------+-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+------
--------yewu1.t1                |    450560 |       10000 |    378894 |         84.09 |                0 |              0 |                  0 |       9020 |      2yewu1.t2                |    450560 |       10000 |    378894 |         84.09 |                0 |              0 |                  0 |       9020 |      2public.pgbench_history  |  14024704 |      267227 |  12826896 |         91.46 |                0 |              0 |                  0 |       7488 |      0.05yewu1.test1             |      8192 |           3 |       161 |          1.97 |                0 |              0 |                  0 |       7984 |      97.46yewu1.test6             |         0 |           0 |         0 |             0 |                0 |              0 |                  0 |          0 |      0public.pgbench_tellers  |      8192 |         100 |      3600 |         43.95 |                0 |              0 |                  0 |       3764 |      45.95yewu2.t4                |      8192 |           1 |        28 |          0.34 |                0 |              0 |                  0 |       8128 |      99.22yewu1.test5             |         0 |           0 |         0 |             0 |                0 |              0 |                  0 |          0 |      0public.pgbench_branches |      8192 |          10 |       320 |          3.91 |                0 |              0 |                  0 |       7804 |      95.26yewu1.test7             | 513892352 |    10000000 | 408888897 |         79.57 |                0 |              0 |                  0 |     135876 |      0.03yewu1.test3             |         0 |           0 |         0 |             0 |                0 |              0 |                  0 |          0 |      0yewu1.test2             |         0 |           0 |         0 |             0 |                0 |              0 |                  0 |          0 |      0yewu1.t3                |      8192 |          10 |       351 |          4.28 |               90 |           3241 |              39.56 |       3764 |      45.95public.pgbench_accounts | 134479872 |     1000000 | 121000000 |         89.98 |                0 |              0 |                  0 |    1840616 |      1.37yewu1.test10            |      8192 |           4 |       136 |          1.66 |                0 |              0 |                  0 |       7988 |      97.51yewu1.test4             |         0 |           0 |         0 |             0 |                0 |              0 |                  0 |          0 |      0yewu1.test8             | 513892352 |    10000000 | 408888897 |         79.57 |                0 |              0 |                  0 |     135876 |      0.03
(17 rows)

相关文章:

  • [Control-Chaos] Heart Broken(心臟破裂)
  • CPO-BP+NSGA,豪冠猪优化BP神经网络+多目标遗传算法!(Matlab完整源码和数据)
  • 2.maven 手动安装 jar包
  • IntelliJ IDEA 保姆级使用教程
  • 密码学_加密
  • 【Redis】List类型
  • Python实例题:Python获取小说数据并分析
  • 【项目设计】MySQL 连接池的设计
  • 数据结构之平衡二叉树
  • 非对称加密算法(RSA、ECC、SM2)——密码学基础
  • 会话历史管理——持久化
  • 2.4 GHz频段的11个信道通过 5 MHz中心频率间隔 实现覆盖
  • 学习:困?
  • vue2和vue3组件如何监听子组件生命周期
  • 【AI面试准备】对新技术充满热情,具有较强的学习能力和独立解决问题的能力
  • 藏语英语中文机器翻译入门实践
  • c++_csp-j算法 (6)_高精度算法(加减乘除)
  • 多线程编程的常见问题
  • 深度理解linux系统—— 进程优先级
  • 柔性PZT压电薄膜多维力传感器在微创手术机器人的应用
  • 客场不敌蓉城遭遇联赛首败,申花争冠需要提升外援能力
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套
  • 李公明︱一周书记:数字文化的乌托邦精神与……算法时代的生存指南
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 美商界报告:全美超86万岗位依赖对华出口,关税将重创美国出口商
  • 孙磊已任中国常驻联合国副代表、特命全权大使