【PostgreSQL 创新营】第七课:PostgreSQL性能优化和体系化运维 答疑汇总

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 【PostgreSQL 创新营】第七课:PostgreSQL性能优化和体系化运维 答疑汇总

Q1:购买的rds实例可以ssh到实例所在服务器吗? 需要su postgres的那些指令该如何执行?例如pgbench.谢谢
不能。云产品中MyBase支持
可以在其他服务器上配置PG安装包,使用pgbench -h 指定PG RDS实例地址

Q2:一个数据库连接init有多大? 这个怎么查看呢?有时候通过htop的res看到一个conn能到3-4g 这个有什么办法避免吗?
1)初始化连接内存大小一般与页表大小、会话级别的内存分配参数有关
2)通常出现这种情况以及规避方式有:
2.1 长事务访问过较多的元数据,元数据缓存在cache中未释放
规避方式:连接池设置合理的生命周期
2.2 分区表分区数过多,子表元数据缓存
2.3 多租户模式

Q3:数据库年龄怎么理解
1)PG事务txid上限是2^32。每执行一个事务操作,txid会加一(部分衍生品将32位优化成64位)
2)超过年龄上限会导致事务id回卷问题,从而影响数据库业务
3)建议单独为大表设置合理的freeze参数

Q4:PG如何使用内存表(不是临时表)。库存如何在并发100的情况下实时扣减。
1)PG中无内存表,可以关注是否有这方面的接口
2)秒杀场景可见:
https://github.com/digoal/blog/blob/master/201801/20180105_03.md
https://github.com/digoal/blog/blob/master/201611/20161117_01.md

Q5:PG有无类似oracle spm的功能?可以自动绑定最优执行计划
没有。但可以借助pg_plan_advsr。关于这个问题可参考如下github内容:
https://github.com/digoal/blog/blob/master/201606/20160617_02.md

Q6:pg_stat_activity 中status是IDLE IN TRANSCATION 这个和IDLE有啥区别呢
1)idle、idle in transaction、idle in transaction (aborted)区别:
idle: 表示后端会话正在等待新的客户端命令
idle in transaction:后端会话处于事务中,但当前未执行查询(大量idle in transaction是危险的信号,可能导致数据库膨胀,在从库可能引发apply延迟)
idle in transaction (aborted): 后端会话处于事务中,且事务中的部分语句报错。
2)可以通过参数idle_in_transaction_session_timeout配置连接超时

Q7:pg有资源管理功能么?用来限制不通session对资源的使用情况
没有。可以结合cgroup
若期望这方面的功能,可以借鉴已实现该功能的PG衍生品代码/去德哥github许愿墙写下你的需求

Q8:pg数据页组织和MySQL的索引组织表对比有什么区别?风咏,应用如何选择最适合的db(mysql or pg),主要有哪些可参考的标准?
PG采用堆表,MySQL采用索引组织表
详见视频详解/github等

Q9:连接数设置太大对实际性能没有太大提高吧?
是的。只与真实连接有关系。
PG是进程模式,不断增加线程数并不会无限制提高数据库处理吞吐。一般吞吐的上限可能出现在2到4倍CPU核数之间

Q10:小学生,greenplum 6+ 与 pg 在oltp/olap 上区别,网上的介绍前后矛盾。
1)OLAP系统推荐使用GP
2)OLTP/重OLTP轻OLAP推荐使用PG。其中PG 13对混合模式进行了增强

Q11:陈亮,如果新上pg项目,当作数据中心来规划,有哪些注意的,版本用最新的吗?
1)推荐使用最新版本
2)建议规划时从业务架构、应用场景、高可用方案、读写分离、存储方案、监控与备份等方面着手

