【PostgreSQL 创新营】第七课:PostgreSQL性能优化和体系化运维 答疑汇总-阿里云开发者社区

开发者社区> 阿里云数据库> 正文
登录阅读全文

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

简介: 【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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云数据库
使用钉钉扫一扫加入圈子
+ 订阅

帮用户承担一切数据库风险,给您何止是安心!

官方博客
链接