Postgresql运维信息(一)

1. 运维系统视图

PostgreSQL 提供了一系列系统视图和函数,可以用于获取数据库的运维统计信息。这些信息对于监控和优化数据库性能非常有用。以下是一些常用的 PostgreSQL 运维统计信息:

1.1. pg_stat_activity

这个系统视图包含了当前数据库连接的活动信息,例如正在执行的查询、连接的用户、查询开始时间等。

SELECT * FROM pg_stat_activity;

pg_stat_activity 是一个系统视图,用于显示当前正在连接到 PostgreSQL 数据库的会话信息和活动查询的详细信息。这个视图提供了有关每个当前数据库连接的一些重要信息,方便进行监控和性能调优。

字段名描述详细描述
datid数据库 OID当前数据库的对象标识符(OID)。
datname数据库名连接所在的数据库名称。
pid进程 ID当前会话后端进程的标识符。
usesysid用户 OID连接的用户的对象标识符(OID)。
usename用户名连接的用户名。
application_name应用程序名建立连接的应用程序的名称。
client_addr客户端地址连接到 PostgreSQL 的客户端的IP地址。
client_hostname客户端主机名连接到 PostgreSQL 的客户端的主机名。如果无法解析主机名,则显示IP地址。
client_port客户端端口客户端连接到 PostgreSQL 的端口号。
backend_start后端启动时间后端进程启动的时间戳。
xact_start事务启动时间最近一次事务开始执行的时间戳。
query_start查询启动时间最近一次查询开始执行的时间戳。
state连接状态连接的当前状态。可能的值包括 “活动”、“空闲”、“等待” 等。
state_change状态变更时间最近一次连接状态发生变化的时间戳。
wait_event_type等待事件类型如果连接处于等待状态,表示正在等待的事件的类型。可能的值包括 “IO”、“Lock” 等。
wait_event等待事件名称如果连接处于等待状态,表示正在等待的具体事件名称。

1.2. pg_stat_database

这个系统视图包含了有关每个数据库的统计信息,例如数据库的大小、连接数、提交和回滚次数等。

SELECT * FROM pg_stat_database;

pg_stat_database 是一个 PostgreSQL 的系统视图,提供了关于每个数据库的统计信息。以下是 pg_stat_database 视图中一些重要字段的含义:

字段名描述详细描述
datid数据库 OID每个数据库的唯一标识符(OID)。
datname数据库名称连接所在的数据库名称。
numbackends活动连接数当前数据库的活动连接数。
xact_commit提交事务数量自数据库启动以来的提交事务数量。
xact_rollback回滚事务数量自数据库启动以来的回滚事务数量。
blks_read从磁盘读取的块数自数据库启动以来从磁盘读取的块数量(8KB 块)。
blks_hit从缓存读取的块数自数据库启动以来从缓存读取的块数量(8KB 块)。
tup_returned检索的行数自数据库启动以来检索的行数。
tup_fetched获取的行数自数据库启动以来获取的行数。
tup_inserted插入的行数自数据库启动以来插入的行数。
tup_updated更新的行数自数据库启动以来更新的行数。
tup_deleted删除的行数自数据库启动以来删除的行数。
conflicts冲突数自数据库启动以来发生的冲突数。
temp_files创建的临时文件数自数据库启动以来创建的临时文件数。
temp_bytes使用的临时空间字节数自数据库启动以来使用的临时空间的字节数。
deadlocks死锁数自数据库启动以来发生的死锁数。

1.3. pg_stat_user_tables 和 pg_stat_user_indexes

这两个系统视图分别提供了用户表和索引的统计信息,包括行数、更新次数、索引扫描次数等。

SELECT * FROM pg_stat_user_tables;
SELECT * FROM pg_stat_user_indexes;

1.3.1. pg_stat_user_tables

pg_stat_user_tables 视图是 PostgreSQL 提供的一个系统视图,用于提供关于用户表的统计信息。它包含了与用户表相关的各种统计数据,帮助用户监视和分析数据库中表的活动情况和性能指标。

