OBCP题目及解析

1.关于OCP中的新建告警项,告警项的所属范围包括________?(正确答案个数:2个)

A. OB告警

B. 操作系统告警

C. 应用告警

D. 服务器硬件告警

E. OBProxy告警

【答案】AC

【解析】如下图所示:

2.如果OceanBase使用机械盘作为数据盘(/data/1),可能带来的影响是________?(正确答案个数:2个)

A. 合并时间变长

B. 事务执行失败

C. 集群写入数据性能下降,RT升高

D. 读取数据性能下降,RT升高

【答案】AD

【解析】机械硬盘读写性能差于固态硬盘,合并时间必然变长,A正确;事务执行可能性能会下降,并会直接导致失败,B错误;集群写入数据是先到内存,转储时才会回写磁盘,所以写入数据性能并不会下降,C错误;从磁盘读取数据性能必然下降,D正确。

3.转储数据中的数据行可能包含几种类型?

A. 查询行

B. 删除行

C. 插入行

D. 更新行

【答案】BCD

【解析】只有对数据库数据进行的改动才需要转储落盘,查询无需落盘。

4.当某个普通租户的 memstore 使用达到阈值后,选择合并或者转储的依据是?

A、如果上次合并失败,冻结后继续执行合并

B、根据minor_freeze_times参数以及内部表__all_virtual_tenant_memstore_info表中的freeze_cnt 相比较,进行比较来决定

C、该普通租户和系统租户进行转储动作,其它普通租户没有任何影响,继续也不会继续合并

D、普通租户memstore使用量达到阈值,仅仅触发该租户级别转储,完全不需要触发合并

【答案】BD

【解析】来源:管理员指南/数据存储管理/合并(转储)管理

A:选项“如果上次合并失败,冻结后继续执行合并”,若合并失败,需要clear error。发生合并报错时,合并停止。合并报错后需要管理员介入排查,解决报错问题后可以重新开始合并。常见的报错问题通常是:磁盘满、IO 超时、磁盘 IO 错误和合并被取消等;

B:配置项 freeze_trigger_percentage ,当 MemStore 内存占用到达其上限的百分比后就进行冻结(转储和合并的前置动作),通过minor_freeze_times参数来判断当MemStore内存使用达到freeze_trigger_percentage时进行转储还是合并;

__all_virtual_tenant_memstore_info表中major_freeze_trigger参数对应的是转储和合并的阈值。

    当参数minor_freeze_times的值为0时,列active_memstore_used达到major_freeze_trigger所配置的阈值时触发合并。

    如果参数minor_freeze_times的值不为0,则当列active_memstore_used达到major_freeze_trigger所配置的阈值时,触发转储还是合并主要取决于上次合并之后发生的转储次数。

__all_virtual_tenant_memstore_info中的freeze_cnt的统计数对应的是参数minor_freeze_times的值。当freeze_cnt计数达到minor_freeze_times所配置的阈值时,下次租户内存使用率达到阈值将触发合并而不是转储。

(注:手动触发的转储不会导致 freeze_cnt 的计数增加。合并会将 freeze_cnt 计数清零。)

附:系统租户查看转储后租户的Active MemStore是否释放,同时查看freeze_cnt的计数情况:

obclient> SELECT * FROM __all_virtual_tenant_memstore_info;

5.集群合并卡住后,哪种操作的风险最小?

A、直接重启observer进程

B、Stop server

C、先suspend merge,后重启observer进程

D、先Stop server,后重启observer进程

【答案】D

【解析】Server 异常解决方案

对于 Server 间歇性异常来说,此类异常一般都是瞬时性的,在确保异常不会再次出现后,可先对异常 Server 进行 STOP SERVER 操作,然后对 OBServer 进行重启。

对于 Server 持续性异常来说,此类异常一般在出现后会一直保持,需要运维人员对故障 Server 进行下线维修。下线前用户需要先对异常 Server 进行 STOP SERVER 操作,然后对 OBServer 进行替换操作。

6.如下哪个是针对弱一致性读的第一选择?

A、选择本机房正在合并的副本

B、随机选择一台机器

C、选取同地域机房不在合并的副本

D、选取本机房不在合并的副本

【答案】D

【解析】本地常态→同城常态→本地合并→同城合并→异地常态→异地合并

