首页 > 其他分享 >10.PG的统计信息

10.PG的统计信息

时间:2023-12-24 15:57:40浏览次数:24  
标签:test1 10 postgres 信息 relname PG 统计 pg

1.PG的统计信息

  数据的统计信息反映的是数据的分布情况,PG执行SQL语句会经过解析的过程和查询优化过程。

  • 解析过程:解析器将sql语句分解成数据结构并传递给后续步骤
  • 查询优化过程:查询优化器发现执行sql语句的最佳方案,并生产执行计划。
  • 查询优化器sql决定sql语句如何执行依赖于数据库的统计信息,因此,数据库的统计信息对于sql语句的优化来说是非常重要的。

2.查看数据库的统计信息 

  在pg中主要用两个系统表存储数据库的统计信息

  • pg_class:用于记录表和索引的行数、块数等统计信息
  • pg_statistic:用于记录由analyze命令创建的统计信息,这些统计信息由查询优化器使用。
  • 由于pg_statistic记录的数据不易阅读,可以使用pg_statis来查看

3.示例

postgres=# select * from test1;
 tid | tname 
-----+-------
   1 | l1
   2 | l2
   3 | l3
(3 rows)
# 查看该表的行数以及占用的pages,此时看到reltuples和relpages显示的都是0,但是上面查询是有3条数据,所以这个pg_class统计不正确
postgres=# select oid,relname,relpages,reltuples from pg_class where relname='test1';
  oid  | relname | relpages | reltuples 
-------+---------+----------+-----------
 16397 | test1   |        0 |         0

postgres=# select * from pg_stats where  tablename='test1';

使用analyze命令统计信息

postgres=# analyze  verbose test1;
INFO:  analyzing "public.test1"
INFO:  "test1": scanned 1 of 1 pages, containing 3 live rows and 0 dead rows; 3 rows in sample, 3 estimated total rows
ANALYZE
postgres=# 
postgres=# 
postgres=# select oid,relname,relpages,reltuples from pg_class where relname='test1';
-[ RECORD 1 ]----
oid       | 16397
relname   | test1
relpages  | 1
reltuples | 3       #这里看到已经有3条数据了,此时说明这张表的统计信息准确了。

此时查看pg_stats表

postgres=# select tablename as "表名",attname as "列表",avg_width as "平均长度",null_frac as "空值率",n_distinct as "去重后值的个数" from pg_stats where tablename='test1';
 表名   |  列表  |  平均长度 |  空值率 |   去重后率 
-------+-------+----------+--------+----------------
 test1 | tid   |        4 |      0 |             -1
 test1 | tname |        3 |      0 |             -1

 

标签:test1,10,postgres,信息,relname,PG,统计,pg
From: https://www.cnblogs.com/zmc60/p/17924454.html

相关文章

  • [LeetCode Hot 100] LeetCode42. 接雨水
    题目描述思路一:单调栈柱子的高度递减的时候是装不了水的,当碰到第一个比之前高的柱子才可以装水。此时计算栈顶索引能装的水:宽:i-left-1(这个left为栈顶元素pop之后的peek值)高:min(height[left],height[i])-height[top]该题维护的是一个单调递减栈方法一:对应思路......
  • [LeetCode Hot 100] LeetCode84. 柱状图中最大的矩形
    题目描述思路:枚举+优化(单调栈)先固定矩阵的高。然后向左向右找到第一个比当前元素值小的元素,确定好左右边界。对于元素2来说:向左找到第一个比当前元素值小的元素:1的右边界向右找到第一个比当前元素值小的元素:3的右边界枚举每个元素的上边界,确定往左数最远到达哪个边界......
  • 9.PG表的磁盘碎片清理
    1.磁盘碎片在PG中删除行时,这些行为只是被标记为'dead',并不是真正从物理存储上进行删除,因为空间也没有被释放回收。在PG中,除非进行自动的清理(vacuum)或者手工的清理,否则数据块所占用的物理空间是不会释放,在物理存储空间被回收之前,会导致存储空间中存在很多空洞。大量的更......
  • mysql8.0 OCP 105
    105、Choosefour.YoumuststoreconnectionparametersforconnectingaLinux-basedMySQLclienttoaremoteWindows-basedMySQLserverlisteningonport3309.您必须存储连接参数,以便将基于linux的MySQL客户端连接到侦听端口3309的基于Windows的远程MySQL服务器。Wh......
  • 10.2k star,推荐一款开源流量监控工具,sniffnet
    1简介如果你正在寻找一种快速简便的方法来监控你的网络流量,这个用Rust编写的跨平台应用程序sniffnet可以试试sniffnet是一种网络监控工具,可帮助您轻松跟踪互联网流量。无论你是想收集统计数据,还是需要更深入地检查网络中发生了什么,这个应用都能让你得到保障。2安装github......
  • 【论文精读#1】SPGAN-DA:用于领域自适应遥感图像语义分割的语义保留生成对抗网络
    作者:YanshengLi发表年代:2023使用的方法:无监督领域自适应(UDA)、GAN、ClassMix、边界增强来源:IEEETGRS方向:语义分割期刊层次:CCFB;工程技术1区;IF8.2文献链接:https://doi.org/10.1109/TGRS.2023.3313883LiY,ShiT,ZhangY,etal.SPGAN-DA:Semantic-Pres......
  • 瑞萨R5F1026A笔记
    R5F1026A一款8位MCU一、开发环境使用瑞萨CS+forCA,CXIDE开发新建工程,project->createnewproject...,选择MCU型号,设置工程名、工程路径,注意路径不要出现中文设置codegeneratorclockgeneratorportinterrupt timer watchdog 点击generatorcode生成代码......
  • 7.PG的控制文件
    控制文件控制文件记录了数据库运行时的一些信息,如数据库OID,是否为打开状态,预写日志的位置、检查点的信息等。控制文件位置默认保存在$PGDATA/global目录下,pg_control这个就是。控制文件内容[postgres@iZwz909xeqcc7ouqk8528zZ16]$pg_controldatapg_control......
  • UAV2101~2105串行通信训练
    训练001、单片机与PC机通信,11.0592M晶振,波特率9600。实现任意字符发送。#include<reg52.h>bitbusy;voidSendData(unsignedchardat){while(busy);//判断是否忙busy=1;SBUF=dat;}voidSendString(char*s){while(*s)//Checktheendo......
  • 输入 10 进制数转换为二进制进行输出
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ intj=0;//用于记录每个二进制位(倒叙) ints=0;//记录输入的数 intarr[256]={0}; printf("请输入数字\n"); scanf("%d",&s); inttmp=s; inti=1;//731 while(s>......