暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【直播问答FAQ】带你走进PostgreSQL的世界

原创 彭冲 2020-02-26
1583

昨天分享了一期带你走进PostgreSQL的世界,总结了一下大家的问题,有遗漏的可以在评论区进行补充。

1.什么样的场景,推荐PG?(PG最不擅长的在哪个方面,最擅长的在哪个方面?)

OLTP场景,复杂SQL场景,单库数据量小于1TB,SQL层数据分析(GreenPlum),GIS需求场景,数据库全文索引方案,Oracle迁移场景,对接外部多数据源FDW场景等。
不擅长的方面:偏互联网场景简单大并发,大量连接,主要问题是后端进程间内部沟通成本太高,所以需要使用连接池。

场景 场景分析
大量插入,少量修改 非常适合,放心使用
并发量不大,大量DML非7*24场景 非常适合,每天有维护窗口进行vacuum
并发量较大,大量DML非7*24场景 非常适合,每天有维护窗口进行vacuum
并发量不大,大量DML7*24场景,存在较为空闲维护窗口 适合,定期在非业务高峰期进行vacuum
并发量较大,大量DML7*24场景,存在较小维护窗口 可用,需要有维护窗口进行vacuum
并发量较大,数据量较大,大表DML较多,大并发进行全扫的7*24场景且维护窗口短 不建议

2.讲下Oracle与PG的区别?(oracle和PG的显著差异在什么方面)

从部署角度:Oracle比较难以做到快速部署,PG只有几十M,更容易轻量级自动集成部署,Oracle有rac集群架构,支持多写,PG只有主备方案,不支持多写。
从架构体系:Oracle有undo,PG是MVCC实现。
表空间管理:oracle可以自动扩充表空间,pg的表空间是文件目录,主备环境扩展时备库一定要先创建目录,否则会宕机。
性能分析:PG原生没有AWR,有简单的第三方实现。
从功能角度:Oracle大而全,PG原生功能简洁,扩展功能丰富,是一个一专多长的全栈数据库(时序、图、sharding等)
SQL标准支持角度:PG符合度更高,例如json及json path。

3.PG有没有像Oracle RMAN那样的联机数据热备?能支持任意时间点的恢复吗?

PITR基于时间点、事务、还原点都支持,备份工具有pg_rman支持单机操作、pg_probackup支持单机或远程实例,也支持恢复到db级别。

4.PG也支持类似的RAC共享存储的吗?

可以借助系统集群套件,软件层面支持。

5.POSTGIS的使用场景及如何使用?

与地址坐标位置相关同时想再数据库层做查询计算,可比如公交行业车辆轨迹分析,智能监控等,可以参考POSTGIS官网,有参考案例。

6.PG里的存储过程强大吗?跟Oracle里差别大吗?

PG原生只支持函数的概念,新版本也支持存储过程以及函数里手动commit/rollback操作,功能跟oracle的存储过程一样很强大,而且支持不同的编程接口,C、Java、Python、Perl等,package需要通过schema包装实现。

7.有没有在PG里写函数和存储过程实现业务逻辑的。

非常多,本人之前从事的公交行业IC卡收费系统大量复杂的业务逻辑如售卡充值挂失等都是基于PG函数实现。

8.Oracle转PG,存储过程是不是要改写 ?

本身PG与Oracle的设计理念相似,plsql跟pgsql语法很类似,但Oracle特定语法需要改写。

9.入门书籍有推荐的吗?

《PostgreSQL修炼之道:从小工到专家》
《PostgreSQL服务器编程》
《PostgreSQL实战》
《深入浅出PostgreSQL》
《PostgreSQL指南内幕探索》

10.PG主要应用在哪些地方?

我接触从事过的行业有公交、银行、传统ERP体系,主要应用于企业自研产品,另外PG历届大会及网上可以查
国内各行各业都有实践应用。

11.讲讲PG和MySQL的区别呗?

早期版本的PG性能不太好,由于关系模型支持得很好,用起来会有诸多限制,学习成本会比较高,比起这些,MySQL要轻量很多,到现在这也是它的一个优点,在互联网这个特定的场景中,大家为了追求快速迭代和拓展性,使用的SQL功能不会太多,都够用,而PG 由于更严谨的SQL关系模型,很多用法都限制得比较死,MySQL却要灵活很多。

12.PG和MySQL,Oracle的区别,各自的优缺点是什么。

PostgreSQL是一个数据库编程平台,接口开放,类似乐高积木,相关的配套工具不太完善,需要用户自己集成。
Oracle是成熟完善的商业产品,功能大而全,不够轻量级。
MySQL本人没什么实践。

13.PG有集群环境吗?

原生有集成备份、主备切换接口,WAL日志也开放接口,有基于pgpool做集群,实现连接池、负载均衡及高可用,也有基于keepalived+VIP方案、repmgr方案、patroni方案等主备方案,需要自己集成搭建。

14.PG12试用过吗?与PG10在使用上有没有明显的性能提升?

目前实践都是基于PG12,与10相比使用pgbench测试性能没有太大提升,但并行以及分区表性能有提升,12恢复及备库触发方式等有调整,配置使用上有一些变化。

15.生产环境,目前建议用PG哪个版本。

求稳建议10,市面上的最新书籍大多基于10,12也已经比较稳定了。

16.快速入门,需要学多久时间

有基础的,我觉得2天能实践入门,能干活,深入的话需要持续学习。

17.有Oracle迁移PG经验么?

有做过公交行业的Oracle迁移到PG,现在也在做这方面的工作。

