PostgreSQL 性能优化和体系化运维(二)|学习笔记

简介: 快速学习 PostgreSQL 性能优化和体系化运维(二)

开发者学堂课程【PostgreSQL 实战进阶PostgreSQL 性能优化和体系化运维(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/112/detail/1907


PostgreSQL 性能优化和体系化运维(二)

 

内容介绍:

一、操作系统优化

二、数据库配置优化

三、日常操作

四、运维方案

三、日常操作:

下面学习数据库日常操作,比如查看这个数据库的版本 select 可以看到很详细PG的版本,然后它是基于什么平台,GCC 编译的,是什么时候创建的,64位,有很详细的信息。

image.png

查看一个数据库启动多久,用 select pg_postmaster_start_time();这个函数。

查看最后 load 配置文件的时间,select pg_conf_load_time();这个文件可以手工load。

查看显示数据库时区的,show timezone,都是亚洲上海的时间就够了。

查看还有哪些数据库psql -1,

查看当前用户,select user.select current_user.session_user,实际上他是个特殊的函数。

 image.png

查看当前连接的数据库名称

select current_catalog,current_database();

 image.png

查看当前客户端的 IP 及端口

select inet_dient__addr(),inet_dient_port();

查看当前数据库服务器的 IO 及端口

select inet_server_addr(),inet_server_port();

查询当前session的后台服务进程的pid

Select pq_backend_pid();

查看参数配置

Show shared_buffers

Select current_setting (‘shared_buffer’);

查看当前正在写的 WAL 文件

9X:select pg_xlogfile_name(pg_current_xlog_location());

>=10版本:select pg_walfile_name(pg_current_wal_lsn_());

查看当前 WAL 的 buffer 还有多少字节没有刷到磁盘中

9X:select pg_xlog_location_diff

(pg_current_xlog_insert_location(),pg_current_xlog_location());

>=10版本:select pg_wal_lsn_diff

(pg_current_wal_insert_lsn(),pg_current_wal_lsn());

查看数据库实例是否正在做基础备份

Select pg_is_in_backup(),pg_backup_start_time();

当前数据库实例是Hot Standby状态还是正常数据库状态

Select pg_is_in_recovery();

Pg_controldata lgrep state

查看数据库的大小

Select pg_database_size(‘osdba’);

查看表的大小

Select pg_size_pretty(pg_relation_size(‘ipdb2’));

Select pg_size_pretty(pg_total_size(‘ipdb2’));

查看某个表上索引的大小

Select pg_size_pretty(pg_indexes_size(‘ipdb2’));(ipdb2是表名)

查看表空间的大小

Select pg_size_pretty(pg_tablespace_size(‘pg_global’));

Select pg_size_pretty(pg_tablespace_size(‘default’));

查看表对应的数据文件

Select pg_relation_filepath(‘test01’);

让配置生效

Pg_ctl reload

Select pg_reload_conf();

切换 Log 日志文件

Select pg_rotate_logfile();

切换 WAL 日志文件

9. x:select pg_switch_xlog();

10. >=10版本:selectpg_switch_wal();

手工产生checkpoint

Checkpoint;

查询正在运行的SQL(也能看到等待事件)

Select*from pg_stat_activity;

取消一个长时间运行的查询SQL(非DML)

Select pg_cancel_backend(pid);

终止一个进行运行的SQL(包括DML)

Select pg_terminate_backend(pid);

杀掉除自己之外的连接(危险)

Select usename,datname,client_addr,pg_terminate_backend(pid)from pg_stat_activity where pid<>

Pg_backend_pid();

查看备库

Select*from pg_stat_relication;

暂停备库的wal日志应用

select pg_xlog_replay_pause();

继续备库的wal日志应用

pg_xlog_replay_resume();

检查备库的wal日志应用是否暂停了

pg_is_xlog_replay_paused();

在整个这个日常操作里面,在PG里面很多的命令,这些命令可以做很多这些事情。

 

四、运维方案:

制定运维整体方案,首先其实是要制定一个完善的运维的一个整体的方案,比如运维的环境的监控,日常数据库的管理要哪些内容,数据库备份与恢复性能监控,性能调用,环境里面经常监控 CPU 网络,这个里面以 为 C PU 过高,网络流量过大,然后磁盘空间监控,日常的时候,包括数据库的年龄监控,如果年龄超了很多,数据可能就停了,这个东西也是要经常看的,包括表和物化视图上索引的数量,以及数据库级的统计信息。日常数据库管理包括实例状态检查、PG 监听是否正常、WAL日志检查表空间检查、日志检查、备份有效性检查的方法。数据库备份与恢复包括备份策略设定、物理备份、逻辑备份、备份脚本、恢复脚本或恢复操作过程、如何防止误删除。性能监控包括检查等待事件、磁盘 IO 监控、TOP 10 SQL、数据库的每秒查询的行,插入的行,删除的行,更新的行。性能调优包括 OS 层面优化、PG 参数优化、SQL 优化、IO 优化、结构优化,如读写分离、分库分表。

 image.png

在运维的工作里面,比如表、索引、物化视图这些空间的年龄的、Deadtuple,其中还有一个比较需要注意序列剩余次数的监控,还包括HA、备份,归档,备库延迟状态等等都需要检查。

网卡利用率,CPU 利用率,IO 利用率,内存利用率

慢 SQL 及当时的 analyze 执行计划

TOP SQL

数据库级别统计信息:回滚数,提交数,命中率,死锁次数,IO TIME,tuple DML次数

运维工具比较细。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
Java Spring
【Spring Boot 源码学习】走近 AutoConfigurationImportSelector
本篇笔者带大家走近 AutoConfigurationImportSelector,从整体上了解 Spring Boot 自动装配功能
410 2
【Spring Boot 源码学习】走近 AutoConfigurationImportSelector
|
安全 关系型数据库 数据库
Postgresql 数据库用户权限授权(用户角色分配模式)
为了更方面和安全地管理数据库用户账号权限安全,实现通过用户角色代理的模式,实现用户账号功能授权的模式
20236 2
Postgresql 数据库用户权限授权(用户角色分配模式)
|
Java jenkins 持续交付
SonarQube安装遇到的常见报错问题启动不起来等
SonarQube安装遇到的常见报错问题启动不起来等
|
数据采集 JSON JavaScript
如何通过 PhantomJS 模拟用户行为抓取动态网页内容
随着网页技术的进步,JavaScript 动态加载内容已成为新常态,对传统静态网页抓取提出挑战。PhantomJS 作为无头浏览器,能模拟用户行为并执行 JavaScript,成为获取动态网页内容的有效工具。本文介绍如何使用 PhantomJS 结合爬虫代理 IP 技术,抓取大众点评上的商家信息,包括店名、地址和评分等关键数据,从而更高效地获取动态网页内容,支持数据收集与分析。
710 13
如何通过 PhantomJS 模拟用户行为抓取动态网页内容
|
监控 Linux
在Linux中,如何查看系统运行时间?
在Linux中,如何查看系统运行时间?
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
4601 11
|
关系型数据库 MySQL Linux
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
在Linux系统中使用tar.xz压缩包安装MySQL数据库的详细步骤。包括下载MySQL压缩包,解压到指定目录,创建mysql用户和组,设置目录权限,初始化MySQL,配置my.cnf文件,启动服务,以及修改root用户密码。此外,还提供了如何设置Windows远程登录MySQL服务器的方法。
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
1939 0
|
存储 关系型数据库 MySQL
【MYSQL】—— MySQL 在 Centos 7环境安装
【MYSQL】—— MySQL 在 Centos 7环境安装
629 0