## 考试对象

即将或已经从事 DBA 、架构师等职位的人员，希望掌握和使用 TiDB，并以此谋求更高职业发展。

## 考核目标与要求：

**PCTA （PingCAP Certified TiDB Associate）是 PingCAP 公司认证 TiDB 数据库专员的缩写**。PCTA 要求具备安装部署及日常运维分布式关系型数据库的能力。PCTA 需要学习并熟练掌握 TiDB 架构原理、安装部署、周边工具等基础知识。

## 考试形式&计分规则

PCTA 理论考试为远程在线考试考试时长 60 分钟，共 60 道题（单选 30 道，多选 30 道，每题 1 分）满分 60 分，36 分为及格 （通过线以答题正确率 60%为基准，根据试卷难度系数，略有小幅波动）

## 考试范围

### 一、概述

1. 数据库、大数据发展简史
   - 数据库发展历史及主要产品
   - 大数据发展历史及主要产品
   - Spanner、TiDB 的由来及发展
     - 传统 MySQL 分库分表架构演变及遇到的问题
     - 分布式数据库概述
     - 分布式数据库的代表 Spanner、TiDB
2. TiDB 概论、架构简介
   - TiDB 整体架构
     - 存储引擎：TiKV 架构
     - 调度引擎：Placement Driver
     - SQL 计算引擎：TiDB Server
     - Spark 计算引擎：Tispark
   - TiDB 生态组件矩阵
     - 数据库导入解决方案：Data Migration
     - 数据输出：TiDB Binlog
     - TiDB 备份及恢复工具：
     - Cloud TiDB
     - TiDB Ansible
     - Lightning

### 二、系统安装部署与管理

1. TiDB 集群管理概述
   - 系统配置
     - 操作系统硬件、软件要求及相关配置
     - TiDB 参数配置
   - 安装部署 TiDB Cluster
     - TiDB 各文件介绍
     - 启动、关闭 TiDB Cluster
     - 升级 TiDB
     - 单机多实例部署
     - 在 TiDB 跑一个简单应用（Sysbench）
2. TiDB 集群管理实操
   - 集群安装部署
   - 部署 HA Proxy
   - 修改配置以及滚动升级 TiDB
   - 扩容节点
   - 多实例部署

### 三、使用管理手册

1. 常见的使用管理
    - 用户及权限管理
    - 表与系统视图
    - 连接管理
    - 常见的管理控制命令 （DCL）
1. SQL 
    - Query 处理
    - DML 处理
    - 支持 DDL 类型
1. 对象管理与维护
    - 常见的表类型
    - 支持的数据类型
    - JSON 的使用
    - 分区表的使用
    - 常见表管理命令
    - 索引（B+Tree 与 LSM Tree）
    - 表、索引健康度及统计信息
1. TiDB 日志管理
    - TiDB 系统日志格式解读
    - TiKV 系统日志格式解读
    - PD 系统日志格式解读
    - Slow Log 日志格式解读
    - Slow Log 分析视图及工具
1. TiDB 使用实操
    - 创建自己的 Schema
    - TiDB-bench 使用，模拟 OLTP 场景
    - 测试 TPCH，对比 MySQL 的性能表现

### 四、生态工具实操

1. DM 安装部署实操

    - DM 安装部署

    - DM 配置优化

    - DM 常见问题

    - DM 监控

1. TiDB-Binlog 安装部署实操

    - 部署要求及注意事项

    - 使用 TiDB-Ansible 部署

        - 下载 TiDB-Ansible

        - 部署 Pump

        - 部署 Drainer

    - 使用 Binary 部署

        - 下载官方 Binary

        - 部署样例

        - 参数配置说明

1. TiDB-Lightning 安装部署实操

    - 环境准备

        - 硬件需求

        - 导出数据

    - 使用 Ansible 部署 TiDB-Lightning

        - 部署 Lightning

        - 启动 tikv-importer

        - 启动 tidb-lightning

    - 手动部署 TiDB-Lightning

        - 下载 TiDB-Lightning 安装包

        - 启动 tikv-importer

        - 启动 tidb-lightning

        - 参数配置说明

