大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。
社群交流
本章目标:掌握本章核心知识点
前置要求:完成前序章节学习
预计时长:60 分钟
为了给大家提供一些技术交流的平台,目前已成立的技术交流群:
- Oracle 数据库交流群
- 国产数据库交流群
- Linux 技术交流群
- ChatGPT 4o 免费体验群
需要进群(均已超过 200 人,需要邀请)可以添加号主微信:Lucifer-0622,备注对应的群名即可。
前言
近期,南大通用 GBase 8a 数据库新一期的 GDCA 认证开启火热报名:2024 年十一月 GBase 8a MPP Cluster 认证培训,到今天为止,培训课程已经学习完成,我总结了每节课的课后练习题,一共 100 题,分享出来供大家一起查阅。
当然,配合 GBase 8a 数据库实操练习,效果更佳,GBase 8a 安装部署可以参考:GBase 8a MPP 集群部署最佳实践!
单选题
1、GBase 8a MPP Cluster 数据库属于( )?
正确答案: B
解析: 南大通用大规模分布式并行数据库 GBase 8a MPP Cluster 是列存数据库,主要用于分析场景,属于 OLAP 场景使用 SQL 处理结构化数据,属于关系型数据库。MPP 技术架构处理海量数据,数据分散在多个节点上,又是分布式数据库。
2、数据库行业中有多位科学家获得了图灵奖,其中有一位发明了很多种不同类型的数据库,像 SqlServer、Sybase、Informix、DB2 等前生 Ingres 这款数据库,还有 PostGreSQL(又叫 PG)也是他推出的,他的名字( )。
正确答案: D
3、以下哪个老牌国产数据库厂家是在 2003–2006 年期间成立的( )?
正确答案: C
解析: 天津南大通用数据库技术股份有限公司是2004年成立的。
4、GBase 8a 对于智能索引的特点理解错误的是( )
正确答案: D
5、在 GBase8a v95 版本集群中,一个数据节点不属于任何一个 VC 中,被称为( )节点。
正确答案: B
解析: Free Node 节点不属于任何一个 VC。
6、集群中负责各节点实例间共享信息,并在多副本操作中,控制各节点数据一致性状态的组件是( )?
正确答案: B
解析: GCWare 用于各节点 GCluster 实例间共享信息,以及控制多副本数据操作时,提供可操作节点,并在多副本操作中,控制各节点数据一致性状态。
7、GBase 8a 集群中由数据节点组成的集群叫做( )?
正确答案: D
解析: 由 gcluster 节点组成的集群叫 GCluster 集群,由数据节点组成的集群叫 Data 集群,由 gcware 节点组成的集群叫 GCware 集群。三个集群协同工作形成联邦架构。
8、用户连接 GBase 8a 数据库时,默认使用的连接端口是?
正确答案: B
解析: 5050 是 gnode 端口,5258 是 gcluster 端口,5919 是 gcware 端口,16066–16166 是数据远程导出端口。
9、C/S 架构中的服务端内置在( )集群节点中?
正确答案: B
10、gcmonit 负责监测以下哪个进程?( )
正确答案: C
11、以下有关 8a 集群初始化之前可运行的操作描述正确的是( )?
正确答案: A
解析: 只有初始化后,数据库才能将数据写入相对应的数据分片。
12、有关 gcluster_services all stop 命令,描述正确的是( )?
正确答案: C
解析: 由 DBA 用户执行,关闭当前节点的所有数据库服务进程。
13、当集群 gcluster 节点出现数据不一致时,应如何定位问题( )?
正确答案: A
解析: 集群管理节点主要维护数据库的元数据,所以出现数据不一致时主要查看 ddlevent。
14、GBase 8a MPP Cluster 中,使用以 @ 开头的变量是( )
正确答案: C
15、GBase 8a MPP Cluster 支持的 DATETIME 类型,支持的最小时间单位是( )
正确答案: C
解析: GBase 8a MPP Cluster 支持的 DATETIME 类型,支持的最小时间单位是微秒。
16、DECIMAL 类型是严格的数值数据类型,建表语句 create table t(i int, j decimal); 中,没有具体写 DECIMAL 位数,则默认是( )位
正确答案: B
解析: DECIMAL 默认是 DECIMAL(10,0)
17、GBase 8a MPP Cluster 每条 SQL 语句默认的结束符号是( )
正确答案: B
解析: GBase 8a MPP Cluster 每条 SQL 语句的默认结束符号是 ;。
18、GBase 8a MPP Cluster 支持数据类型中,()类型不能有 DEFAULT 值。
正确答案: BCD
解析: 大对象类型不支持 DEFAULT 值,像 TEXT、BLOB 和 LONGBLOB。
19、GBase 8a MPP Cluster 支持的 DECIMAL(M,D) 类型,其中 M 是总位数,最大支持( )位
正确答案: D
解析: GBase 8a MPP Cluster 支持的 DECIMAL(M,D) 类型,其中 M 是总位数,最大支持 65 位。
20、在实际的 GBase 8a 项目中,建议客户使用( )类型存储字符串。
正确答案: C
解析: 数仓等项目建议使用 VARCHAR 类型存储字符串,8a 不支持 VARCHAR2 类型。
21、GBase 8a MPP Cluster 执行 SQL 命令,DDL 和 DML 执行步骤不同点:( )
正确答案: A
解析: 一条 DDL 命令会在所有 gcluster 管理节点和 gnode 计算节点上执行。一条 DML 命令由 GCluster 发起节点下发给 gnode 计算节点,各计算节点执行 DML 命令更新数据,然后返回结果给发起管理节点。
22、快速 UPDATE 模式,需要开启 ( )参数开关
正确答案: A
解析: 快速 UPDATE 模式,需要开启 gbase_fast_update 参数为 1 或者 on,开启快速更新模式。
23、哈希分布表中被定义为 distributed by 的字段,不能做( )操作。
正确答案: B
解析: 哈希分布表中的 hash 列字段,不能做 update 操作。
24、笛卡尔乘积是由于( )的表关联产生的。
正确答案: D
解析: 没有关联条件的两表会产生两表条数相乘记录的联合表。
25、以下聚合语句中错误的是( )
正确答案: D
解析: 有 group by 子句时,投影列需包括 group by 后分组字段和聚合函数。
26、where和having用法区别( )
正确答案: BCD
解析: having 中不能有列的别名,所以A错。
27、COUNT(*) 和 COUNT(colName) 结果( )
正确答案: B
解析: 有 NULL 值时,二者查询的条数不同。COUNT(colName) 只记录不含 NULL 值的条数。
28、GBase 8a MPP Cluster 执行单个复制表 DQL 语句,会下发到( )计算节点上
正确答案: C
解析: 每个节点都有复制表,随机选择一个节点执行即可。
29、GBase 8a MPP Cluster 执行单个 hash 分布表 select 语句,WHERE 子句中只有一个 hash 分布列条件,语句会下发到( )计算节点上
正确答案: D
解析: hash 分布表能计算出数据具体落在哪个节点上,所以不是所有节点都查询,只下发到有该数值的节点执行即可。
30、select round(123.456, -2) 的执行结果:
正确答案: C
解析: round 函数支持四舍五入,-2 参数表示小数点前 2 位,为百位,查看十位数字为 2,则直接舍去,结果为 100。
31、数据库字符集是 UTF8,SELECT LENGTH('南大通用数据') 执行结果是( )
正确答案: C
解析: LENGTH() 函数返回值是字节个数,UTF8 字符集,一个汉字为 3 个字节存储,则结果为 18。
32、统计 2012(含)年后出生的学生,以下( )语句正确且执行效率最高。
- A
select SId, SName, SAge from student where to_char(SAge, 'YYYY') >= 2012;
- B
select SId, SName, SAge from student where SAge >= to_date('2012-1-1');
- C
select SId, SName, SAge from student where SAge >= to_date('2012-1-1', 'YYYY-MM-DD');
- D
select SId, SName, SAge from student where to_char(SAge, 'YYYY') > 2012;
正确答案: C
解析: where 条件中使用函数尽量在值上,不要在字段上使用函数,这样少执行函数次数,提高性能。to_date 函数有两个参数,只写一个参数是错误的。
33、求距离月底还有多少天,正确的语句是( )
正确答案: B
解析: DATEDIFF(LAST_DAY(NOW()), NOW()) 得到的天数为正数,DATEDIFF(NOW(), LAST_DAY(NOW())) 得到的天数为负数。
34、SELECT TRUNCATE(127.456, -1) 执行结果为( )
正确答案: B
解析: TRUNCATE 函数为截取指定位数,-1 参数表示小数点前 1 位,为十位,则直接舍去十位后面的数字,结果为 120。
35、SELECT LAST_DAY('0000-12-1') 运行的结果是( )
正确答案: D
解析: '0000-12-1' 不是一个正确的日期,返回值为 NULL。
36、关于 NULL 的叙述,()是错误的
正确答案: C
解析: count(SAge) 不统计表中该字段为 NULL 值的条数。
37、显示 “2021年03月16日” 这样的日期格式,正确的 SQL 语句是()
正确答案: B
解析: 根据日期格式规则,正确答案为 SELECT DATE_FORMAT(sysdate(), '%Y年%m月%d日'),%Y 代表 4 位的年,%m 代表 2 位的数字月,%d 代表 2 位的天。
38、SELECT add_months('2020-12-30', 1); 的执行结果()
正确答案: D
解析: add_months() 函数返回值是日期时间类型。
39、NOW 和 SYSDATE 函数的区别是()
正确答案: B
解析: NOW 和 SYSDATE 函数都能得到当前日期和时间,区别为 NOW 取的是语句开始执行的时间,SYSDATE 取的是该函数执行的实时时间。
40、SELECT CHAR_LENGTH('南大通用数据') 执行结果是()
正确答案: B
解析: CHAR_LENGTH() 函数返回值是字符个数,结果为 6。
41、以下授权语句( )是正确的
正确答案: C
解析:
- “
grant select on * to bizMan@localhost” 错误在于只有一个 *;
- “
grant select courseware.* to bizMan@localhost” 错误在于缺少 on 关键词;
- “
grant select on courseware.* to user bizMan” 错误在于多了 user。
42、create user bizMan identified by 'x' 创建的 bizMan 用户可访问的客户端( )
正确答案: A
解析: 新建用户 bizMan 等同于 bizMan@%,任意主机均可登录。
43、ALL 是一个特殊权限,不包含( )
正确答案: B
解析:
ALL 权限不包含 GRANT OPTION 给其他用户授权权限。
44、收回表插入数据权限语句以下正确的是( )
正确答案: C
解析:
revoke 后面用 from 关键词,表级权限需写明具体的数据库名称。
45、和 SHOW VARIABLES LIKE 'gbase_sql%' 等价的语句是( )
正确答案: A
解析: 选项 A 正确地从 information_schema.global_variables 表中查询 variable_name 和 variable_value,与 SHOW VARIABLES LIKE 'gbase_sql%' 等价。
46、( )表存储哈希键值与 nodeid 的对应关系。GBase 8a 数据库引擎根据计算出的 hash 值确定数据存储在哪个节点上。
正确答案: B
解析: gbase.nodedatamap 表存储哈希键值与 nodeid 的对应关系。
47、查看正在运行的线程,与 SHOW PROCESSLIST 等价的语句是( )
- A
select * from gbase.processlist;
- B
select id, user, host, db, command, time, state, info from information_schema.processlist;
- C
select id, user, host, db, command, time, state, info from performance_schema.processlist;
- D
select * from processlist;
正确答案: B
解析: SHOW PROCESSLIST 与 information_schema.processlist 表查询的内容一致。
48、获取用户组 Role 和用户 User 关系信息需要查询( )系统表
正确答案: C
解析: gbase.role_edges 表记录用户组 Role 和用户 User 关系信息。
49、显示当前数据库版本,正确的语句是( )
正确答案: C
解析:
version() 函数返回数据库版本信息。
50、中止连接当前执行的语句,但是不中止该连接本身,正确的语句是( )
正确答案: A
解析: 需要加 QUERY 参数,以中止连接当前执行的语句,但是不中止该连接本身。
51、建表语句 create table tb(id int, name varchar(50), c int) REPLICATED; 创建的是( )表?
正确答案: C
解析: REPLICATED 表示创建的是复制表。
52、当客户端连接上 GBase 8a MPP Cluster 数据库后,执行( )SQL命令切换到指定数据库下。
正确答案: C
解析: 使用 use database_name; 命令切换到指定数据库下
多选题
1、集中式事务型数据库经过了 40 多年发展,技术上进行三代演进,分别是( )?
正确答案: A, B, C
解析: 交易数据库发展到今天,历经 40 年,演进可清晰的划分为三代:单机、主备集群、共享存储集群。
2、GBase 8a 对于并行理解正确的是( )
正确答案: B, D
3、以下针对 GBase 8a 集群数据库中 DC 的描述正确的是( )?
正确答案: A, B, D
解析: DC 文件依赖操作系统的文件大小限制进行分裂和存储。DC 是基本 I/O 单位,具有查询所涉及列块的列扩展I/O。每个 DC 包含 65536 行数据,数据行数不足时以 DC 尾块形式单独存放。DC 尾块不封装、不压缩。
4、8a 数据库的压缩支持( )
正确答案: A, B, C
解析: 实现库级、表级、列级三级压缩选项。压缩算法按数据类型和数据分布不同而优化,自动选择最优压缩算法,灵活平衡性能与压缩比的关系,可以对压缩方式进行修改。
5、GBase 8a 集群数据库主要应用于( )?
正确答案: BCD
解析: 南大通用大规模分布式并行数据库集群系统是为管理超大规模数据量而设计的通用计算平台,具备高性能、高可用、高扩展特性,广泛应用于各类企业单位的数据仓库系统、BI 系统和决策支持系统。
6、数据多分片部署的优势在于( )
正确答案: AC
7、下列有关 SetSysEnv.py 脚本描述正确的是( )?
正确答案: CD
解析: SetSysEnv.py 脚本用于设置集群各节点的安装环境,会涉及到系统环境的设置,所以需要以操作系统的管理员身份执行。Gcware 独立部署于单独节点的情况下,可以不执行该脚本。
8、下列有关 demo.options 文件描述正确的是( )?
正确答案: ABD
解析: 8a 集群安装时,使用 demo.options 文件作为集群静默安装的配置文件。该文件标识集群各节点角色、账户信息、密码等。
9、影响 license 失效的原因有( )?
正确答案: ABC
解析: 下发的 License 会包含:使用期限、数据规模、gnode 节点数量等信息。
10、企业管理器 GBaseDataStudio 能够实现以下哪些功能( )?
正确答案: ABCD
解析: 企业管理器作为集群的图形化客户端,可以实现各种数据库操作并可视化数据库对象。
11、以下关于企业管理器 GBaseDataStudio 说法正确的是( )?
正确答案: ABC
解析: 企业管理器作为集群的图形化客户端,提供 Linux 版和 Windows 版。
12、以下有关 gcadmin 命令,说法正确的是( )?
正确答案: AC
13、gcluster_services all info 命令有可能查看到以下哪些进程( )?
正确答案: BC
解析: gcluster_services all info 命令用于查看 gcluster 和 gcrecover 等进程的运行状态。
1[gbase@gbase8a01 ~]$ gcluster_services all info
2/opt/gbase/192.168.6.72/gcluster/server/bin/gclusterd is running
3/opt/gbase/192.168.6.72/gcluster/server/bin/gcrecover is running
4/opt/gbase/192.168.6.72/gnode/server/bin/gbased is running
5/opt/gbase/192.168.6.72/gnode/server/bin/gc_sync_server is running
14、以下选项中,属于 gnode 节点模块进程的是( )
正确答案: CD
解析: gbased 和 gc_sync_server 是 gnode 节点模块的相关进程。
15、GBase 8a MPP Cluster 中,关于 SQL 描述错误的是( )
正确答案: CD
解析: 需要设置参数 cluster_extend_ident 参数为 1 时,才支持中文库名、表名,默认此参数为 0,不支持中文。数据库、表、列等标识符名称中包括特殊字符或关键词时,每个对象需要加反引号包围,例如 gs-table.gs-column,不能加到一起。
16、Student 包含 SId,Sname,Sdept,Sage 等字段,以下 INSERT 语句正确的是( )
正确答案: ABC
解析: 表名后不写明要插入的列是错误的。
17、数据操作语句 DML 包含( )
正确答案: BCD
解析: DML 不包含 SELECT 查询语句。
18、以下 INSERT 语句正确的是( )
- A INSERT INTO score (sid, score) VALUES (1, 80);
- B INSERT INTO score [sid, score] VALUES (1, 80);
- C INSERT score (sid, score) VALUES ((1, 80), (2, 76), (3, 91), (4,86), (5,89));
- D INSERT score (sid, score) VALUES (1, 80), (2, 76), (3, 91), (4,86), (5,89);
正确答案: AD
解析: 插入多个值时,元组集合外不用再加一层圆括号。
19、哈希分布表的哈希列的约束是( )
正确答案: CD
解析: v95 版本的 8a 支持 hash 列可以是 null 值和多列 hash。
20、使用 union 或 union all 时,需( )
正确答案: ACD
解析: 各个 select 集合投影列相同次序上的列类型一致,个数一致,列名可以不同,以第一个 select 列名显示。
21、表连接类型分为( )两大类
正确答案: AB
解析: 表连接类型分为内连接和外连接。
22、以下条件分支语句正确的是( )
正确答案: BCD
解析: 语句末尾要有 END
23、查询日期月份最后一天,以下语句哪些是正确的()
正确答案: BCD
解析: 含中文字符日期不是标准可支持的日期类型格式。
24、获取当前日期时间,可以使用( )函数。
正确答案: ABCDE
解析: 全部都正确,均能获取当前日期时间。
25、SELECT IFNULL(country, '未知') RESULT FROM worldcup 语句中控制流函数 IFNULL 可以替换为()。
正确答案: ABC
解析: NULLIF 函数是判断表达式是真还是假,与 IFNULL 返回值不同,所以不能替换。
26、字符串连接语句正确的是()
正确答案: ACD
解析: + 为数值相加运算符,没有字符串拼接的功能。
27、授予用户权限组权限,正确的语句是( )
正确答案: AB
解析:
grant 后面用 to 关键词,用户组加双引号,认为是数据库对象;若是单引号,则会认为是字符串。
28、GBase 8a 的权限级别包括( )
正确答案: ABCDE
29、以下授予表插入数据权限的语句正确的是( )
正确答案: BD
解析:
- “
grant insert("ID") on courseware.test01 from bizMan@localhost;” 错误在于 grant 后面的关键词应该是 to;
- “
grant insert("ID") on *.test01 to bizMan@localhost;” 的错误在于表级权限在数据库级权限下,需写明具体的数据库。
30、回收用户的 Role 权限,正确的语句是( )
正确答案: CD
解析: revoke 后面用 from 关键词,用户组加双引号,认为是数据库对象;若是单引号,则会认为是字符串。
31、STUDENT 表分片有一个副本,以下( )语句等价于 SELECT COUNT(*) FROM STUDENT
正确答案: AC
解析: COUNT(*) 与 COUNT(1) 都表示总条数;performance_schema.tables 保存的是所有分片的表条数,由于有一个副本,2倍数据,需要将 TABLE_ROWS 除以 2。
32、目前 GBase 8a 的 hash 分布列支持哪几种数据类型( )
正确答案: ACD
解析: hash 分布列当前只支持整数类型、varchar、decimal 数据类型
33、hash 索引列不支持数据类型是( )
正确答案: BC
解析: hash 分布列当前只支持整数类型、varchar、decimal 数据类型
34、以下哪个操作能释放 t 表数据占用的物理空间( )
正确答案: AD
解析: DROP TABLE 和 TRUNCATE TABLE 可以释放数据占用的空间
35、使用 ALTER TABLE 语句能修改表字段的( )
(多选题,2分)
正确答案: CD
解析: ALTER TABLE 语句不支持改变量的数据类型、改变量的属性(NOT NULL、默认值)、改变表的字符集;可以变列的长度,只能变大,不能变小;可改变名称
判断题
1、集群镜像是两个统一管理的VC,为了实现数据实时同步、相互备份、负载分担的目的而建立的镜像关系。
正确答案: 正确
2、Candidate 是 gcware 集群竞选 Leader 时的角色,选举完成,该角色会自动成为 Leader 的备份。
正确答案: 错误
3、GBase 8a 集群内,单个节点的主分片越多,数据查询性能越高。
正确答案: 错误
4、GBase 8a 集群数据库安装成功后,数据库的初始管理员为 root,密码为空。( )
正确答案: 正确
解析: 数据库安装完成后,数据库自动生成管理员账户 root,初始密码为空。使用 root 账户登录数据库后执行初始化数据库操作,数据库才能正常使用。
5、图形化的企业管理器使用 JDBC 接口连接 GBase 8a 集群,因此也可以通过设置参数,使得企业管理器实现连接时的高可用和负载均衡。
正确答案: 正确
6、运行在非 gcluster 节点的命令行客户端,必须使用“-h”参数。( )
正确答案: 正确
解析: gccli -h 参数用于指定通过哪个服务器登录数据库。除非数据库客户端与登录服务器在同一节点,否则需要指定 -h 参数指明要登录的服务器。
7、GBase 8a 数据库的集群管理工具 gcadmin,随 GBase 8a 数据库一起安装,部署在 gcluster/server/bin 目录中。
正确答案: 错误
解析: gcadmin 是专门为 DBA 管理员提供的用于对集群进行管理和监控的工具软件。随 GBase 8a 数据库一起安装,部署在 gcware/bin 目录中。
8、GBase 8a MPP Cluster v9 版本增加虚拟集群的概念,当没有多个 VC 情况下,8a 集群为兼容模式,会默认包括一个 VC,id 是 vc00001,在访问路径中可以省略。( )
正确答案: 正确
解析: GBase 8a MPP Cluster v9 增加了虚拟集群概念,在没有多个 VC 的情况下默认包括一个 VC,id 为 vc00001,可以在访问路径中省略。
9、其他数据库表要迁移到 GBase 8a MPP Cluster 时,当遇到跟 8a 支持的数据类型关键字不一致时,必须要把列的数据类型完全改写成 8a 支持的数据类型才能正确建表。( )
正确答案: 错误
解析: 8a 支持隐式转换,对于一些数据类型,例如 bool 类型、int2 等,能自动转换成 8a 支持的列类型。
10、GBase 8a 的 DELETE 支持级联删除,即关联表的数据同时被删除。
正确答案: 错误
解析: GBase 8a 的 DELETE 操作不支持级联删除,一次只能删除一个表中的数据。
11、GBase 8a 的 DELETE 操作会实际删除数据,重新创建智能索引,所以删除数据操作的性能较低。
正确答案: 错误
解析: GBase 8a 的 DELETE 操作会打删除标记,不实际删除数据。
12、系统函数在 SQL 语句中,经常出现的位置在 SELECT 投影列中,或者 WHERE 子句中的查询条件中。
正确答案: 正确
13、GBase 8a 数据库用户名大小写不敏感( )
正确答案: 错误
解析: GBase 8a 数据库用户名大小写是敏感的。
写在最后
本文仅记录课后练习题以及对应答案的解析,并非 GBase 8a GDCA 实际考试考题,仅供学习参考。
往期精彩文章
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」