OceanBase 开源教程 OBCP 知识测试参考答案解析

题目:OceanBase 社区

一、判断题

1.资源一般包括 CPU、内存、disk、session 和 IOPS 等,OB 给租户分配资源前,需要定义资源的规格。

答:正确

这里的资源规格,我们可以想象成一个小的虚拟机,提供(CPU、内存、disk、session 和 IOPS)这些能力,

资源池可以理解成在哪些物理机上部署这些虚拟机(unit),资源的总量=unit的规格*unit的数量,

租户绑定到一个或者多个资源池进行数据的存储。

2.OceanBase 无法支持需要跨机修改多个分区的 DML 语句的执行。

答:错误

对于每一个租户每个 Zone 中的若干个 Unit,通过在 Unit 之间迁移副本,达到每个 Unit 内资源使用率的均衡。

(1)属于同一个分区表的若干不同分区,会均匀分散在不同的 Unit 上,

(2)属于同一个 Partition Group 的若干分区,会聚集在同一个 Unit 上。

3.DBA 定义了2个资源规格,unit1(20c40G)和unit2(40c80G), 在创建资源池 S1 的时候,同时引用了这2个规格,并且 unit 数量是2, 那么这个 S1 资源池将拥有 60c120G 的资源?

答:错误

一个资源池下只能引用一种规格的unit

可以从create resouce pool的语法上看出来。

https://www.oceanbase.com/docs/community-observer-cn-10000000000013853

4.集群中存在4个表:T0(T0有2个分区,Pa00,Pa01), T1(T1有2个分区Pa10,Pa11),T2(T2有2个分区Pa20,Pa21), T3(T3有2个分区Pa30,Pa31)。T0,T1,T2,T3属于同一个表组TG0,那么表组TG0中包含4个分区组。

答:错误

这道题目我们先要了解一下什么是表组和分区组,详见官网链接如下:

https://www.oceanbase.com/docs/oceanbase-database-cn

现在题目中的table group:TG0 里的表都有2个分区,所有这些表的第1个分区的集合组成一个PG0(分区组0),第2个分区的集合组成一个PG1(分区组1),

所以表组TG0中包2个分区组,而不是4个分区组。

二、单选题

1.OceanBase 的租户的资源分配的流程是?

A 1、定义资源规格2、创建资源池3、系统在 observer上分配资源4、创建租户

B 1、创建资源池2、定义资源规格3、系统在 observer上分配资源4、创建租户

C 1、创建租户2、创建资源池3、定义资源规格4、系统在 observer 上分配资源

D 1、定义资源规格2、创建租户3、创建资源池4、系统在 observer 上分配资源

答:A

解析:这里的资源规格,我们可以想象成一个小的虚拟机,提供(CPU、内存、disk、session 和 IOPS)这些能力,

资源池可以理解成在哪些物理机上部署这些虚拟机(unit),资源的总量=unit的规格*unit的数量,

租户绑定到一个或者多个资源池进行数据的存储。


2.客户的 OceanBase 集群有三个 zone,分别为 z1,z2,z3。在正常情况下,客户的读写流量只访问 z1 的数据库节点;在 z1 整体出现故障的场景下,读写流量需要均分到 z2 和 z3。为满足上述业务需求,如下 primary zone 设置正确的是?

A (z1,z2,z3)

B (z1;z2;z3)

C (z1;z2,z3)

D (z1,z2;z3)

答:C

解析:primary zone 表示 leader 副本的偏好位置, 指定 primary zone 实际上是指定了 leader 更趋向于被调度到哪个zone 上。

规则:当primary zone列表包含多个zone时,用;分隔的具有从高到底的优先级;用,分隔的具有相同优先级。

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/data-copy-and-service


3.OceanBase 默认单个SQL语句的 timeout 时间是多少?

A 1s

B 100s

C 10s

D 无限制

答:C 

解析:可以登录租户后查看一下变量,show variables like 'ob_query_timeout';

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/ob_query_timeout


4.对于分布式事务,业务数据模型的设计原则是 ?

A 尽量避免跨机分布式事务

B OceanBase 对于两阶段提交做了优化,不需要考虑分布式事务的效率因素

C 尽量避免设计多张表的业务

D 尽可能多利用 OB 跨机分布式事务的能力

答:A

解析:分布式事务涉及跨节点协同交互,其性能是没有本地事物好的,所以OB在这里提供了表组的设计,

