PgSQL技术内幕-Analyze做的那些事-pg_stat_all_tables

2023-12-01 18:45

本文主要是介绍PgSQL技术内幕-Analyze做的那些事-pg_stat_all_tables,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PgSQL技术内幕-Analyze做的那些事-pg_stat_all_tables

pg_stat_all_tables视图中记录有analyze信息,比如何时做的analyze、表元组个数(活元组、死元组)等。重启后发现该视图中表的统计信息重置不见了,发生了什么?

1、pg_stat_all_tables

先理解下该视图,该视图定义如下。从视图定义可以看到相关统计信息都是通过一系列函数获取的:

yzs=# \d+ pg_stat_all_tables视图 "pg_catalog.pg_stat_all_tables"栏位         |           类型           | 校对规则 | 可空的 | 预设 | 存储  | 描述
---------------------+--------------------------+----------+--------+------+-------+------relid               | oid                      |          |        |      | plain |schemaname          | name                     |          |        |      | plain |relname             | name                     |          |        |      | plain |seq_scan            | bigint                   |          |        |      | plain |seq_tup_read        | bigint                   |          |        |      | plain |idx_scan            | bigint                   |          |        |      | plain |idx_tup_fetch       | bigint                   |          |        |      | plain |n_tup_ins           | bigint                   |          |        |      | plain |n_tup_upd           | bigint                   |          |        |      | plain |n_tup_del           | bigint                   |          |        |      | plain |n_tup_hot_upd       | bigint                   |          |        |      | plain |n_live_tup          | bigint                   |          |        |      | plain |n_dead_tup          | bigint                   |          |        |      | plain |n_mod_since_analyze | bigint                   |          |        |      | plain |last_vacuum         | timestamp with time zone |          |        |      | plain |last_autovacuum     | timestamp with time zone |          |        |      | plain |last_analyze        | timestamp with time zone |          |        |      | plain |last_autoanalyze    | timestamp with time zone |          |        |      | plain |vacuum_count        | bigint                   |          |        |      | plain |autovacuum_count    | bigint                   |          |        |      | plain |analyze_count       | bigint                   |          |        |      | plain |autoanalyze_count   | bigint                   |          |        |      | plain |
视图定义:SELECT c.oid AS relid,n.nspname AS schemaname,c.relname,pg_stat_get_numscans(c.oid) AS seq_scan,pg_stat_get_tuples_returned(c.oid) AS seq_tup_read,sum(pg_stat_get_numscans(i.indexrelid))::bigint AS idx_scan,sum(pg_stat_get_tuples_fetched(i.indexrelid))::bigint + pg_stat_get_tuples_fetched(c.oid) AS idx_tup_fetch,pg_stat_get_tuples_inserted(c.oid) AS n_tup_ins,pg_stat_get_tuples_updated(c.oid) AS n_tup_upd,pg_stat_get_tuples_deleted(c.oid) AS n_tup_del,pg_stat_get_tuples_hot_updated(c.oid) AS n_tup_hot_upd,pg_stat_get_live_tuples(c.oid) AS n_live_tup,pg_stat_get_dead_tuples(c.oid) AS n_dead_tup,pg_stat_get_mod_since_analyze(c.oid) AS n_mod_since_analyze,pg_stat_get_last_vacuum_time(c.oid) AS last_vacuum,pg_stat_get_last_autovacuum_time(c.oid) AS last_autovacuum,pg_stat_get_last_analyze_time(c.oid) AS last_analyze,pg_stat_get_last_autoanalyze_time(c.oid) AS last_autoanalyze,pg_stat_get_vacuum_count(c.oid) AS vacuum_count,pg_stat_get_autovacuum_count(c.oid) AS autovacuum_count,pg_stat_get_analyze_count(c.oid) AS analyze_count,pg_stat_get_autoanalyze_count(c.oid) AS autoanalyze_countFROM pg_class cLEFT JOIN pg_index i ON c.oid = i.indrelidLEFT JOIN pg_namespace n ON n.oid = c.relnamespaceWHERE c.relkind = ANY (ARRAY['r'::"char", 't'::"char", 'm'::"char"])GROUP BY c.oid, n.nspname, c.relname;

我们以n_live_tup这一列为例,看下这个统计信息来自哪里。需要梳理下pg_stat_get_live_tuples函数:可以看到统计信息来自pg_stat_tmp/global.stat(由配置项pgstat_temp_directory控制,默认pg_stat_tmp)

b7af19428a960f8c4bf2a9873e0e4dcd.png

2、正常关闭服务

关闭服务前,统计信息文件位于pg_stat_tmp:

246f0a99db1d41f025180e3ac68e8b45.png

bd152ea5bd298804f4c8e4899ebb7e47.png

关闭服务后:统计信息文件移动到了pg_stat

ad56af9eb0241a5cf9f518c9f8bf328a.png

fd7d8020467c0fcd7bbc38b070389a64.png

3、再次正常启动服务

发现统计信息文件又移动到了,pg_stat_tmp。此时查看pg_stat_all_tables视图,发现统计信息是存在的:

80134335aa18f5cfb9dc3e1c528101af.png

为什么重启后统计信息并没有重置呢?

经分析,在崩溃重启恢复时,会将pg_stat_tmp和pg_stat目录都进行重置,此后重启成功后,因没有统计信息文件,就导致pg_stat_all_tables视图中的信息为空了

97a66742b315410ecf381577331e0725.png

这篇关于PgSQL技术内幕-Analyze做的那些事-pg_stat_all_tables的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/442275

相关文章

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保