7.调整系统表(   )中的配置,可以动态调整租户的资源单元大小,实现租户的节点内动态扩容/缩容功能?

A、__all_unit_config

B、__all_unit

C、__all_tenant

D、__all_resource_pool

【答案】A

【解析】通过查询内部表可以获知当前集群中已经存在的资源单元信息,资源单元可以理解为服务器资源的使用模版。资源单元的查看语句:obclient> SELECT * FROM __all_unit_config;

8.DML 语句包括

A、DELETE

B、INSERT

C、MERGE

D、UPDATE

【答案】ABCD

【解析】需要注意MERGE是DML语句

9.minor_freeze_times 的值为 3 时,手动运行 3 次 ALTER system minor freeze 后,当 Memtable 内存使用达到阈值后,会触发合并?

A、错误

B、正确

【答案】A

【解析】参数 minor_freeze_times 的增长是依赖 Memtable 内存达到设定阈值而触发的转储,而手动运行的转储命令不会进行计数。因此,无论手动转储多少次,都不会记录 minor_freeze_times。

10.可以单独删除hash分区表的其中一个分区

A、正确

B、错误

【答案】B

【解析】只有 range 可以,有明确边界

11.OceanBase的分布式事务相比于传统的两阶段提交做了一些改进和优化,关于OceanBase的分布式事务,下列说法正确的是________?

A、包括一个阶段:提交阶段(commit)

B、包括两个阶段:准备阶段(prepare),提交阶段(commit)

C、包括两个阶段:提交阶段(commit),异步清理阶段(clear)

D、包括三个阶段:准备阶段(prepare),提交阶段(commit),异步清理阶段(clear)

【答案】D

【解析】

12.从commit 到 commit ok,标准两阶段提交和ob两阶段提交,几次日志延迟,几次rpc延迟。

A、4   2   1   2

B、4   2   1   1

C、4   2   2   2

D、4   2   2   1

【答案】A

13.下列哪些内部命令是 OBProxy 支持的

A、show proxyinfo idc

B、show proxyconfig

C、show proxyroute

D、show proxymemory

【答案】ABCD

【解析】

show proxyinfo 直接执行报错。

show proxyinfo idc 可以检查proxy内部识别的LDC部署情况;

show proxyconfig 展示proxy内部各配置项属性以及config server的配置信息;

show proxyroute 用于展示proxy内部table entry状态,默认不带参数是展示所有的。proxy内部sql路由地址信息以table entry为单位,每个table entry有集群名+租户名+数据库名+表名组成,不指定表名的sql其table其内部使用__all_dummy表标记;

show proxymemory 展示proxy的内存使用情况,包括各个模块分配的内存、正在使用的内存以及模块所属类型等等,用来帮助分析proxy性能。

14.转储有哪几种方式?

A、轮转

B、自动

C、定时

D、手动

【答案】BD

【解析】转储支持自动触发和手动触发两种方式。

合并也分自动触发和手动触发两种。

合并的自动触发有以下两个触发条件:

  1. 当一个租户的MEMTable的内存使用达到了freeze_trigger_percentage设置的阈值,且转储次数已达到了minor_freeze_times设置的上限时,此时不会进行转储,而是直接进行合并。
  2. 当前时间达到了每日合并的时间点时,会自动触发合并。每日合并的时间点可通过配置项major_freeze_duty_time来控制,也可以在OCP上修改,默认是每天02:00进行合并。

15.对于查询select * from R1,R2,R3 where R1.a=R2.a and R2.b=R3.b,下列哪些hint能控制这个查询的连接顺序和连接算法?(选2个)

A、/*+use_nl(R3)*/

B、/*+index(R1 i1)*/

C、/*+no_rewrite()*/

D、/*+LEADING(R1,R2)*/

【答案】AD

【解析】

/*+use_nl(R3)*/:指定多表连接时使用NEST LOOP算法;

/*+index(R1 i1)*/:指示优化器对指定的表使用索引扫描;

/*+no_rewrite()*/:不改写SQL,肯定不对;

/*+LEADING(R1,R2)*/:指定多表连接时的顺序。

16.下列哪些方式可以设置 obproxy 的 idc 信息?(多选3个)

A、用户设置session变量set @proxy_idc_name='xx'

