首期openGauss训练营结营,48个FAQ和全部PPT通通给你
首期openGauss训练营结营,48个FAQ和全部PPT通通给你,随附62人结营学员名单
转载mob604756fa96d72021-06-04 14:37:20
玩转openGauss的 数据和云
2021年3月27-28日,由openGauss社区技术委员会主席、openGauss首席架构师、华为公司数据库C-TMG主任田文罡老师领衔,联合openGauss社区、Gauss松鼠会、云和恩墨的专家们组织的首期“8小时玩转openGauss训练营”活动通过线上直播的方式举办,获得圆满成功。活动受到广泛欢迎,参与学员超千人,最终有62人完成各项任务,顺利结营!
![首期openGauss训练营结营,48个FAQ和全部PPT通通给你,随附62人结营学员名单_Java](https://s2.51cto.com/images/blog/202106/04/ab2a96e63e78592048c93660c5989df3.png?x-oss-process=image/resize,m_fixed,w_1184)
在为期2天的8小时学习过程中,7位主讲老师为大家带来了最精华、最实用、最高效的openGauss课程,带领学员们快速掌握了openGauss的核心架构及特色功能。学员们参训热情高涨,在直播过程中积极提问,与讲师互动,获得了极大的提高。小编在此整理了训练营中的48个问答,相信可以为大家在学习openGauss的过程中带来诸多参考和解惑。
![首期openGauss训练营结营,48个FAQ和全部PPT通通给你,随附62人结营学员名单_Java](https://s2.51cto.com/images/blog/202106/04/ab2a96e63e78592048c93660c5989df3.png?x-oss-process=image/resize,m_fixed,w_1184)
Q1:openGauss与GaussDB T或者A 有什么关系?
A1:没有直接关系,openGauss源于PG-XC,结合华为GaussDB的经验,形成openGauss。
Q2:openGauss更适合OLTP还是OLAP?
A2:openGauss的定位类似于HTAP场景,列存引擎适合OLAP,行存引擎适合OLTP。
Q3:pagewrite线程小步快跑的方式刷盘,那么checkpoint线程呢?还需要刷盘吗?
A3:无论那种检查点,都是刷盘。pagewriter刷页后,checkpointer还是要把检查点位置写到控制文件中。
Q4:行列混合查询可以随时切换吗?
A4:行列表在创建表时指定,创建后不可修改。行存和列存表可以一起修改,一起查询,可以进行join。
Q5:openGauss有多少种并发控制?
A5:openGauss当前行存和列存是MVCC,MOT是乐观并发控制。
Q6:静态快照和动态快照怎么理解?
A6:静态快照和动态快照是一个比方,静态指的是不随会话链接而变化,动态则受这些影响。
Q7:openGauss是单节点部署还是分布式部署?
A7:单节点部署。
Q8:HA架构是openGauss自带的还是第三方后期写的?
A8:自带的。
Q9:openGauss数据库是单机部署还是集群部署的?备节点也提供数据查询服务吗?
A9:单机部署,备库可读。
Q10:有多个同步备节点的话,是同时多个备节点都落盘后,主节点才提交成功吗?还是只要一个同步节点落盘反馈后,主节点就不等待其他同步节点的反馈就直接提交成功?
A10:两种都可以,通过配置synchronous_standby_names参数。
Q11:openGauss跟PG哪个性能更好?
A11:openGauss在4P服务器的TPCC可以到230万。
Q12:openGauss使用undo来实现mvcc吗?
A12:mvcc的实现目前和PG一样。
Q13:数据库的预安装是为了分发安装包及一些基础的服务器环境配置的分发及配置文件的修改吗?
A13:对,都是python文件,熟悉代码的同学可以阅读源码。
Q14:主备节点切换后,客户端如何感知到?还需要重新配置客户端到服务端的连接信息吗?
A14:客户端感知不到,需要进行额外处理,或引入其他的工具软件,比如云和恩墨的MogDB_HA。
Q15:集群有浮动IP在不同节点之间漂吗?
A15:openGauss本身没有。
Q16:HA主备执行failover时备机升主的同时主机的处理流程是什么?
A16:failover备机升主后,原主机不做处理,如果主机故障恢复后再重新启动,会出现双主的问题,这个需要DBA手动处理。
Q17:基于当前腾讯和阿里都重点发展自己的分布式数据库,并在一些金融领域都在试点,而openGauss架构定位应该是传统集中式数据库,openGauss会是华为未来重点发展方向吗?
A17:openGauss是单机主备数据库,这个场景也是企业主流场景,覆盖90%以上场景,openGauss和分布式版本代码同源,是一套代码,内部也在广泛使用,肯定会持续投入发展、演进。
Q18:openGauss集群包括什么?
A18:目前openGauss的集群主要还是主+备+级联备架构。
Q19:WDR的指标有文档参考吗?
A19:目前官方文档中没有这个详细指标解读。
Q20:关于线程池,活跃比例和内核有什么关系?和MySQL的存储引擎类似吗?
A20:MySQL的memory存储引擎仅实现的是数据内存化,但并没有做到很好的ACID特性,数据持久化存在问题。而MOT不是简单的在内存缓存数据,它支持完整的ACID、使用CALC逻辑一致性异步检查点,确保数据落盘持久保存。
Q21:MOT性能跟TimesTen比怎么样?
A21:相比于TimesTen,MOT支持的REPEATABLE READ事务隔离级别、支持ARM和X86架构的CPU,和JIT即时编译、支持DISK+MEMORY存储方式。
Q22:openGauss对FDW扩展中提到创建表和索引,是指把外部其它库中的数据拉到本地建表和索引吗?
A22:openGauss的FDW和PG的功能差不多,一般是把外部的数据在openGauss本地读取,但是数据还是在外部其他库存储。另外,MOT虽然使用了FDW,但是它是内核原生支持的,使用起来和磁盘的使用基本没什么区别。
Q23:MOT表比普通表,使用过程突然掉电MOT怎么保证数据一致?
A23:MOT使用CALC逻辑一致性异步检查点以实现数据的持久化。
Q24:MOT表和磁盘表是不是类似“包含”关系,即MOT表可以固化,因此可以替代磁盘表使用吗?
A24:不是包含关系,是并列的,只是使用场景不同。
Q25:MOT表的内存会释放吗?不释放的话越来越多是不是也会导致性能降低?
A25:MOT将把表的所有数据加载到内存中,当超过内存限定时会拒绝用户插入数据。所以在规划MOT时,需要预留额外内存空间。
Q26:安装时,root配置了互信,这个互信后续系统正常运行后能不能删除?
A26:root之间的互信是可以删除的,数据库运行的那个操作系统用户的SSH互信不能删除。
Q27:openGauss有没有支持分布式数据库的插件?类似citus这种。
A27:openGauss当前还没有支持分布式的插件,开源PG插件需要稍微修改就可以使用,主要是要调整鉴权和版本检验流程。后面会逐渐把这些插件丰富起来。
Q28:openGauss用的啥数据库中间件分表分库呢?
A28:openGauss没有类似mycat的分库分表中间件。
Q29:failover的时候主机是怎么降备的?switchover和failover的区别是什么?
A29:failover主机不降备,switchover才会降备。
Q30:openGauss有类似Oracle的rowid吗?针对大表确实需要这个。
A30:rowid是行记录的标识,是一个物理标识,openGauss可以使用TID,但TID和rowid并不完全等价,需要在实际业务场景中进行验证,看看业务的兼容性是否正常。
Q31:在主备架构中,备库的并行恢复,是以什么粒度做并行恢复的呢?
A31:就像在MySQL中,并行恢复可以以database, logic clock为粒度恢复。
Q32:instance_time value列的值的单位是什么?
A32:微秒。
Q33:session和thread之间是什么关系?
A33:在非线程池模式下,是绑定关系,一个线程对应一个会话。在线程池模式下,一个线程可以服务多个会话,但线程必须把一个会话的事务处理完才能服务其他会话。有些和Oracle的专有模式和共享模式类似。
Q34:WDR的指标有文档链接可参考吗?
A34:目前官方文档中没有这个详细指标解读。
Q35:线程池模式和非线程池模式什么情况下用哪种?
A35:高并发连接一般建议使用线程池模式,一般情况下使用非线程池模式,一个线程对应一个session,session退出后就关闭分配的线程。
Q36:对于集群,更改参数可以依次停节点机修改吗?
A36:节点关机可以使用gs_guc命令修改配置文件内的参数。
Q37:open gs是不是推荐短链接?
A37:和通用数据库的连接方式一样,并没有说只推荐短连接。
Q38:是full page write影响大还是double write影响大呢?这个又如何验证呢?
A38:full page write会将第一次修改的数据页刷新到WAL日志,这样增加WAL的日志量;double write会对脏数据页做双写操作,并不会大量增加WAL日志量,且openGauss增量检查点需配合double write。
Q39:看官方文档上nvarchar表示的是字符数呀?
A39:NVARCHAR2(n)的n代表的是字符长度。
Q40:之前说建库的时候可以选兼容Oracle,那个字符会自动填充够那个位数,后面加0,这个有什么好的方式避免吗?影响迁移过来的业务吗?
A40:虽然数据库有SQL标准,但各个厂家的数据库还是有不少差异,这些差异体现在系统对象,数据类型和SQL语句上。openGauss有一些兼容功能,但兼容功能并不能保证完全一样。因为不同数据库的实现细节不同,要做到二进制层面的语义一样是不可能的。是否能迁移以及这些差异对业务的影响,只能由业务评估。因为数据库不感知数据的具体使用,只有业务层面的数据使用和功能没有问题,才能说正常。
Q41:openGauss支持对表进行分片吗?
A41:分片在不同的语境下有不同的含义,有时指的是分区功能,有时指的是分布式数据库的分布功能。openGauss支持Range,List和Hash分区,可以认为openGauss支持分片功能。
Q42:openGauss支持表自动新增分区吗?还有自增ID,除了sequence方式来实现,会内置支持吗?类似MySQL的方式。
A42:自增分区指的是Range分区的间隔分区,根据时间,比如每天、每月进行分区。openGauss现在已经支持间隔分区,支持自增分区。自增ID现在主要是通过sequence的方式进行实现,现在不支持MySQL的auto_increment方式。可以在社区提一个issue进行需求跟踪,社区会根据需求进行排序。openGauss后面主要发展自己的生态,对一些其他数据库的特性主要看业务的实际诉求和价值。
Q43:openGauss是否支持对分区表建立BEFORE触发器?
A43:openGauss支持普通表的触发器,支持普通表的before触发器。对分区表的before触发器现在还不支持。
Q44:openGauss维护支持的策略和商业线一样吗?之前好像说是两个分支?
A44:公司内部配套、公有云的GaussDB、开源openGauss共享代码基线,商用、自用、开源是同一个单机内核,会持续长期演进。
Q45:openGauss有认证吗?
A45:openGauss的认证正在规划运作中,预计4月份会上线。
Q46:之前使用发现WDR使用的底层表的自动vacuum不能触发,新版本对这个有优化吗?
A46:WDR是采集系统性能视图快照生成的,是openGauss自己定义的一个数据格式,既不是系统表,也不是用户表,所以不需要vacuum,和vacuum没有关系。快照数据通过配置时间参数确定保留多少天,过期数据由WDR自己删除。
Q47:Oracle迁移到openGauss,有没有一些指导类文档?改造的一些难点是什么?
A47:openGauss在2020年6.30开源,现在已经有几家DBV发布了各自的商业版本,正在推广使用,在使用过程中会逐渐积累一些案例和遇到的问题。这些总结后期会放到openGauss的官网上,形成指导性的文档,供大家参考。
Q48:能否介绍下存算分离?是openGauss的发展方向么?
A48:openGauss内部正在实现存算分离,openGauss主打线下,存算分离之后,需要在线下找一个分布式存储,现在初步考虑使用Ceph,方案在设计验证中。