PostgreSQL 之 vacuum 死元组清理
前言
初识 vacuum 先说下,什么是死元组?
前置说明:
表的死元组可通过查询pg_stat_user_tables,也有其他视图可查,当前不做过多说明。
例如:
有一张业务表 tb_client 其内有 5条 数据,此时做 1次 update 操作,将会产生 1个死元组。
--- (1) 业务表初始数据
postgres=# select * from tb_client;
id | name
------+-------
1001 | A1001
1002 | B1002
1003 | C1003
1004 | D1004
1005 | E1005
(5 rows)
postgres=#
-- (2) 检查死元组情况
postgres=# select * from pg_stat_user_tables where relname = 'tb_client';
-[ RECORD 1 ]-------+----------
relid | 24587
schemaname | public
relname | tb_client
seq_scan | 1
seq_tup_read | 5
idx_scan |
idx_tup_fetch |
n_tup_ins | 5
n_tup_upd | 0 --- 更新情况
n_tup_del | 0
n_tup_hot_upd | 0
n_live_tup | 5
n_dead_tup | 0 ---- 注意这里表示死元组数
n_mod_since_analyze | 5
last_vacuum |
last_autovacuum |
last_analyze |
last_autoanalyze |
vacuum_count | 0
autovacuum_count | 0
analyze_count | 0
autoanalyze_count | 0
postgres=#
-- (3) 表数据,做 一次 Update
postgres=# update tb_client set name = '君九' where id = 1003;
UPDATE 1
postgres=#
-- (4) 检查死元组情况
postgres=# select * from pg_stat_user_tables where relname = 'tb_client';
-[ RECORD 1 ]-------+----------
relid | 24587
schemaname | public
relname | tb_client
seq_scan | 2
seq_tup_read | 10
idx_scan |
idx_tup_fetch |
n_tup_ins | 5
n_tup_upd | 1
n_tup_del


1480

被折叠的 条评论
为什么被折叠?