B、通过业务账户连接到obproxy,通过命令设置:alter proxyconfig set proxy_idc_name='机房名'

C、通过系统账户连接到obproxy,通过命令设置:alter proxyconfig set proxy_idc_name='机房名'

D、启动时通过启动参数设置

【答案】ACD

【解析】

proxy的LDC的支持全局级别 和 session级别:

  • 全局级别, 配置项proxy_idc_name用来控制全局级别的当前IDC机房信息, 默认为空。配置项的设置可以通过启动参数/登陆修改/ocp配置项更新进行, 在proxy的启动脚本中使用-i 机房名启动传入,或者proxy运行后通过alter proxyconfig set proxy_idc_name=‘机房名’;设置。
  • session级别, 设置用户变量set @proxy_idc_name=‘xx’控制session级别的当前机房信息, 默认不指定,用户可以通过进行设置。

D:OBProxy 进程启动时通过参数指定进行配置(推荐方式),示例语句如下所示:

cd /opt/taobao/install/obproxy-1.5.5 ./bin/obproxy -o proxy_idc_name=zue

17.DBA准备减小目标业务租户的unit_num,来进行业务租户的缩容,这个时候需要提前把哪些系统参数设为True? (选2个)

A、enable_replication

B、enable_sql_audit

C、enable_auto_leader_switch

D、enable_rebalance

E、enable_syslog_recycle

【答案】CD

【解析】

无论是扩容还是缩容时都需要开启

其中涉及到两个参数:

在角色切换时需要开启enable_auto_leader_switch

负载均衡需要开启enable_rebalance

18.下列哪些业务场景适合将租户级别变量ob_read_consistency设置成weak的场景:(选2个)

A、支付

B、转账

C、历史行情平台

D、用户信息查询系统

【答案】CD

19.在OB中,sql_id能够唯一标识一条参数化之后的sql,所以在gv$plan_cache_plan_stat这张表中,sql_id是唯一的,也就是说不可能出现两条记录包含相同的sql_id;

A、正确

B、错误

【答案】B

【解析】Oceanbase会在ObServer中为每个租户维护一个执行计划缓存(plan cache),__all_virtual_plan_cache_stat记录所有ObServer上租户的plan cache的统计信息。

在启用plan cache的情况下,Oceanbase会将sql进行参数化,即每一类sql对应一个plan cache项,比如 select * from ta where a = 1 和 select * from ta where a = 5虽然是不同的sql,但参数化以后的形式是一样的,均为select * from ta where a = ?,类似形式的sql都会命中该计划。但参数化结果相同的sql可能对应不同的执行计划(计划类型可能不同)。

20.OB数据库的分区键一定要包括主键的部分列

A、正确

B、错误

【答案】A

【解析】

数据表中每一行中用于计算这一行属于哪一个分区的列的集合叫做分区键 ,分区键必须是主键或唯一键的子集。由分区键构成的用于计算这一行属于哪一个分区的表达式叫做分区表达式。

21.下列会包含在 explain 计划展示中的信息有?

A、est.rows

B、operator

C、parallel

D、name

E、id

F、cost

【答案】ABDEF

【解析】

不包含 parallel,因为explain不会真的执行,在执行时才会知道 parallel 信息

22.能够加速转储的参数?

A、freeze_trigger_percentage

B、minor_freeze_times

C、major_compact_trigger

D、minor_merge_concurrency

【答案】AD

【解析】

A:减小 freeze_trigger_percentage 的值(比如 40),使 MemStore 尽早释放,进一步降低 MemStore 写满的概率。 -----减小,加速转储

当写入量大时,内存不够用,希望转储快点:调整减少 freeze_trigger_percentage 的值,加大转储的次数   -----尤其是在双十一高峰期时,更加稳定

D:minor_merge_concurrency -----增加 ,加速转储

并发做转储的分区个数;单个分区暂时不支持拆分转储,分区表可加快速度

并发转储的分区过少,会影响转储的性能和效果(比如 MemStore 内存释放不够快)

并发转储的分区过多,同样会消耗过多资源,影响在线交易的性能(MemStore 内存释放较快)

23.集群扩容:两地三中心扩容到两地五中心后,若某租户希望将三副本改为五副本,以下下哪个系统表会被修改

A、__all_zone

B、__all_resource_pool