Q12:Crazyzhou008,物理内存>32G时,pg建议shared_buffer设置为8G,是不是跟pg的环形缓冲区也有关系(大表读取时pg使用环形缓冲区而不是缓冲池)?
1)环形缓冲区是共享内存中分配出来的临时缓冲区域,shared buffer pool属于共享内存的子区
2)建议shared_buffer设置为25%内存大小,大内存系统使用hugepage大页
3)Windows系统上shared_buffers的有用范围通常是64MB至512MB,设置过大也用不上
4)用huge page就可以大一点. 不过太大了也不一定好, 写入或更新过于频繁会增加bgwriter, checkpoint等负担, 无法合并IO. 交给OS层可以做IO合并.
5)PG可以结合OS cache使用, 因为PG的文件操作用的是buffer io接口 , 没有使用direct io.
WAL 日志可以用direct io(当没有配置standby时), 如果配置了standby也是buffer io, 因为写入后立即要读出来发给standby, 避免多次IO.
6)OS参数可详见:
https://github.com/digoal/blog/blob/master/201608/20160803_01.md
https://github.com/digoal/blog/blob/master/201507/20150730_01.md

Q13:GP两套集群 ,可以做主从吗?
建议使用分布式存储

Q14: 主备,逻辑复制支持ddl同步了吗?读写分离推荐物理复制还是逻辑复制
1)可以的,event trigger去实现
详见github:PostgreSQL 事件触发器 - DDL审计 , DDL逻辑复制 , 打造DDL统一管理入
https://github.com/digoal/blog/blob/master/201412/20141211_01.md
2)读写分离推荐物理复制,其中从库只读
若想针对部分表进行复制/有写入要求的,可以采用逻辑复制

Q15:pg有列存的引擎?做ap业务
1)PG有列式索引,通过插件实现列式存储引擎
2)混合性业务可以参考:
PostgreSQL 列存, 混合存储, 列存索引, 向量化存储, 混合索引 - OLTP OLAP OLXP HTAP 混合负载应用
https://github.com/digoal/blog/blob/master/201902/20190216_01.md

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4月前
|
运维 监控 关系型数据库
PostgreSQL运维核心技能之掌握并行查询
PostgreSQL运维核心技能之掌握并行查询
107 9
|
4月前
|
缓存 运维 监控
PostgreSQL运维技巧之vacuum调优
PostgreSQL运维技巧之vacuum调优
403 3
|
7月前
|
运维 监控 Kubernetes
构建高效稳定的云基础设施:自动化运维在企业级应用中的关键实践Kubernetes集群监控与性能优化策略
【5月更文挑战第27天】 随着云计算技术的不断成熟和企业数字化转型的深入,构建一个高效、稳定且可扩展的云基础设施已成为众多组织的核心诉求。本文将重点探讨自动化运维在实现这一目标中的重要作用,通过案例分析展示自动化工具和策略如何优化资源管理、提升服务响应速度以及降低运营成本。文章还将讨论自动化过程中面临的挑战,如安全性、复杂性管理和人员技能提升,并提供针对性的解决方案。
|
关系型数据库 测试技术 分布式数据库
PolarDB | PostgreSQL 高并发队列处理业务的数据库性能优化实践
在电商业务中可能涉及这样的场景, 由于有上下游关系的存在, 1、用户下单后, 上下游厂商会在自己系统中生成一笔订单记录并反馈给对方, 2、在收到反馈订单后, 本地会先缓存反馈的订单记录队列, 3、然后后台再从缓存取出订单并进行处理. 如果是高并发的处理, 因为大家都按一个顺序获取, 容易产生热点, 可能遇到取出队列遇到锁冲突瓶颈、IO扫描浪费、CPU计算浪费的瓶颈. 以及在清除已处理订单后, 索引版本未及时清理导致的回表版本判断带来的IO浪费和CPU运算浪费瓶颈等. 本文将给出“队列处理业务的数据库性能优化”优化方法和demo演示. 性能提升10到20倍.
860 4
|
域名解析 缓存 运维
【运维知识进阶篇】集群架构-Nginx性能优化 (二)
【运维知识进阶篇】集群架构-Nginx性能优化 (二)
158 0
|
缓存 运维 网络协议
【运维知识进阶篇】集群架构-Nginx性能优化 (一)
【运维知识进阶篇】集群架构-Nginx性能优化
232 0
|
存储 缓存 关系型数据库
|
存储 SQL 并行计算
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(中)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
431 0
|
存储 算法 安全
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(下)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
392 0
|
SQL 运维 监控
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(上)——七、常用运维SQL
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(上)——七、常用运维SQL

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版