以下是针对 pg_stat_user_tables 视图字段的详细描述

字段名描述详细描述
relid表的 OID表示统计信息相关的表的对象标识符。
schemaname模式名称表所在模式的名称。
relname表名称表的名称。
seq_scan顺序扫描的次数自数据库重启以来执行顺序扫描的次数。
seq_tup_read通过顺序扫描读取的行数自数据库重启以来通过顺序扫描读取的行数。
idx_scan索引扫描的次数自数据库重启以来执行索引扫描的次数。
idx_tup_fetch通过索引扫描获取的行数自数据库重启以来通过索引扫描获取的行数。
n_tup_ins插入的行数自数据库重启以来插入的行数。
n_tup_upd更新的行数自数据库重启以来更新的行数。
n_tup_del删除的行数自数据库重启以来删除的行数。
n_tup_hot_upd热更新的行数自数据库重启以来进行热更新的行数。
n_live_tup当前存活的行数当前存在的未标记为删除的行数。
n_dead_tup当前死亡的行数当前被标记为删除但尚未被清理的行数。
last_vacuum最后一次 VACUUM 执行的时间表最后一次执行 VACUUM 操作的时间。
last_autovacuum最后一次自动 VACUUM 执行的时间表最后一次自动执行 VACUUM 操作的时间。
last_analyze最后一次 ANALYZE 执行的时间表最后一次执行 ANALYZE 操作的时间。
last_autoanalyze最后一次自动 ANALYZE 执行的时间表最后一次自动执行 ANALYZE 操作的时间。
vacuum_countVACUUM 操作的计数自数据库重启以来执行 VACUUM 操作的次数。
autovacuum_count自动 VACUUM 操作的计数自数据库重启以来执行自动 VACUUM 操作的次数。
analyze_countANALYZE 操作的计数自数据库重启以来执行 ANALYZE 操作的次数。
autoanalyze_count自动 ANALYZE 操作的计数自数据库重启以来执行自动 ANALYZE 操作的次数。

1.3.2. pg_stat_user_indexes

pg_stat_user_indexes 视图提供了有关用户创建的索引的统计信息,用于监视和分析这些索引的活动情况和性能指标。

字段名描述详细描述
relid索引所属表的 OID表示索引所属的表的对象标识符(OID)。
indexrelname索引名称索引的名称。
schemaname模式名称索引所在的模式的名称。
idx_scan索引扫描的次数自数据库启动以来执行索引扫描的次数。
idx_tup_read通过索引扫描获取的行数自数据库启动以来通过索引扫描读取的行数。
idx_tup_fetch通过索引扫描获取的行数自数据库启动以来通过索引扫描获取的行数(通常与 idx_tup_read 类似,但在某些情况下可能会有差异)。

1.4. pg_stat_bgwriter

SELECT * FROM pg_stat_bgwriter;

pg_stat_bgwriter 视图提供了有关后台写入进程(background writer)的统计信息。这个视图包含了后台写入进程的性能指标,帮助用户监视数据库的后台写入活动情况。

字段名描述
checkpoints_timed周期性检查点的触发次数(通过时间间隔触发)
checkpoints_req请求性检查点的触发次数(通过请求触发)
checkpoint_write_time检查点写入到磁盘的时间(以毫秒为单位)
checkpoint_sync_time检查点同步到磁盘的时间(以毫秒为单位)
buffers_checkpoint由检查点写入的缓冲区数量
buffers_clean后台写入进程释放的脏数据缓冲区数量
maxwritten_clean单个检查点中释放的最大脏数据缓冲区数量
buffers_backend后台写入进程主动写入的缓冲区数量
buffers_alloc分配的共享缓冲区数量
stats_reset统计信息重置的时间戳

pg_stat_bgwriter 视图中的这些字段提供了关于后台写入进程活动的各种统计信息,例如检查点的触发次数、写入时间、缓冲区写入和释放情况等。这些信息对于监视数据库的后台写入活动并评估数据库性能非常有用。