C、__all_tenant

D、__all_unit

【答案】B

【解析】

3副本升级到5副本,需要修改resource pool里的zonelist。

24.plan_cache自动淘汰机制,可以避免发生新生成的计划无法加入plan cache的情况发生?

A、错误

B、正确

【答案】A

【解析】

如果没有淘汰机制(自动/手动):“将执行计划从计划缓存中删除,减少计划缓存对内存的使用”,是不会有充足的内存加入新计划的,貌似是正确的。

但是,新生成的计划如果出现如下两种情况,是不可以加入plan cache的。

计划缓存暂不支持的场景:

  • 执行计划所占内存超过20 M时,不会加入计划缓存。
  • 如果该计划为分布式执行计划且涉及多个表,不会加入计划缓存。

“plan_cache自动淘汰机制”是“新生成的计划能够加入plan cache”的必要但不充分条件。

25.关于闪回查询(Flashback Query)描述正确的有?(选3个)

A、默认可以flashback到上一次合并时间点的数据

B、OceanBase 2.X 版本可以支持MySQL和Oracle两种租户模式下的闪回查询

C、可以设置undo_tetention ,系统从而会保存undo_retention范围内的数据。如果需要做flashback,可以选择这段时间内的某一时间点。

D、mysql租户下,flashback支持timestamp 和 SCN 两种历史事件模式

【答案】ABC

【解析】

A:通过查询固定时间点可以查询最近的一次合并版本。如果您在 t1 时间点发起了集群合并,您最早可以查询到 t1 时间点的数据。

B:OceanBase 数据库在 V2.x.x 版本后也支持了该功能,且同时支持 MySQL 和 Oracle 两种模式下的查询,Oracle 模式从 V2.2.30 版本开始支持,MySQL 模式从 V2.2.71 版本开始支持;

C:可以闪回查询的最近一小段时间与 undo_retention 变量的设置有关,该参数的默认为值 0 ,单位为秒。假如 t1 时间点设置为了保留时间,且 t2 = t1 + 900s ,那么 t2 时间点可以查询 [t1,t2] 区间内的数据,参数设置后对之前的数据不起作用,对之后的数据才起作用。

D:Oracle 模式支持 SCN (System Change Number)和 TIMESTAMP 两种维度的查询,MySQL 模式支持SNAPSHOT 维度的查询,在OceanBase数据库中,SCN和SNAPSHOT都是指事务版本号,只是因为Oracle和MySQL中的概念不同,起了不同的名字。

26.有关parameters表述正确的是?(选2个)

A、所有系统参数,都需要登录sys租户查询/修改

B、所有系统参数均是修改后都是实时生效,不需要重启observer服务

C、修改系统参数时,可以指定修改的内容在集群范围生效、只在某个zone生效、或者只在某台具体OBserver生效

D、系统参数分为集群级和租户级参数两种,其中租户级参数的修改只对当前租户生效

【答案】CD

【解析】

A:不同租户对集群参数的查看和修改级别如下表所示:

租户类型

参数查看

参数设置

系统租户

查看集群参数和其他租户参数

可以设置集群参数或指定租户的参数

普通租户

只能查看本租户的参数

只能设置本租户的参数

B:参数分为动态生效和重启生效两类;

C:OceanBase 集群参数可以有全局(即集群Cluster)、Zone 和 Server 三种生效范围,在修改值时请根据业务需要选择生效范围:

ALTER SYSTEM SET param_name = expr

        [COMMENT 'text']

        [PARAM_OPTS]

        [TENANT = 'tenantname']

PARAM_OPTS:

        [ZONE='zone' | SERVER='server_ip:rpc_port']

PARAM_OPTS 是修改配置项时所指定的其它限定条件,例如,指定 Zone、指定 Server 等;

D:集群级别与租户级别的配置项设置会有所不同:

系统租户设置集群配置项的语法

        ALTER SYSTEM SET mysql_port=8888 [PARAM_OPTS]

租户设置租户配置项的语法

        ALTER SYSTEM SET clog_max_unconfirmed_log_count=1600 [PARAM_OPTS]

27.集群中存在:T0(T0有两个分区P00,P01),T1(T1有俩个分区P10,P11),T2(T2有两个分区P20,P21),T3(T3有两个分区P30,P31)。T0,T1,T2,T3属于同一个表组TG0,那么表组TG0中包含4个分区组。

