PostgreSQL 中 pg_stat_database 视图的 tup_returned 字段的含义详解

 更新时间:2025年12月26日 10:27:58   作者:小精灵DBA  
PostgreSQL的pg_stat_database视图中的tup_returned字段统计了数据库中所有查询返回的行数,是数据库级别的累计值,它反映了数据库的负载和查询效率,本文介绍PostgreSQL中pg_stat_database视图的tup_returned字段的含义,感兴趣的朋友一起看看吧

此篇详细解释一下 PostgreSQL 中 pg_stat_database 视图里的 tup_returned 字段的含义。

核心定义

tup_returned 字面意思是 “返回的元组数”。

这里的“元组”可以通俗地理解为 数据表中的一行

因此,tup_returned 统计的是 从数据库中读取到的行数

详细解释

  • 统计的是什么?
  • 它统计的是由 所有类型的查询(SELECT, UPDATE, DELETE 等) 所访问到的行数。
  • 例如:
    • 一个 SELECT * FROM table_name 查询,返回了 100 行,那么这 100 就会被累加到 tup_returned 中。
    • 一个 UPDATE table_name SET column = value 语句,它需要先找到所有要更新的行(类似于一个 SELECT),假设它匹配了 50 行,那么这 50 行也会被累加到 tup_returned 中,即使它最终更新了这些行(更新操作本身由 tup_updated 统计)。
    • 同样,DELETE 语句在删除前也需要先找到这些行,所以找到的行数也会计入 tup_returned
  • 统计范围:
    • 这个统计是 数据库级别 的。pg_stat_database 视图中的这个值,是该 PostgreSQL 集群中 单个数据库 的累计值。它包含了该数据库内所有表、所有查询所返回的行数总和。
  • tup_fetched 的区别:
    • pg_stat_database 中,还有一个容易混淆的字段叫 tup_fetched
    • tup_returned: 主要由 顺序扫描 返回的行数。当数据库没有使用索引,需要全表扫描来查找数据时,读取的每一行都计入此项。
    • tup_fetched: 主要由 索引扫描 返回的行数。当数据库通过索引查找到数据行时,通过索引“获取”到的每一行都计入此项。
  • 简单总结:
    • tup_returned ≈ 顺序扫描读到的行数
    • tup_fetched ≈ 索引扫描读到的行数

实践意义与使用场景

tup_returned 是一个非常重要的宏观性能指标:

  • 衡量数据库负载: 这个值在持续、快速地增长,说明数据库正在处理大量的数据读取请求。通过观察其增长速度,可以直观了解数据库的繁忙程度。
  • 分析读取模式: 结合 tup_returnedtup_fetched,可以判断数据库的查询效率。
    • 如果 tup_returned 的值远高于 tup_fetched,说明有大量的查询正在进行全表扫描,这可能意味着 缺少合适的索引
    • 一个健康的、以OLTP(在线事务处理)为主的数据库,通常 tup_fetched 会远大于 tup_returned,因为大部分查询都应该通过索引来快速定位数据。
  • 监控长期趋势: 通过定期记录这个值,可以了解数据访问量的变化趋势,为容量规划提供依据。

示例查询

可以通过以下 SQL 语句查看所有数据库的统计信息:

SELECT 
    datname AS database_name,
    tup_returned,
    tup_fetched,
    tup_inserted,
    tup_updated,
    tup_deleted
FROM 
    pg_stat_database;

结果解读:
假设看到某个数据库的 tup_returned10,000,000,而 tup_fetched500,000。这强烈暗示该数据库中存在效率低下的全表扫描查询,应该去检查一下慢查询日志,并为频繁查询的字段添加索引。

总结

特性说明
中文名返回的元组数
本质从数据库中读取到的行数(累计值)
主要来源顺序扫描(全表扫描)
对比指标tup_fetched(主要来自索引扫描)
主要用途评估数据库负载、分析查询效率(判断是否缺少索引)

简单来说,tup_returned 就是一个说明“数据库自从启动以来,总共读取了多少行数据”的计数器。它是一个非常重要的、用于宏观性能分析和诊断的指标。

到此这篇关于PostgreSQL 中 pg_stat_database 视图的 tup_returned 字段的含义详解的文章就介绍到这了,更多相关PostgreSQL pg_stat_database tup_returned 字段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pgsql 变量赋值方法及注意事项

    pgsql 变量赋值方法及注意事项

    这篇文章主要介绍了pgsql 变量赋值方法及注意事项,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Postgresql psql文件执行与批处理多个sql文件操作

    Postgresql psql文件执行与批处理多个sql文件操作

    这篇文章主要介绍了Postgresql psql文件执行与批处理多个sql文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgreSQL数据库基本概念教程

    postgreSQL数据库基本概念教程

    这篇文章主要为大家介绍了postgreSQL数据库的基本概念教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • PostgreSQL ROW_NUMBER() OVER()的用法说明

    PostgreSQL ROW_NUMBER() OVER()的用法说明

    这篇文章主要介绍了PostgreSQL ROW_NUMBER() OVER()的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • PostgreSQL查看版本信息的操作

    PostgreSQL查看版本信息的操作

    这篇文章主要介绍了PostgreSQL查看版本信息的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL中insert_username的扩展使用

    PostgreSQL中insert_username的扩展使用

    insert_username 是 PostgreSQL 的一个实用扩展,用于自动记录数据行的创建者和最后修改者信息,本文就来详细的介绍一下insert_username扩展,感兴趣的可以了解一下
    2025-06-06
  • Ubuntu中卸载Postgresql出错的解决方法

    Ubuntu中卸载Postgresql出错的解决方法

    这篇文章主要给大家介绍了关于在Ubuntu中卸载Postgresql出错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • Navicat连接postgresql时出现'datlastsysoid does not exist'报错问题完美解决

    Navicat连接postgresql时出现'datlastsysoid does not exist&

    这篇文章主要给大家介绍了关于Navicat连接postgresql时出现'datlastsysoid does not exist'报错问题的完美解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • docker安装Postgresql数据库及基本操作

    docker安装Postgresql数据库及基本操作

    PostgreSQL是一个强大的开源对象-关系型数据库管理系统,以其高可扩展性和标准化而著称,这篇文章主要介绍了docker安装Postgresql数据库及基本操作的相关资料,需要的朋友可以参考下
    2025-03-03
  • PostgreSQL 分页查询时间的2种比较方法小结

    PostgreSQL 分页查询时间的2种比较方法小结

    这篇文章主要介绍了PostgreSQL 分页查询时间的2种比较方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论