-
体系结构
客户端连接请求gaussmaster进程,gaussMaster进程接受连接,并派发gaussdb线程,后续所有操作都是客户端和gaussdb线程通信。
内存分为共享内存和本地内存
共享内存包括share buffer,MOT,wal buffer
本地内存也叫私有内存,temp buffer,work_men,maintain_work_mem。 -
64位事务ID
PostgreSQL采用的是32位事务ID机制,不可避免的会出现事务回卷问题,vacuum机制在回收事务时,会对数据库性能有影响,事务ID回收不及时,会导致停库对业务造成严重影响,opengauss数据库采用64位事务ID,有效的避免了事务回卷问题。 -
存储引擎(行存/列存/行列混合存储)
行存容易修改记录,读取数据代价高,会读入不需要的列,不同记录重复率低,压缩率低,对OLTP系统来说,更新比较频繁,使用行存有明显的优势。
列存修改记录代价高,写一条记录时需要访问多次IO,但是可以只读取相关的列,同一列重复值高,压缩率高,对于OLAP系统来说,列存方式有明显的优势。
对于整个数据库来说,可以根据表的业务类型,选择行列混合引擎,统计分析和批量加载的数据,可以选择列存引擎。对于更新频繁,点查询数据库,选择行存引擎。充分利用行存和列存的优势,优化数据库性能。 -
MOT(内存表)
MOT使用和扩展了现有的外部数据封装机制,并且支持opengauss的恢复过程,支持NUMA的组提交,减少I/O,提高性能。
MOT使用全局内存存储所有表数据和索引,无锁事务管理,使用乐观并发控制事务机制,支持高并发,但是当数据库内存不足时,会导致表无法写入,首映使用过程中,需要实时监控数据库内存使用情况,及max_mot_global_memory的内存使用率。
通过学习,opengauss解决了postgreSQL数据库的事务回卷问题,并且支持行存、列存和行列混合存储,可以充分发挥行存和列存的优势,还可以使用MOT表,对并发要求高的表,缓存到内存中,无锁事务管理,支持更高的并发访问。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。