A、错误

B、正确

【答案】A

【解析】表组TG0中包含两个分区组。

所有表必须拥有相同的Locality(副本类型、个数及位置)、相同的Primary Zone(Leader位置及其优先级)以及相同的分区方式。

通过定义表组,您可以控制一组表在物理存储上的临近关系。对于包含分区表的表组,它由若干个分区组(Partition Group)组成,每一个Partition Group包含每个分区表的一个分区。属于同一个Partition Group的所有Partition系统会通过自动调度使得它们位于同一台OBServer服务器上, 且这些分区副本的Leader也位于一台OBServer上。

28.OBproxy获取用户表的location cache,即可路由分区leader到所在的OBserver上

A、错误

B、正确

【答案】A

【解析】到最终路由到leader还是follower,还要看路由策略,不一定到leader。 

29.定义资源规格后可以直接分给租户?

A、错误

B、正确

【答案】A

【解析】

步骤一、创建“资源单元规格”,create resource unit命令,指定资源单元的规格;

步骤二、创建“资源池”,create resource pool命令,根据资源单元规格的定义创建资源单元,并赋给一个新的资源池;

步骤三、创建租户,create tenant命令,将资源池赋给一个新的租户。

30.启动OBServer ,使用哪个端口?

A、2881

B、2883

C、2880

D、2882

【答案】B

31.有一个租户,租户的资源配置为 unit_num=3,zone_list=(‘zone1’,’zone2’,’zone3’),locality=‘F@zone1,F@zone2,F@zone3’,primary_zone=‘RANDOM’, 自动负载均衡开关打开。

create tablegroup tgorder partition by hash partitions 3;

create table t1(…);

create table t3(…) partition by hash(…) partitions 3 tablegroup=tgorder;

create table t4(…) partition by hash(…) partitions 3 tablegroup=tgorder;

create table t5(…) partition by hash(…) partitions 3 tablegroup=tgorder;

请问,关于 t1 表的副本分布和 leader 分布,下列哪个描述是准确的?

A、有3个副本其中只有一个leader副本,副本分布在3个zone的任意一个unit上,且 任意两个副本不能在同一个zone,leader副本可能在zone1、zone2、zone3任意位置。

B、有3个副本其中只有一个leader副本,副本分布在3个zone的任意一个unit上,leader副本应该在zone1上。

C、有3个副本且3个都是leader副本,所有副本和leader集中分布在一个zone的3个unit上,可能是zone1、可能是zone2、可能是zone3

D、只有1个副本且该副本为leader,副本和leader可能分布在zone1、zone2、zone3中任意位置

【答案】A

32.如果遇到Over tenant memory limits报错,我们应该执行哪些操作?(正确答案个数 :3 个)

A、观察租户tps,同往常相比是否异常突增,有异常的话建议应用增加有限流措施

B、排查是memstore还是内存模块超限,如找到引起问题的sql,考虑优化可能

C、如资源足够,迅速扩大租户内存

D、立刻触发合并,将内存释放,集群恢复正常

【答案】ABC

【解析】ERROR 4030 (HY000): OB-4030:Over tenant memory limits 。

当您看到上述错误信息时,首先需判断是不是MemStore内存超限, 当MemStore内存超限时, 需要检查数据写入是否过量或未做限流。当遇到大量写入且数据转储跟不上写入速度的时候就会报这种错误。

该问题的紧急应对措施是增加租户内存。问题解决之后需要分析原因,如果是因为未做限流引起,需要加上相应措施,然后回滚之前加上的租户内存动作。如果确实因为业务规模增长导致租户内存不足以支撑业务时,需要根据转储的频度设置合理的租户内存大小。

33.Primary Zone设置优先级ZONE_1 >ZONE_2 = ZONE_3,正确的是

A、zone_1; zone_2; zone_3

B、zone_1, zone_2, zone_3

C、zone_1; zone_2, zone_3

D、zone_1, zone_2; zone_3

【答案】C

34.key分区类型的分区表,如果在建表语句中,如果不指定任何分区键,例如:create table t1 (c1 int primary key, c2 int) partition by key() partitions 5,则会:

A、语法有问题,分区键不能为空,这个DDL语句报错

