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

PostgreSQL 中 pg_stat_database 视图的 tup_returned 字段详解

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

核心定义

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

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

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


详细解释

  1. 统计的是什么?

    • 它统计的是由 所有类型的查询(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
  2. 统计范围:

    • 这个统计是 数据库级别 的。pg_stat_database 视图中的这个值,是该 PostgreSQL 集群中 单个数据库 的累计值。它包含了该数据库内所有表、所有查询所返回的行数总和。
  3. tup_fetched 的区别:

    • pg_stat_database 中,还有一个容易混淆的字段叫 tup_fetched
    • tup_returned: 主要由 顺序扫描 返回的行数。当数据库没有使用索引,需要全表扫描来查找数据时,读取的每一行都计入此项。
    • tup_fetched: 主要由 索引扫描 返回的行数。当数据库通过索引查找到数据行时,通过索引“获取”到的每一行都计入此项。
    • 简单总结:
      • tup_returned ≈ 顺序扫描读到的行数
      • tup_fetched ≈ 索引扫描读到的行数

实践意义与使用场景

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

  1. 衡量数据库负载: 这个值在持续、快速地增长,说明数据库正在处理大量的数据读取请求。通过观察其增长速度,可以直观了解数据库的繁忙程度。

  2. 分析读取模式: 结合 tup_returnedtup_fetched,可以判断数据库的查询效率。

    • 如果 tup_returned 的值远高于 tup_fetched,说明有大量的查询正在进行全表扫描,这可能意味着 缺少合适的索引
    • 一个健康的、以OLTP(在线事务处理)为主的数据库,通常 tup_fetched 会远大于 tup_returned,因为大部分查询都应该通过索引来快速定位数据。
  3. 监控长期趋势: 通过定期记录这个值,可以了解数据访问量的变化趋势,为容量规划提供依据。

示例查询

可以通过以下 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 就是一个说明“数据库自从启动以来,总共读取了多少行数据”的计数器。它是一个非常重要的、用于宏观性能分析和诊断的指标。

http://www.dtcms.com/a/560648.html

相关文章:

  • 网络原理--HTTP
  • 网站开发宣传标语2017做网站还赚钱吗
  • 海南网站建设公司哪家好wordpress 有点慢
  • Flutter 存储管理:从基础到进阶的完整指南
  • 鸿蒙Flutter三方库适配指南:09.版本升级适配
  • AutoAnalyze智能数据分析助手开源项目
  • “监狱”风云:如何设计爬虫的自动降级与熔断机制?
  • 关于力扣3721. 最长平衡子数组 II线段树解法的反思
  • Visual Basic.NET 的特性
  • LabVIEW的Vision边缘工具(Edge Tool)功能
  • LabVIEW工业零件尺寸测量
  • 网站建设自建的优点百度指数在线查询前100
  • 【AI智能体】Docker 部署 Coze应用服务实战操作详解
  • QAxios研发笔记(二):在Qt环境下基于Promise风格简化Http的Post请求
  • 用 Flink CDC 将 MySQL 实时同步到 StarRocks
  • 基础开发工具---软件包装管理器及vim
  • 邮箱登陆嵌入网站义乌网站建设方案详细
  • 榨干 CPU 性能:通过绑核将 Redis 尾延迟减半!
  • 数据结构之栈和队列-队列
  • 十九、STM32的TIM(十)(编码器)
  • FSDP(Fully Sharded Data Parallel)全分片数据并行详解
  • Transformer 模型详解:从输入到输出的全流程剖析
  • 网站开发工单营销型网站建设设定包括哪些方面
  • EF Core 数据库迁移
  • 【攻防实战】通达OA文件上传联动Cobalt Strike打穿三层内网(下)
  • 网站备案 教程广州花都区网站建设
  • FPC-40P-05转接板-嘉立创EDA设计
  • Java核心概念深度解析:从包装类到泛型的全面指南
  • 灵途科技亮相NEPCON ASIA 2025 以光电感知点亮具身智能未来
  • flash-attn安装过程中编译错误