【考前模拟题】 1. 下列关于分布式关系型数据库的描述,正确的有(多选)
A、分布式关系型数据库致力于提供水平扩展能力
B、分布式关系型数据库意味着保证 ACID 事务特性
C、分布式关系型数据库通常与数据库中间件一同使用
D、分布式关系型数据库一定使用关系模型
E、分布式关系型由 OLAP 类的 SQL 需求催生
正确答案:ABD
【考前模拟题】2. TiDB 的默认隔离级别是?(单选)
A、Read Uncommitted
B、Read Ccommitted
C、Repeatable Read
D、Snapshot Isolation
E、Serializable
正确答案:D
答案解析:详见文档:
https://docs.pingcap.com/zh/tidb/v3.0/transaction-isolation-levels#tidb-%E4%BA%8B%E5%8A%A1%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB
【考前模拟题】3. 更新集群 rolling update 过程中,默认的 TiDB PD TiKV 的更新顺序是什么?(单选)
A、PD —> TIDB —> TiKV
B、TIDB —> PD —> TiKV
C、TiKV —> TIDB —> PD
D、PD —> TiKV —> TIDB
E、TiDB —> TiKV —> PD
正确答案:D
答案解析:
TiDB 滚动更新流程不限于平台, 顺序保持一致:
- PD 是管理集群元信息的存在, 集群的大脑, TiKV 的启动也依赖于 PD 服务的状态
- TiKV 是存储数据数据的组件, PD 启动成功之后它将被启动
- TiDB 是集群对外提供服务的组件, 属于滚动升级的最后一步
详见文档:https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.0/upgrade-a-tidb-cluster/
【2/16 模拟题】1. TiDB (version 3.0) 不支持哪种数据类型(单选) B
A、INT
B、XML
C、DATETIME
D、JSON
E、ENUM
【2/16 模拟题】2. TiDB (version 3.0) 的分区表支持哪些分区类型(多选)AC
A、RANGE
B、LIST
C、HASH
D、KEY
E、COLUMNS
【2/16 模拟题】3. 下列关于 TiDB 中 DDL 的描述,错误的是(单选) C
A、TiDB 产品中的 DDL 在执行的过程中能够保证数据的一致性
B、可以使用 admin show ddl jobs 命令查看 DDL 执行进度
C、TiDB 产品中的 DDL 操作会阻塞写入
D、TiDB 产品中的 DDL 是分布式的 DDL 算法
E、TiDB 集群中同一时刻只有一个 TiDB Sever 可以当选 DDL Owner
———————————
【3/16 模拟题】1. 关于 tikv-ctl,以下描述正确的是?(多选)
A、tikv-ctl 有远程模式和本地模式
B、tikv-ctl 不可以查看 region 的大小
C、tikv-ctl 可以下线异常 region
D、tikv-ctl 可以查看 region 属性
E、tikv-ctl 不可以查看 region 属性
正确答案:ACD
【3/16 模拟题】2. 关于 pd-ctl,以下描述错误的是?(单选)
A、pd-ctl 中可以查看 store 信息
B、pd-ctl 中可以配置副本个数
C、pd-ctl 可以修复损坏的 region
D、pd-ctl 可以下线 store
E、pd-ctl 可以查看 region 信息
正确答案:C
【4/16 模拟题】1. 秒杀、余额更新场景在 TiDB 乐观事务上的现象是什么?(多选)
A、单行数据的高并发读
B、单行数据的高并发写
C、表锁等待
D、数据一致性受到破坏
E、相关请求失败率高
正确答案:ABE
答案解析:在 v3.0.8 版本之前,TiDB 默认采用乐观事务模型,在事务执行过程中并不会做冲突检测,而是在事务最终 COMMIT 提交时触发两阶段提交,并检测是否存在写写冲突。当出现写写冲突,并且开启了事务重试机制,则 TiDB 会在限定次数内进行重试,最终重试成功或者达到重试次数上限后,会给客户端返回结果。因此,如果 TiDB 集群中存在大量的写写冲突情况,容易导致集群的 Duration 比较高。
https://docs.pingcap.com/zh/tidb/stable/optimistic-transaction#tidb-%E4%B9%90%E8%A7%82%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%9E%8B
【4/16 模拟题】2. 以下哪项描述错误?(单选)
A、TiDB 中的自增 ID 保证唯一
B、TiDB 中的自增 ID 保证顺序递增
C、TiDB 不支持序列功能
D、TiDB 的一张表中,只能存在一个自增 ID
E、TiDB 中的自增 ID 可以被声明为唯一索引
正确答案:B
【5/16 模拟题】1. 下列统计信息收集语句正确的是?(多选)
A、analyze table test;
B、analyze table test index idx_cr;
C、analyze table test partition test_20190808;
D、analyze table test with 32 buckets;
E、analyze incremental table test index idx_cr;
正确答案:ABCDE
答案解析:详情见官网: https://docs.pingcap.com/zh/tidb/stable/sql-statement-analyze-table
【5/16 模拟题】2. 下列关于 TiDB 的执行计划解析,描述准确的是?(多选)
A、TiDB 的执行计划中计算任务大致分为 root 和cop 两种,其中 root 表示在 tidb-server 层执行,cop 表示在 tikv-server 层执行
B、常见的 TableScan 算子表示在 KV 端对表数据进行扫描,TableReader 表示在 TiDB 端从 TiKV 端读取
C、常见的 TableReader 算子表示在 KV 端对表数据进行扫描,TableScan 表示在 TiDB 端从 TiKV 端读取
D、常见的 IndexReader 表示直接从索引中读取索引列,适用于 SQL 语句中仅引用了该索引相关的列或主键
E、常见的 IndexLookUp 表示从索引中过滤部分数据,仅返回这些数据的 Handle ID,通过 Handle ID 再次查找表数据,这种方式需要两次从 TiKV 获取数据
正确答案:ABDE
答案解析:详情见: https://docs.pingcap.com/zh/tidb/dev/explain-overview
【5/16 模拟题】3. 慢查询日志中参数说明错误的是?(单选)
A、Query_time:表示执行这个语句花费的时间
B、Process_time:执行 SQL 在 TiKV 的处理时间之和
C、Wait_time:表示这个语句在 TiKV 的等待时间之和
D、Total_keys:表示输出的 key 的数量。
E、Time:表示日志打印时间。
正确答案:D
答案解析:详情见: https://docs.pingcap.com/zh/tidb/dev/identify-slow-queries#%E6%85%A2%E6%9F%A5%E8%AF%A2%E6%97%A5%E5%BF%97
【6/16 模拟题】1. 以下关于 TiKV 处理读请求过程,描述错误的是(单选)
A、storage readpool cpu 负责响应 Batch get 请求。
B、storage readpool cpu 负责响应 Point get 请求。
C、Coprocessor 可用线程数的默认配置是 CPU vCore 总数的 80% 。
D、Coprocessor 请求优先级分为 high、normal 两种。
E、storage readpool 可用线程数的默认配置是 4。
正确答案:D
答案解析:
- https://pingcap.com/blog-cn/tikv-source-code-reading-11/#4-storage-%E5%92%8C%E4%BA%8B%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%99%A8-scheduler
- https://docs.pingcap.com/zh/tidb/v3.0/tikv-configuration-file#readpoolcoprocessor
- https://asktug.com/_/tidb-performance-map/#/tidb
【6/16 模拟题】2. 以下关于 TiKV 处理写请求过程,描述正确的是(多选)
A、raft store 线程 负责写入时 raft log 的分发同步到 follow 节点.
B、async apply 线程 负责将接收到的 raft log 写入本地。
C、raft store 线程 默认情况下可以用到 2vCPU 的线程数量。
D、async apply 线程 默认情况下可以用到操作系统 cpu*40% 的线程数量。
E、async apply 线程 负责写入时 raft log 的分发同步到 follow 节点.
正确答案:ABC
答案解析:https://asktug.com/_/tidb-performance-map/#/tidb
【7/16 模拟题】1. 下面关于 Data Migration (DM) 的描述,错误的有(单选)
A、单个 DM 集群可以同时运行多个数据同步任务
B、对于全量数据迁移,DM 使用 dumper/loader 单元从上游导出数据并导入下游
C、不论是全量数据迁移,还是增量数据同步,DM 都在其中部分阶段使用了并发处理
D、DM 支持 Table routing,库表黑白名单和 Binlog event 过滤 3 种数据过滤方式
E、DM 当前只支持 ROW 格式的 binlog,不支持 STATEMENT/MIXED 格式的 binlog
正确答案:D
答案解析:Table routing 不属于数据过滤方式
【7/16 模拟题】2.下面哪些应用场景是 Data Migration (DM) 不支持的(多选)
A、同步 TiDB 的业务数据到 MySQL
B、同步 MySQL/MariaDB 中部分业务数据到 TiDB
C、上游通过 pt-osc 或 gh-ost 工具执行 online DDL 操作
D、同步上游某个表的部分列到 TiDB
E、将上游多个分表合并到下游的一张表
正确答案:AD
【8/16 模拟题】1. 下面关于 Data Migration (DM) 的描述,正确的有(单选)
A、DM 只支持全量或增量的数据同步任务
B、DM-worker 负责进行数据同步任务的拆解与分发
C、一个 DM-worker 可以绑定到上游多个 MySQL 实例
D、DM-Master 需要和上下游数据库都建立连接
E、DM-Master 负责执行具体的全量、增量数据同步任务
正确答案:D
答案解析:https://docs.pingcap.com/zh/tidb-data-migration/v1.0/overview
【8/16 模拟题】2.关于 Data Migration (DM) 的数据迁移功能,下面描述正确的有(多选)
A、Table routing 不支持对同一个表设置多个不同的路由规则
B、黑白名单过滤规则支持使用正则表达式来匹配库名、表名
C、Binlog event filter 在同一个表匹配上多个规则时,将会顺序应用这些规则,并且白名单的优先级高于黑名单
D、合库合表处理冲突自增主键时,推荐使用去掉自增主键的主键属性或使用联合主键的方式
E、合库合表处理冲突自增主键时,推荐使用 Column mapping 功能作为首选方案
正确答案:ABD
答案解析:
- https://docs.pingcap.com/zh/tidb-data-migration/v1.0/feature-overview#table-routing
- https://docs.pingcap.com/zh/tidb-data-migration/v1.0/feature-overview#block–allow-table-lists
- https://docs.pingcap.com/zh/tidb-data-migration/v1.0/feature-overview#binlog-event-filter
【12/16 模拟题答案公布】1、Pod 长时间处于 Pending 状态时可以通过哪个命令查看原因?(单选)
A: kubectl describe pod -n
B: kubectl get pod -n
C: kubectl logs pod -n
D: kubectl get statefulset -n
E: kubectl exec pod -n
答案:A
【12/16 模拟题答案公布】2、TiDB Operator 包含哪几个组件?(多选)
A node-exporter
B tidb-controller-manager
C tidb-scheduler
D local-volume-provisioner
E kube-controller-manager
答案:BC
———————————
【13/16 模拟题答案公布】、TiFlash 中的数据副本在 Raft Group 中的角色是:(单选)
A、Leader
B、Follower
C、Learner
D、Leader & Follower
E、Leader & Learner
答案:C
【13/16 模拟题答案公布】1、下列场景中不属于 HTAP 的是:(多选)
A、电商购物节销售情况实时大屏展示
B、电商订单系统;
C、物流系统对快件的跟踪及时效性分析
D、CFO 发布公司月度销售报表
E、金融系统及销售系统中的的实时反欺诈分析
答案:BD
下列哪些是 TiDB DDL 不支持的操作
A、同时创建多个索引
B、同时创建多个列
C、有损变更,比如从 BIGINT 变为 INTEGER,或者从 VARCHAR(255) 变为 VARCHAR(10)
D、修改 DECIMAL 类型的精度
E、修改字段字符集为 gbk
ABCDE
“以下哪个命令可以查看 Cloud TiDB v3.0 的 slow log?
A、kubectl get -n
B、kubectl logs -n
C、kubectl logs -n
D、kubectl get -n
E、kubectl exec -n
C
"以下哪个命令可以查看 Cloud TiDB v3.0 的 slow log? C
A、kubectl get -n
B、kubectl logs -n
C、kubectl logs -n
D、kubectl get -n
E、kubectl exec -n
“TiDB Operator 包含哪几个组件?BC
A node-exporter
B tidb-controller-manager
C tidb-scheduler
D local-volume-provisioner
E kube-controller-manager”
"下列场景中不属于 HTAP 的是:
A、电商购物节销售情况实时大屏展示
B、电商订单系统;
C、物流系统对快件的跟踪及时效性分析
D、CFO 发布公司月度销售报表
E、金融系统及销售系统中的的实时反欺诈分析
“TiFlash 中的数据副本在 Raft Group 中的角色是:
A、Leader
B、Follower
C、Learner
D、Leader & Follower
E、Leader & Learner”
考点:
1 并不是所有 SLOW_QUERY 的语句都是有问题的。会造成集群整体压力增大的,是那些 process_time 很大的语句。wait_time 很大,但 process_time 很小的语句通常不是问题语句,是因为被问题语句阻塞,在执行队列等待造成的响应时间过长。
2 除了获取 TiDB 日志,还有一种定位慢查询的方式是通过 admin show slow SQL 命令
admin show slow recent N;
admin show slow top [internal | all] N;
3
tidb_slow_log_threshold | 300 |
| tidb_slow_query_file | log/tidb_slow_query.log |
tidb_slow_log_threshold:设置慢日志的阈值,执行时间超过阈值的 SQL 语句将被记录到慢日志中。默认值是 300 ms。
tidb_query_log_max_len:设置慢日志记录 SQL 语句的最大长度。默认值是 4096 byte。
tidb_redact_log:设置慢日志记录 SQL 时是否将用户数据脱敏用 ? 代替。默认值是 0 ,即关闭该功能。
tidb_enable_collect_execution_info:设置是否记录执行计划中各个算子的物理执行信息,默认值是 1。该功能对性能的影响约为 3%。开启该项后查看 Plan 的示例如下:
select tidb_decode_plan(‘jAOIMAk1XzE3CT…’);
通过设置 SHARD_ROW_ID_BITS,可以把 RowID 打散写入多个不同的 Region,缓解写入热点问题。但是设置的过大会造成 RPC 请求数放大,增加 CPU 和网络开销。
4 对于主键非整数或没有主键的表或者是联合主键,TiDB 会使用一个隐式的自增 RowID,大量 INSERT 时会把数据集中写入单个 Region,造成写入热点。
通过设置 SHARD_ROW_ID_BITS,可以把 RowID 打散写入多个不同的 Region,缓解写入热点问题。但是设置的过大会造成 RPC 请求数放大,增加 CPU 和网络开销。