B、没有分区键

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

D、以主键作为分区键

【答案】D

【解析】

35.如下哪些信息是obproxy可以从config server 获取的?(单选题)

A、集群租户信息

B、集群RS列表

C、集群列表

D、集群机器列表信息

【答案】B

【解析】config server服务可以协助获取该集群的配置信息。同一个config server可以保存多个OB集群的RSList信息,使obproxy能为多个OB集群同时提供服务。

36.global级别设置变量是ddl语句。 

A、错误

B、正确

【答案】B

【解析】set global variables是被看做DDL,因为和其他DDL一样,需要走RS调用的路径。不会像DDL一样终结事物。它只是需要走到rootservice做持久化和内容下发。

37.关于 OceanBase 的手动合并执行语句,以下说法正确的是?

A、alter system major freeze;

B、alter system minor freeze;

C、alter system set freeze

D、alter system trigger freeze

【答案】A

【解析】手动合并

可以在"root@sys"用户下,通过以下命令发起手动合并(忽略当前 MemStore 的使用率):

alter system major freeze;

合并发起以后,可以在"oceanbase"数据库里用以下命令查看合并状态:

select * from __all_zone;或者 select * from __all_zone where name = 'merge_status'; 

38.如下哪些是有关故障节点替换运维操作错误的描述?

A、启动observer服务前,需检查该机器ntp同步状态和服务行状况

B、检查 __all_server表,查看status为'active' 则表示observer正常启动并开始提供服务

C、查看永久下线系统参数,将永久下线时间改回默认值3600s (alter system set server_temporary_offline_time='3600s')

D、需要使用操作系统admin用户启动observer进程

【答案】BC

【解析】server_temporary_offline_time 用于设置节点心跳中断的时间阈值, 即节点心跳中断多久后认为其被临时下线。(说明:在V3.1.1版本中, 该配置项已不再使用,默认值:60s)

39.以下哪些内存结构占了大部分的租户内存?(选2个)

A、PageCache

B、MemStore

C、SQL Work Area

D、KVCache

【答案】BD

【解析】略

40.OceanBase 支持的表连接语法有?(选3个)

A、create join

B、MERGE JOIN

C、HASH JOIN

D、NESTED LOOP JOIN

E、quick join

F、outer join

【答案】BCD

【解析】

JOIN算子用于将两张表的数据,按照特定的条件进行联接。

JOIN的类型主要包括:

  • 内联接(Inner Join)
  • 外联接(Outer Join)
  • 半联接(Semi/Anti Join)

OceanBase数据库支持的JOIN算子主要有:

  • NESTED LOOP JOIN (NLJ)
  • MERGE JOIN (MJ)
  • HASH JOIN (HJ)

HASH JOIN和MERGE JOIN只适用于等值的联接条件,但是NESTED LOOP JOIN是用于任意的联接条件。

41.obproxy决定路由结果所依赖信息:多选

A、目标server的合并状态

B、当前请求的库表名字信息

C、目标server的idregion的信息

D、当前请求状态,强一致性or弱一致性

【答案】ACD

【解析】参考信息:和路由相关的一些基础概念

这些基础概念和OBproxy路由密切相关,根据不同的配置,Obproxy进行综合的路由排序:

1、  LDC配置:

本地:同城同机房(IDC相同)

同城:同城不同机房(IDC不同,Region相同)

异地:不同的地域(Region不同)

2、Observer状态:常态 vs 正在合并

3、租户的Zone 类型:读写型 vs 只读型

4、路由精准度:优先精准度高的

OBproxy中有目标partition的路由信息(PS)

OBproxy中没有Partition的路由信息,只有租户的路由信息(TS)

42.通过obproxy访问OceanBase集群时,下列哪些用户名格式是合法的?

A、test@testTenant#testCluster:1

B、testCluster:testTenant:test

C、test@testTenant

D、test@testTenant#testCluster

【答案】ABD

【解析】

在连接ObProxy时,其用户名类似root@sys#cluster,其中root为用户名,sys为租户名,cluster为集群名

由于OceanBase支持多租户, 每个租户对应一个MySQL实例。因此访问OceanBase的用户名需要指定租户名。又由于proxy支持OceanBase的多集群部署,因此通过proxy访问OceanBase服务时, 还需要指定集群名, 格式有四种:

