暂无图片
pg_stat_get_live_tuples 的活的记录数显示不对
我来答
分享
暂无图片 匿名用户
pg_stat_get_live_tuples 的活的记录数显示不对


create table tbl_1(id int,name varchar(10));

insert into tbl_1 values(1,'a'),(2,'b'),(3,'c'),(4,'d');


(postgres@[local]:5432)-[agedb]-#select * from tbl_1;
id | name
----+------
1 | a
2 | b
3 | c
4 | d

-----------插入4条数据

(postgres@[local]:5432)-[agedb]-#select relname,relpages,reltuples,pg_stat_get_live_tuples(oid),pg_stat_get_dead_tuples(oid) from pg_class where relname = 'tbl_1';
relname | relpages | reltuples | pg_stat_get_live_tuples | pg_stat_get_dead_tuples
---------+----------+-----------+-------------------------+-------------------------
tbl_1 | 1 | 4 | 0 | 0
(1 row)

(postgres@[local]:5432)-[agedb]-#analyze tbl_1 ;
ANALYZE
(postgres@[local]:5432)-[agedb]-#analyze tbl_1 ;
ANALYZE
(postgres@[local]:5432)-[agedb]-#analyze tbl_1 ;
ANALYZE
(postgres@[local]:5432)-[agedb]-#analyze tbl_1 ;
ANALYZE
(postgres@[local]:5432)-[agedb]-#select relname,relpages,reltuples,pg_stat_get_live_tuples(oid),pg_stat_get_dead_tuples(oid) from pg_class where relname = 'tbl_1';
relname | relpages | reltuples | pg_stat_get_live_tuples | pg_stat_get_dead_tuples
---------+----------+-----------+-------------------------+-------------------------
tbl_1 | 1 | 4 | 0 | 0
(1 row)


analyze 收集统计信息后, pg_stat_get_live_tuples ---这个活的记录数,期望的是4 ,才对,因为4条记录,没做任何操作,没删除,没更新,所以活的记录数应该是4个才对;不知道为啥显示是0 


版本  pg---10

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
梧桐

pg_stat_get_live_tuples 函数返回表中当前"活"元组(可见且未被删除的行)的数量,您插入了4条数据且没有删除的话,pg_stat_get_live_tuples 应为4,如果不是4,可能有以下原因:
事务隔离问题:如果在另一个事务中插入但未提交,当前事务可能看不到这些数据?
表上可能有触发器或或者其他会话删除了实际插入的行数
可以执行以下查询进行交叉验证:

select count(*) from tbl_1; -- 应该返回4 selelct * from pg_stat_user_tables where relname = 'tbl_1'; -- 查看完整统计信息
复制

正常情况下,这查询的结果pg_stat_get_live_tuples应该一致是:4

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
postgresql 大表加索引或者字段快吗?
回答 2
秒加字段。 
pl/sql里能支持执行管理命令吗?
回答 1
后台的维护管理命令如vacuum是不可以的
pg对sql标准的支持整体情况在哪里可以查到?
回答 1
类似这样的对比
postgresql 有没有提供类似 map, set 之类的数据结构?
回答 1
map可以通过json类型来实现,set去重可以通过唯一索引来实现。
postgresql count慢,有什么解决思路?
回答 1
是因为不带条件吗?要么没用到索引。
postgreSQL 密码区分大小写 ,有参数控制吗?
回答 2
已采纳
默认就是确认大小写,可以指定密码的加密算法
PostgreSQL中膨胀不清理有什么影响吗?
回答 1
已采纳
影响查询效率,占用磁盘空间。
PG主从复制搭建,配置了备库 ,启动没反应
回答 1
日志贴出来。主库的。
查询表空间大小 pg tablespace size 和空间内对象大小 pg total relation size 结果相差了一倍 这个问题该怎么处理后续?
回答 1
在PostgreSQL中,查询表空间(tablespace)大小和表空间内对象大小的结果可能会有显著差异,这是因为表空间包括的不仅仅是表和索引的数据,还有其他因素,如元数据、维护用的TOAST表和空闲
pg如何关闭自动统计信息的收集??
回答 1
自动收集统计信息是依赖AUTOVACUUM定时触发analyze,postgresql.conf中是否配置autovacuum该参数为on,可根据selectname,settingfrompgset