1.5. pg_stat_replication

pg_stat_replication 是一个系统视图,用于在 PostgreSQL 中查看关于流复制(streaming replication)的统计信息。它提供了有关当前正在进行的流复制连接的统计数据,允许用户监视和管理 PostgreSQL 流复制的状态。

SELECT * FROM pg_stat_replication;
字段名描述
pid流复制进程的后端进程 ID
usesysid备库的系统标识符
usename连接流复制的用户名
application_name连接的应用程序名称
client_addr连接的客户端地址
client_hostname连接的客户端主机名
client_port连接的客户端端口号
backend_start流复制进程启动时间
state流复制连接状态
sent_location主服务器发送到流复制客户端的位置
write_location流复制客户端已写入到磁盘的位置
flush_location流复制客户端已确认已刷新到磁盘的位置
replay_location流复制客户端正在回放的位置
sync_priority流复制连接的同步优先级
sync_state流复制连接的同步状态

1.6. pg_stat_progress_vacuum

pg_stat_progress_vacuum 是一个系统视图,用于在 PostgreSQL 中查看正在执行的 VACUUM 进程的进度信息。它提供了有关正在进行的 VACUUM 操作的统计数据,允许用户监视和了解 VACUUM 操作的进度和状态。

SELECT * FROM pg_stat_progress_vacuum;
字段名描述
pidVACUUM 进程的后端进程 ID
datid正在执行 VACUUM 的数据库 OID
relid正在执行 VACUUM 的表的 OID
phaseVACUUM 操作的阶段
heap_blks_total表的总块数(以块为单位)
heap_blks_scanned已扫描的块数
heap_blks_vacuumed已清理的块数
heap_blks_index_cleaned已清理的索引块数

在 PostgreSQL 中,VACUUM 是一种重要的数据库维护操作,用于管理数据库中的空间和性能。VACUUM 主要用于以下几个方面:

  1. 释放过期的行版本空间:PostgreSQL 使用多版本并发控制(MVCC)来管理事务。当一个行被更新或删除时,旧的行版本不会立即从磁盘中删除,而是被标记为可被清理。VACUUM 会释放这些被标记为可清理的行版本所占用的空间。

  2. 更新统计信息:VACUUM 运行时会更新数据库中的统计信息,这些信息是优化查询计划的基础。更新这些统计信息有助于 PostgreSQL 优化查询,提高查询性能。

  3. 避免表空间膨胀:长时间运行的数据库操作会产生大量不再使用的空间(如删除、更新等操作会造成存储空间碎片化)。VACUUM 可以帮助回收这些空间,减少表的膨胀,使得表的存储更加紧凑。

  4. 减少事务ID的消耗:每个活动的事务都会消耗事务ID。通过清理旧的行版本和过期事务的元数据,VACUUM 可以减少事务ID的消耗。

VACUUM 是 PostgreSQL 数据库维护的一个关键操作,对于保持数据库性能和空间管理至关重要。通常,定期运行 VACUUM 是一个良好的实践,特别是在高写入负载的数据库中。

1.6.1. 如何清理 VACUUM

在 PostgreSQL 中执行 VACUUM 可以通过以下几种方式进行:

1. 手动执行 VACUUM
  • VACUUM 整个数据库:运行以下命令可以对整个数据库执行 VACUUM 操作:

    VACUUM;
    
  • VACUUM 单个表:指定表名执行 VACUUM 操作:

    VACUUM tablename;
    
2. 自动化执行 VACUUM
  • 自动化 VACUUM:可以设置自动执行 VACUUM 的策略。例如,使用 autovacuum 功能,通过配置参数 autovacuumautovacuum_vacuum_scale_factor 等来启用自动 VACUUM。
3. 在命令行执行 VACUUM
  • 通过命令行工具执行:使用命令行工具 psqlpg_ctl 来执行 VACUUM 操作。