username@tenantname#clustername, 如root@trade#xxbank

clustername:tenantname:username, 如xxbank:trade:root

clustername-tenantname-username, 如xxbank-trade-root

clustername.tenantname.username, 如xxbank.trade.root

43.在运维过程中,发现集群的合并时间过长,通过哪些手段提升合并速度?

A、轮转合并下调大zone_merge_concurrency

B、关闭轮转合并

C、调大merge_thread_count

D、调小 zone_merge_timeout

【答案】ABC

【解析】

配置项

说明

enable_merge_by_turn

控制开启轮转合并。

zone_merge_concurrency

控制各个 Zone 的合并并发,取值说明如下:

0 :表示系统控制

1 :表示每次 1 个 Zone 进行合并

2 :表示集群中有 2 个 Zone 在同时进行合并

C:merge_thread_count 用于设置每日合并工作的线程数。该配置项的值为 0 时,时合并的工作进程数的计算方式为 min{10,cpu_cnt*0.3} ,其中 cpu_cnt 为系统 CPU的数量。

44.为减少执行计划生成次数,OceanBase使用了执行计划缓存,为了能将SQL请求在执行计划缓存中命中相同的计划,OceanBase优化器将SQL进行参数化(将SQL中的常量转换为参数),然后使用参数化的SQL文本作为键值在执行计划缓存中获取执行计划,达到参数不同的SQL能够共用相同的计划目的,如下场景中的常量,哪些是不能参数化的?(选5个)

A、所有字段查询的范围常量,比如"between 100 and 200"

B、所有order by 后常量,比如"order by 1,2"

C、limit后常量,比如"limit 10"

D、所有 GROUP BY 后常量(例如"GROUP BY 1,2;")

E、作为格式串的字符串常量,比如"date_format(now(),'%y-%m-%d')"

F、查询数据类型精度相关的常量,比如"round(amount,4)"

【答案】BCDEF

45.双11大促,凌晨0点开始业务量上升,合并需要两个小时才能完成,问如下哪些操作可以使大促期间系统运行更稳定?(选2个)

A、减小 freeze_trigger_percentage 值

B、增大minor_freeze_times值

C、将定时合并临时调整为21:00

D、在晚上9点先手工合并

【答案】CD

【解析】办法就是算到提前2小时,把合并做掉。

在特殊的时期,比如说类似双11大促,为了 防止负载均衡导致数据库性能抖动引起业务的雪崩,OceanBase 还可以关闭自动负载均衡机制。

46.OceanBase默认的单个事务的空闲超时(ob_trx_idle_timeout)时间是多少?

A、120秒

B、100秒

C、无限制

D、10秒

【答案】A

47.OceanBase默认的单条SQL的timeout时间是多少?

A、1秒

B、10秒

C、100秒

D、无限制

【答案】B

48.OceanBase默认的单个事务的timeout时间是多少?

A、1秒

B、10秒

C、100秒

D、无限制

【答案】C

【解析】OceanBase为了避免事务长时间不提交持有锁影响其他会话,设计了两个超时逻辑。一个是事务空闲超时,一个是事务未提交超时。分别由租户变量ob_trx_idle_timeout和 ob_trx_timeout控制,默认值分别是120秒和100秒。

49.OceanBase集群内,各个OBServer的RPC允许的时钟偏差最大是多少?

A、100ms

B、200ms

C、小于1ms

D、10ms

【答案】A

50.修改GLOBAL级别的variable,属于DML

A、正确

B、错误

【答案】B

51.修改SESSION级别的variable,属于DDL

A、正确

B、错误

【答案】B

52.DDL变更的schema信息,通过内部虚拟表来记录的

A、正确

B、错误

【答案】B

【解析】:select * from oceanbase.__all_ddl_operation where ddl_stmt_str !='' order by gmt_create desc limit 1

53.对于三副本的OceanBase集群,每个副本1台机器(1-1-1模式),如果1台机器挂掉,此时该集群能够继续进行DML操作

A、正确

B、错误

【答案】A

54.对于三副本的OceanBase集群,每个副本1台机器(1-1-1模式),如果1台机器挂掉,此时该集群能够继续进行DDL操作

A、正确

B、错误

【答案】A

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯西极限存在准则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值