openGauss和PG的差异对比

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还存在一些不足之处。

  • 编译过于复杂,依赖过多
    编译需要很多依赖且版本固定,跨平台编译难度大。
  • 一些插件未能正常编译使用

你可能感兴趣的:(openGauss和PG的差异对比)