注意事项
  • 执行 VACUUM 通常会锁定被清理的对象(表),因此在高负载的生产环境中要谨慎执行,避免对正常业务产生影响。
  • 在执行 VACUUM 的同时,建议先备份数据库以防意外情况发生。
  • 避免频繁地手动执行 VACUUM,尤其是对于活跃更新频繁的数据库,可以考虑使用自动化的 VACUUM 策略。

总的来说,VACUUM 是一个维护性的操作,可以通过命令行工具、SQL 命令或设置自动执行来管理数据库中的空间和性能。

1.7. pg_stat_progress_analyze

pg_stat_progress_analyze 是 PostgreSQL 中的一个系统视图,用于查看正在进行的 ANALYZE 操作的进度信息。它提供了关于当前 ANALYZE 操作的统计数据,允许用户监视和了解 ANALYZE 操作的执行情况。

SELECT * FROM pg_stat_progress_analyze;
字段名描述
pidANALYZE 进程的后端进程 ID
datid正在执行 ANALYZE 的数据库 OID
relid正在执行 ANALYZE 的表的 OID
phaseANALYZE 操作的阶段
heap_blks_total表的总块数(以块为单位)
heap_blks_scanned已扫描的块数
heap_blks_vacuumed已清理的块数
num_index_scans已扫描的索引数
max_tid最大的可见行版本号

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能驾驶汽车虚拟仿真视频数据理解(一)

赛题官网 datawhale 赛题介绍 跑通demo paddle 跑通demo torch 提交的障碍物取最主要的那个?不考虑多物体提交。障碍物,尽可能选择状态发生变化的物体。如果没有明显变化的,则考虑周边的物体。车的状态最后趋于减速、停止,时序…

Java语言基础第四天

笔记: Scanner接收用户输入的数据: package day04; import java.util.Scanner; //1.导入扫描仪 //Scanner结构的演示 public class ScannerDemo {public static void main(String[] args) {Scanner scan new Scanner(System.in); //2.新建一个扫描仪sca…

Ubuntu18.04运行gazebo的launch文件[model-4] process has died报错

