openGauss和PG的差异对比
- 了解openGauss相对于PG的优缺点
参考文档:https://blog.opengauss.org/zh/post/shujukujiagouzhimei/opengauss%E4%B8%8Epostgresql%E7%9A%84%E5%AF%B9%E6%AF%94/
openGauss在PostgreSQL v9.2.4的基础上做了修改和增强。
- 线程池
openGauss将PostgreSQL的进程模式修改为线程模式,线程模式可以支持更大的并发请求。而通过线程池,可以提高线程的利用率,高并发场景下不会有线程的频繁切换。
-- 线程共享内存,存在线程写坏内存,其他线程无法感知的风险 - 最大可用模式
PostgreSQL主备同步模式不能自动降级,备库故障时主库会hang,影响主库的可用性。
最大可用模式:在主备连接正常时,以同步模式提交数据,在主备连接失败时,自动切换为异步模式,不影响主库的可用性。
openGauss支持了最大可用模式,可以将参数most_available_sync设置为on来启用。启用后,在主备连接正常时,以同步模式提交数据,当备库断连时自动切换为异步模式,在备库恢复时,切换回同步模式。
-- 降级后如果刚好进行切换,可能存在丢数据的风险 - SMP并行查询
利用系统多核的能力,提高重查询性能。 - 事务ID不可耗尽
openGauss将transactionid由int32修改为int64,避免了事务ID回卷导致宕机。
-- 改成64位,元组的头部信息扩大 - 增量检查点
增量检查点可以避免全页写导致的性能波动,数据库recover时用时明显缩短。 - dbe_perf性能监控schema
openGauss每个库下会默认存在schema:dbe_perf,schema下有几百个性能监控视图,方便查看和管理。 - 支持列存表,列存缓冲区
openGauss支持列存表,通过cstore_buffers控制列存缓冲区大小,列存表支持压缩。
-- 列存表可能出现表膨胀,注意开启enable_delta_store参数。对于频繁的少量插入,性能较差。压缩率大消耗CPU资源多 - 支持内存表
openGauss支持内存表,将数据全部缓存在内存中,所有数据访问实现免锁并发,实现高吞吐,低延迟访问。 - NUMA架构优化
通过NUMA绑核,减少跨核内存访问的时延问题,提升CPU利用率,提升多线程间同步性能,xlog日志写入性能,热点数据分散处理。 - wdr报告
类似oracle awr性能报告。 - 并行回放
支持备机并行回放日志,提交复制性能。 - 主备从与一主多备
支持主备从,一主多备。主备从模式:主备机物理复制,从机默认没有数据,当主库宕机,备机与从机组成新的复制关系,从机开始复制数据,节省空间并保证高可用。 - 灰度升级
提供在线升级,保证在不中断业务的情况下,进行所有节点的升级
openGauss还存在一些不足之处。
- 编译过于复杂,依赖过多
编译需要很多依赖且版本固定,跨平台编译难度大。 - 一些插件未能正常编译使用