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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
监控 Cloud Native 数据库
【阿里云云原生专栏】性能优化之道:阿里云云原生平台上的监控与调优策略
【5月更文挑战第22天】本文介绍了阿里云云原生平台的监控与调优策略。阿里云提供如CloudMonitor、ARMS和ACK监控等工具,用于基础和应用监控,以及容器监控。调优策略包括资源、代码和架构优化,例如根据监控数据调整资源配置,优化代码性能,和利用微服务、容器化和无服务器化改进架构。示例代码展示了如何进行监控和调优操作,强调实时监控与针对性调优对提升云原生应用性能的重要性。
361 1
|
3月前
|
运维 监控 关系型数据库
PostgreSQL运维核心技能之掌握并行查询
PostgreSQL运维核心技能之掌握并行查询
93 9
|
存储 JSON 自然语言处理
【大数据开发运维解决方案】ElasticSearc写入查询性能优化总结
ES(ElasticSearch) 我们需要根据公司要求,进行偏向性的优化。1、bulk批量写入2、多线程写入3、修改索引刷新时间4、修改merge参数以及线程数6、index buffer7、磁盘间的任务均衡8、Mapping优化8.1、自动生成docID(避免ES对自定义ID验证的操作) 8.2、调整字段Mapping 8.3、调整_source字段 8.4、禁用_all 8.5、禁用Norms 8.6、index_options设置 9、优化存储
【大数据开发运维解决方案】ElasticSearc写入查询性能优化总结
|
SQL 运维 5G
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(下)
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(下)
168 0
|
SQL 机器学习/深度学习 缓存
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(上)
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(上)
219 0
|
SQL 运维 监控
企业运维训练营之数据库原理与实践— AliSQL和读写分离基本原理—实例管理(下)
企业运维训练营之数据库原理与实践— AliSQL和读写分离基本原理—实例管理(下)
149 0
|
存储 运维 监控
企业运维训练营之数据库原理与实践— AliSQL和读写分离基本原理—实例管理(上)
企业运维训练营之数据库原理与实践— AliSQL和读写分离基本原理—实例管理(上)
147 0
|
存储 弹性计算 运维
企业运维训练营之数据库原理与实践— AliSQL和读写分离基本原理—实例管理(中)
企业运维训练营之数据库原理与实践— AliSQL和读写分离基本原理—实例管理(中)
137 0
|
缓存 运维 网络协议
PostgreSQL 性能优化和体系化运维(一)|学习笔记
快速学习 PostgreSQL 性能优化和体系化运维(一)
404 0
|
SQL 存储 运维
【笔记】最佳实践—如何优化数据导入导出
数据库实际应用场景中经常需要进行数据导入导出,本文将介绍如何使用数据导入导出工具。
182 0