启动gazebo仿真环境报错[model-4] process has died [model-4] process has died [pid 2059, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -urdf -model mycar -param robot_description __name:model __log:/root/.ros/log/8842dc14-877c-11ee-a9d9-0242a…

如何在 Vue 中使用 防抖 和 节流

在监听频繁触发的事件时,一定要多加小心,比如 用户在输入框打字、窗口大小调整、滚动、Intersection Observer 事件。 这些事件总是被频繁触发,可能 几秒一次。如果针对每次事件都发起 fetch 请求(或类似的行为)&…

ts学习04-Es5中的类和静态方法 继承

最简单的类 function Person() {this.name "张三";this.age 20; } var p new Person(); console.log(p.name);//张三构造函数和原型链里面增加方法 function Person(){this.name张三; /*属性*/this.age20;this.runfunction(){console.log(this.name在运动);} }…

redis-持久化

目录 一、RDB RDB触发保存的两种方式 优劣势总结 二、AOF AOF持久化流程: 1、开启AOP 2、异常恢复 3、AOF的同步频率设置 4、ReWrite压缩 5、优劣势总结 Redis 4.0 混合持久化 redis是内存数据库,所有的数据都会默认存在内存中,如…

【2024系统架构设计】 系统架构设计师第二版-未来信息综合技术

目录 一 信息物理系统 二 人工智能 三 机器人技术 四 边缘计算 五 数字孪生体

时间序列预测实战(十七)PyTorch实现LSTM-GRU模型长期预测并可视化结果(附代码+数据集+详细讲解)

一、本文介绍 本文给大家带来的实战内容是利用PyTorch实现LSTM-GRU模型,LSTM和GRU都分别是RNN中最常用Cell之一,也都是时间序列预测中最常见的结构单元之一,本文的内容将会从实战的角度带你分析LSTM和GRU的机制和效果,同时如果你…

kubernetes v1.24.7 + docker

1. 背景 采用containerd作为容器运行时发现集群总是不稳定,因此切换成了docker 作为容器运行时; rootorangepi3b:~# uname -a Linux orangepi3b 5.10.160-rockchip-rk356x #1.0.2 SMP Thu Sep 21 17:07:22 CST 2023 aarch64 aarch64 aarch64 GNU/Linux…

论文导读 | 大语言模型与知识图谱复杂逻辑推理

前 言 大语言模型,尤其是基于思维链提示词(Chain-of Thought Prompting)[1]的方法,在多种自然语言推理任务上取得了出色的表现,但不擅长解决比示例问题更难的推理问题上。本文首先介绍复杂推理的两个分解提示词方法&a…

【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个带头双向循环链表: 该带头双向循环链表使用动态内存分配空间,可以用来存储任意数量的同类型数据. 带头双向循环链表结点(No…

Windows 安装 Docker Compose

目录 前言什么是 Docker Compose ?安装 Docker Compose配置环境变量结语开源项目 前言 在当今软件开发和部署领域,容器化技术的应用已成为提高效率和系统可移植性的关键手段。Docker,作为领先的容器化平台,为开发人员提供了轻松构…

2023 极术通讯-汽车“新四化”路上,需要一片安全山海

导读:极术社区推出极术通讯,引入行业媒体和技术社区、咨询机构优质内容,定期分享产业技术趋势与市场应用热点。 芯方向 【Armv9】-动态TrustZone技术的介绍 动态 TrustZone 是提供多租户安全媒体 pipeline 的绝佳工具。完全不受操作系统、虚…

Java的动态代理Proxy.newProxyInstance

本文参考:java动态代理Proxy.newProxyInstance-CSDN博客 一、动态代理定义 利用Java的反射技术,在运行期间创建可以实现某些给定接口的新类,称为动态代理类。 此处代理的接口(Interfaces),不是类(Class&…

CSS中2种复合选择器

1:交集选择器 作用:选中同时符合多个条件的元素 语法:选择器1选择器2选择器n{} 注意:若交集选择器中有元素选择器,必须使用元素选择器开头 2:并集选择器 作用:同时选择多个选择器对应的元素 语法:选择…

矩阵的QR分解

矩阵的QR分解 GramSchmidt 设存在 B { x 1 , x 2 , … , x n } \mathcal{B}\left\{\mathbf{x}_{1},\mathbf{x}_{2},\ldots,\mathbf{x}_{n}\right\} B{x1​,x2​,…,xn​}在施密特正交化过程中 q 1 x 1 ∣ ∣ x 1 ∣ ∣ q_1\frac{x_1}{||x_1||} q1​∣∣x1​∣∣x1​​ q k …

Axure RP Pro 8 mac/win中文版:打造无限可能的原型设计工具

在如今的数字化时代,原型设计工具越来越受到设计师和产品经理们的重视。而Axure RP Pro8作为一款强大的原型设计工具,成为了众多专业人士的首选。 首先,Axure RP Pro8具备丰富的功能。它提供了多种交互元素和动画效果,使得用户可…

java8 LocalDate、LocalTime、LocalDateTime

LocalDate:表示日期(年月日) LocalTime :表示时间(时分秒) LocalDateTime:表示时间 日期 (年月日时分秒),是java8最常用的日期类 这些类使用了final来修饰&am…

电商API接口对接过程中有哪些业务问题需要注意

接口对接流程梳理 产品经理 知晓自己负责系统做什么,外接三方系统做什么。 系统对接产品经理实操步骤: ①与公司业务人员沟通,与系统对接方产品/技术描述业务场景,沟通发放接口文档材料 ②拿到材料之后API接口过多请对方圈定…

邮件|gitpushgithub报错|Lombok注解

基于 Spring Boot 搭建一个定时发送邮件的项目可以按照以下步骤进行: 创建一个新的 Spring Boot 项目,并添加所需的依赖。在 pom.xml 文件中添加以下依赖项(根据你的需要进行调整): xml org.springframework.boot sp…