18.从入门到精通要多久?

一般来说入门容易,精通难。

19.为什么现在很多企业选择Oracle转PG呀?

可能有节约成本的因素,自研可控因素,就如IT公司无论大小都有软件部门。

20.PG数据库,这个可以用于大型业务系统不。

本人参与实践落地的公交项目(准金融业务系统),从13年上线运行,15年底切换PG新版本,现在稳定运行,国内很多同行也有介绍不同行业不同的大型业务系统均有实践。

21.PG目前国内的在使用客户多么?

超过100+,包括阿里、腾讯等。

22.讲一下PG优化吧?

一是操作系统级别的参数调优,二是postgresql.conf里的参数调优,三是应用调优,查询索引优化等,后面有机会整理分享。

23.PG读取空间数据,性能如何提高?

PG里有适合GIS空间类型的索引,能提高查询性能。

24.PG高可用当中,备库的WAL文件什么时候会被清理? 遇到过备库WAL分区被撑满的情况?

生产环境经常可能出现WAL日志缺失,备库无法恢复或者堆积造成数据库磁盘打满的情况。
WAL文件的清理和下面几个因素有关:

  • max_wal_size、min_wal_size参数
    min_wal_size指定pg_wal目录里的wal段文件的最小值,这些数量的段文件总是被回收使用,
    即便可能用不到这么多段也是如此,设置该值有助于防止备库需要的日志被主库删掉,但是只是减缓,并不是根治。
    max_wal_size限制了最多的wal段日志的大小,但是该限制并不是硬限制,
    如果某段时间由于业务量比较大造成wal日志量超过max_wal_size限制的值,
    那么检查点进程会启动,将一些以前的段文件变为无用进行清理。
  • wal_keep_segments参数
    该参数独立于其他参数设置,pg总是保留最少wal_keep_segments个wal段文件,
    设置该值也对主备流复制环境的wal日志保留有所缓解,但是同样不能彻底解决。
  • archive进程
    如果配置了归档,当wal段文件还未来及被归档时,即使满足了其他清理条件,
    wal段文件也不能被清理。甚至假设我们配置的archive_command错误造成归档失败,
    那将是灾难性的,所有的wal都将无法清理。
  • 复制槽的使用
    复制槽的使用可能带来主库的wal日志不能被清理或者清理速度较慢带来数据堆积。
    我们一般使用物理复制槽来确保流复制环境中备库需要的wal日志不被主库清理。

25.感觉目前PG的市场不大,用的人少?

如果仔细了解下,现在PG市场趋势一直在增长。

26.PG现在主流版本是那些?推荐学什么版本?

生产系统使用主流版本9和10,推荐10做生产,学习建议学12及新版本

27.pgpool怎么样?稳定性如何?

Pgpool-II周围有不少人使用,稳定性可以,还有连接池、负载均衡等功能。

28.PG做数据仓库怎么样?

可以基于fdw方案做。

29.与ORACLE比较,处理数据的吞吐量, 查询,写、读等比较一下性能

Insert和Update差别不大,update操作oracle是直接修改原记录,PG是MVCC插入新版本,表和索引有膨胀。
查询方式索引扫描PG效率略低,全表扫描PG受MVCC影响,效率低一些。

最后修改时间:2020-11-18 13:30:22
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

大柏树
暂无图片
关注
暂无图片
获得了833次点赞
暂无图片
内容获得198次评论
暂无图片
获得了851次收藏
TA的专栏
MogDB技术分享
收录164篇内容
PostgreSQL乐知乐享
收录177篇内容
目录
  • 1.什么样的场景,推荐PG?(PG最不擅长的在哪个方面,最擅长的在哪个方面?)
  • 2.讲下Oracle与PG的区别?(oracle和PG的显著差异在什么方面)
  • 3.PG有没有像Oracle RMAN那样的联机数据热备?能支持任意时间点的恢复吗?
  • 4.PG也支持类似的RAC共享存储的吗?
  • 5.POSTGIS的使用场景及如何使用?
  • 6.PG里的存储过程强大吗?跟Oracle里差别大吗?
  • 7.有没有在PG里写函数和存储过程实现业务逻辑的。
  • 8.Oracle转PG,存储过程是不是要改写 ?
  • 9.入门书籍有推荐的吗?
  • 10.PG主要应用在哪些地方?
  • 11.讲讲PG和MySQL的区别呗?
  • 12.PG和MySQL,Oracle的区别,各自的优缺点是什么。
  • 13.PG有集群环境吗?
  • 14.PG12试用过吗?与PG10在使用上有没有明显的性能提升?
  • 15.生产环境,目前建议用PG哪个版本。
  • 16.快速入门,需要学多久时间
  • 17.有Oracle迁移PG经验么?
  • 18.从入门到精通要多久?
  • 19.为什么现在很多企业选择Oracle转PG呀?
  • 20.PG数据库,这个可以用于大型业务系统不。
  • 21.PG目前国内的在使用客户多么?
  • 22.讲一下PG优化吧?
  • 23.PG读取空间数据,性能如何提高?
  • 24.PG高可用当中,备库的WAL文件什么时候会被清理? 遇到过备库WAL分区被撑满的情况?
  • 25.感觉目前PG的市场不大,用的人少?
  • 26.PG现在主流版本是那些?推荐学什么版本?
  • 27.pgpool怎么样?稳定性如何?
  • 28.PG做数据仓库怎么样?
  • 29.与ORACLE比较,处理数据的吞吐量, 查询,写、读等比较一下性能