### 五、备份恢复

1. 常见备份方案
2. 备份策略
3. 恢复策略和工具
4. 备份及恢复案例

### 六、TiDB 监控与告警

1. TiDB 集群监控

    - Prometheus 原理

    - 集群监控架构图

    - 监控数据上传流程

    - 常见的 Dashboard 解读，重点 Metrics 解读

1. TiDB 报警系统

    - 如何配置 Alertmanager

    - 如何接入第三方报警平台

    - 常规报警处理流程

1. 常见问题处理

### 七、业务开发优化

1. 业务开发最佳实践

    - 事务

    - TiDB 隔离级别详解

    - 显式事务中 DML 语句返回的 affected rows 不可信

    - 避开丢失更新影响的应用开发方法

    - 计数器，秒杀场景的处理方法

    - “嵌套事务”

    - 不支持 Spring 框架的 PROPAGATION_NESTED 传播行为（依赖 savepoint 机制）

    - 大事务

    - 自增 ID

    - TiDB 中的自增 ID 分配原理

    - 自增 ID 设计最佳实践

    - TiDB 中的自增 ID 使用方法

    - 唯一性约束

    - 主键与唯一索引

    - 外键

    - INSERT 语句默认只在提交时进行唯一性约束校验

    - 索引

    - TiDB 中的索引

    - 复合索引的设计

    - 批量计算场景的写入优化

    - 配置 SHARD_ROW_ID_BITS 拆散写入热点

    - 分区表

1. TiDB 案例
2. TiDB 性能 Benchmark
3. TiDB 慢 SQL 与调优 

### 八、TiFlash

1. HTAP 基本原理

    - HTAP 基础支持

    - 行存和列存：行 / 列格式的优势和劣势

    - 实时更新设计 vs T + 1 设计

    - 业务隔离

1. TiFlash 的基本原理

    - 总体架构介绍

    - 数据同步和一致性：Raft Learner 同步，读取一致性如何实现

    - 列存引擎的设计

    - 协处理器的设计

    - 优化器自动选择

1. TiFlash 操作：创建 / 删除同步表，引擎隔离和智能选择，监控信息介绍，TiSpark     on TiFlash
2. 常见问题 

### 九、Cloud TiDB

1. Kubernetes 系统（以下简称 K8s）

    - K8s 系统的基本原理，以及常见内置对象：Pod，Deployment，DaemonSet，Service，Job，StatefuSet，PV，PVC，RBAC，Affinity，CRD，Taint/Toleration，CronJob；

    - K8s 系统常见操作：添加/删除节点，维护节点，系统内核参数优化；

    - kubectl 工具使用，常见操作：apply，get，edit，top，port-forward，config，create，delete，logs，label，exec；

    - K8s 核心组件及其他组件功能：kube-apiserver，kube-controller-manager，kube-scheduler，kubelet，kube-proxy，calico，local-volume-provisioner，DNS。

1. TiDB Operator 系统

    - TiDB Operator 基本原理以及基本概念：TidbCluster，TidbMonitor，Backup，Restore，BackupSchedule，TidbInitializer，TidbClusterAutoscaler，TidbDiscovery；

    - TiDB Operator 常见操作：Scale in/out，滚动更新，清除数据，创建 Local PV，设置 Affinity，设置 CPU 和内存，配置监控，配置慢日志，配置文件，监控组件配置使用，日志收集管理，tkctl，pd-ctl，tikv-ctl，tidb-ctl 工具使用，常见故障诊断；

    - TiDB Operator 核心组件及其功能：tidb-controller-manager，tidb-scheduler，tidb-discovery，tidb-admission-webhook，tidb-apiserver；

    - TiDB Operator AutoFailover 功能；

    - TiDB 集群备份，包括：AdHoc 备份，周期性备份，TiDB Binlog 实时备份，以及备份恢复。

1. 系统优化，包括系统内核参数，K8s     系统，TiDB Operator 最佳实践。
2. 常见问题（FAQ）：网络问题，CrashLoopBackOff，Pod 无法调度，集群异常状态，Local PV 等等。