对经常会被同时访问的一组表,为了优化性能,需要将它们相同分区ID对应的分区存储在同一个observer服务器中,且这些分区副本的 leader 也位于一台observer上。

从这里不难看出在我们平时的业务模型设计上应该避免跨机分布式事务。

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/about-table-groups


5.参数(应该是变量)ob_trx_timeout的默认值是?

A 120秒

B 10秒

C 100秒

D 1000秒

答: C

解析:可以登录租户后查看一下变量,show variables like 'ob_trx_timeout';

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/ob_trx_timeout


6.OceanBase 对分区扩展的描述,哪个正确?

A Range 分区支持添加后续分区

B Hash 分区支持删除现有分区

C 都不支持扩展

D Key 分区支持添加后续分区

答:A

解析:对于 Range 分区,只能在最大的分区之后添加一个分区,不可以在中间某个或者开始的地方添加。如果当前的分区中有 MAXVALUE 的分区,则不能继续添加分区,所以A正确

对于 Hash/Key 分区,目前 OceanBase 数据库暂不支持添加一级分区。

对于 Hash/Key 分区,目前 OceanBase 数据库暂不支持删除一级分区。

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/level-1-partition-table


7.对于 key 分区类型的分区表,如果在建表语句中,不指定任何分区键,比如 partition by key() partitions 5, 则会?

A 没有分区键

B 以主键作为分区键

C 以建表语句的第一列作为分区键

D 该语法有问题,分区键不能为空,该 DDL 语句会报错

答:B

解析:"Key 分区的分区键中不指定任何列时,表示 Key 分区的分区键是主键"

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/partitioning-policy-3

三、多选题

1.关于 OceanBase,以下说法正确的是?

A OB 可以以普通 PC 硬件为基础,利用 Paxos 分布式一致性协议保证数据可靠性。

B OB 数据节点和计算节点均可以在 MPP 架构下实现水平扩展。

C OB 集群在主节点故障的情况下,Paxos 可以保证数据无损(即 RPO=0 ),并且自动选举并恢复服务,服务恢复时间( RTO)在30秒以内。

D OB 使用共享存储保证各个节点数据的一致性

答:ABC

解析:OceanBase 数据库具有如下特性:

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/what-is-oceanbase


2.关于分区表的描述,以下说法正确的是?

A 一个分区可以跨多个 unit

B 一个分区不能跨多个 unit

C 一个表的多个分区可以跨多个 unit

D 一个表的多个分区不能跨多个 unit

答:BC

解析:unit是资源调度的最小单位,分区是数据迁移的最小单位

对于每一个租户每个 Zone 中的若干个 Unit,通过在 Unit 之间迁移副本,达到每个 Unit 内资源使用率的均衡。

(1)属于同一个分区表的若干不同分区,会均匀分散在不同的 Unit 上,

(2)属于同一个 Partition Group 的若干分区,会聚集在同一个 Unit 上


3.OceanBase 的分区表有哪些特点?

A 只存在单个 OBServer 上

B 自动负载均衡

C 对业务透明

D 需要结合中间件使用

E 支持区间并行

答:BCE

解析: https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/overview-5

启用分区表并行查询

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/execution-of-parallel-query-2


4.下列哪些业务,适合将租户级别变量 ob_read_consistency 设置成 'weak' ?

A 转账系统

B 历史行情平台

C 支付交易系统

D 用户信息查询系统

答:BD

解析:变量ob_read_consistency=weak,表示设置的是弱一致读,

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/ob_read_consistency


5.对于 OceanBase 的分区表,在选择分区的不同类型上,建议是?

A Range 分区适合处理相似的,与时间有关的数据,或者需要定期导入新数据删除历史数据的场景

B List 分区适合分区值明确的情形

C Range 分区可以在线转化成list分区,所以如果有增删子分区需求的可以使用 range 分区,否则使用 list 分区

D Hash 分区使用随机分布的数据,hash 算法会将分区列的数据进行重新分布使得相近的值被打散到不同分区

E Hash 分区支持向量,如果是符合主键的场景,可以选择多个列作为分区键,这样无论是分区拆分,还是子分区定位,都更加准确

答:ABD

解析:可以查看一下分区的策略

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/partitioning-policy-3


6.创建表时,可以使用一些哪些标记 ?


A 字母

B 数字

C #

D _

答:ABD

解析:可以有字母,数字和下划线,没有不能以数字开头的的限制,不允许全部是数字。

ob好像没有计算节点和数据节点的说法啊,都是observer