## 考试对象
即将或已经从事 DBA 、架构师等职位的人员，希望掌握和使用 TiDB，并以此谋求更高职业发展。
## 考核⽬目标与要求
**PCTP（PingCAP Certified TiDB Professional）**是 PingCAP 公司认证 TiDB 数据库专家的缩写。PCTP 要求具备管理大型分布式关系型数据库集群的能力。PCTP 需要学习并熟练掌握 TiDB 的深度原理及高级 Feature、性能调优、SQL 优化、Trouble Shooting 等进阶内容。要成为 PCTP 必须先获得 PCTA 认证。
## 考试范围（理论考试 +上机实操考试）
### PCTP 高级进阶篇 - 理论笔试

### 考试形式和计分规则：
1.	指定考试中心集中进行在线考试；
2.	考试时长 75 分钟，共 70 道题；

### PCTP 理论考试范围：
### 一、TiDB 计算内核体系
1.	TiDB Server
  - TiDB Server 概览
  - TiDB Server 的启动、停止
    - 对 TiDB Server 启动有影响的启动参数和它们的作用
    - 怎么知道 TiDB 已经启动成功了？
    - 集群里不同 TiDB 有什么区别？怎么找到 DDL/Stats/GC 的 owner？
  - 客户端连接管理
    - 几种常见的连接方式（客户端/JDBC）/（TCP/Unix Socket）
    - SSL 的配置
    - 创建连接时，TiDB 都做了哪些工作？
    - 权限管理
    - Token Limit 的作用
    - TCP Keep Alive 的作用
    - prepare/execute 使用不同协议时的区别
    - 如何关闭连接
  - 常用对外端口
2.	TiDB Parser
  - Parser 基本原理
  - Parser 相关问题处理
    - 什么样的错误是 Parser 报错？
    - Parser 报错信息怎么解读？
3.	TiDB 关系型模型原理
  - TiDB 中表的分类
    - 物理表
    - Information Schema
    - `mysql` database
  - 关系型模型到 KV 的映射关系
  - Table Partition
    - TiDB Table Partition 的原理
    - 支持的 partition 类型
4.	DML 原理
  - 数据写入原理
  - 数据读取原理
  - Misc.
    - 几种不同的 Insert 语句语义区别
    - Replace 和 Insert on duplicate 的区别
    - 何时检测冲突？Insert 语句的 lazy check
    - 怎么改写语句让执行更快？
5.	DDL 原理
  - TiDB DDL 概述
  - TiDB drop table，truncate table，add column 等操作原理
  - TiDB DDL 问题诊断以及工具
  - TiDB Add index 操作原理以及调优
### 二、TiKV 存储内核体系
1.	TiKV 整体架构
2.	存储引擎
  - RocksDB 介绍及主要特性
  - Column family 介绍
  - LSM 原理及优缺点
  - Compaction 原理
  - RocksDB 数据写入流程
  - Key Value 分离 Titan 的设计与实现
  - RocksDB 主要参数介绍
3.	Raft 复制
  - Raft 介绍及主要特性
  - Raft 各个角色及内部机制
  - Raft 在 TiKV 中的使用
  - TiKV 自动分片机制（Region）
  - Multi - Raft 设计与实现
  - Raft 与 Paxos
  - TiKV 中的 Raft  读写流程
4.	Coprocessor
  - 算子下推
  - 执行引擎模型
5.	Placement Driver 调度内核体系
  - ETCD 原理介绍
  - TiKV 元信息及管理
    - 节点，region 
    - 元信息上报流程
  - PD 调度算法
    - 调度策略解析
    - Region 迁移过程
    - 如果通过打 label 来增加调度策略
    - Region Split、Merge
    - 如何通过 pd-ctl 管理集群

### 三、生态工具原理
1.	MySQL 数据同步到 TiDB 解决方案
  - DM 设计原理
    - DM 设计原理
    - DM 功能介绍
    - DM 数据同步处理单元设计原理
    - Relay log 实现原理
    - Binlog Replication 同步原理
  - Sharding DDL的实现与 checkpoint 机制
  - 常见错误和异常场景
    - 常见问题排查手段（不兼容 DDL 处理，借助 checkpoint 定位同步状态等）
    - 同步异常定位和处理方法（sharding DDL 阻塞，relay-log 异常，同步连接中断等问题
2.	TiDB 数据输出订阅解决方案
  - TiDB-Binlog 实现原理
    - TiDB binlog 概览
    - Pump 设计和实现
    - Drainer 设计和实现
  - Binlog 运维
    - pump/drainer 下线
    - Binlog 日志和监控详解
    - 常见的问题和处理手段
3.	TiDB 数据物理加载解决方案
  - Background
    - Why TiDB Lightning was created
    - Characteristics of TiDB Lightning
  - Import Process
    - Import mode
    - Core import process (Lightning, Importer)
    - Post-process (Checksum, Analyze, Auto-inc ID)
  - Deployment
    - Hardware requirement
    - Configurations
  - Extra Features
    - Table filter
    - Checkpoints
  - Monitoring
    - Introducing Grafana panels
### 四、事务
1.	数据库事务概述
  - 事务概念介绍
  - OCC
  - 常见主流数据库的事务隔离级别及其行为介绍（MySQL、Postgres、CockroachDB）
  - TiDB 支持的事务隔离级别及其行为介绍
  - MySQL Repeatable Read 与 TiDB 的区别
  - 两阶段提交
2.	分布式事务原理
  - Percolator 的原理
    - 简介
    - 写入过程
    - 读取过程
  - TiDB 事务原理
    - TiDB 怎么写入
    - TiDB 怎么读取
    - TiDB 如何清理锁
3.	TiDB 事务处理
  - SQL 事务
    - 事务启动
    - 事务中的DML
    - 语句提交和回滚
    - 事务提交和回滚
  - 常见提交错误
    - 写冲突处理
    - 读写冲突处理
    - 网络超时处理
  - 事务重试处理
    - 事务重试问题和实现
    - 重试行为控制
    - 重试相关日志和监控
  - select for update 处理
    - TiDB 和其他数据库处理区别
    - 处理 can not retry select for update
### 五、系统性能优化
1.	TiDB Server 性能相关原理
  - TiDB 常见系统负载
  - 读、写后台处理流程及主要性能瓶颈
  - 读热点及解决思路
  - 写热点及解决思路
  - TiDB Server 性能相关监控
  - 主要的性能相关参数
2.	TiKV 性能相关原理
  - 写入瓶颈分析和优化
  - 数据在 TiKV 中的读取流程及常见瓶颈
  - 读取瓶颈分析和优化及常见瓶颈
  - RocksDB 性能优化
  - RocksDB 主要的性能相关参数
3.	集群系统负载
  - 常见 OS 负载处理
  - 性能定位 trace
4.	常见性能优化 Case study
  - Sysbench 压测演练
  - 读热点定位和处理演练
  - 写热点定位和处理演练
  - 慢查询定位和处理演练
  - 其他瓶颈定位演练
### 六、SQL 优化
1.	查询优化器原理
  - TiDB Logical Optimization，列举现有的优化规则
  - TiDB Physical Optimization，举例讲解物理优化过程中的  task type, expected row count, data order  等等物理属性
  - TiDB Ranger：Filter 条件如何构造成 Key Ranges
  - TiDB Plan Cache for Prepared statements
2.	TiDB Statistics
  - 直方图和 CM-Sketch 详细介绍，Selectivity 估算原理
  - Analyze Table 语句如何更新直方图和 CM-Sketch
  - Query Feedback 工作原理
3.	TiDB Execution Engine
  - Chunk 和 TiDB 向量化执行引擎原理介绍
  - TiDB 的表达式计算：向量化原理+SQL Mode Behaviors
4.	表关联算法
  - Hash Join, Merge Join
  - Index Join, NestedLoopApply
5.	其他算子
  - TiDB 的 Aggregate 算法：Hash Aggregate, Stream Aggregate
  - TIDB 的 Readers：IndexReader,  TableReader, IndexLookupReader
  - TiDB Insert/Update/Delete/Replace implementations
  - DistSQL 中 Cop 请求如何发送的，CopIterator 如何工作的
  - Elastic OLTP&OLAP, Batch Size Control
6.	SQL 执行计划
  - 如果查看执行计划
  - 执行计划解读
  - CBO 模型
  - 驱动表
  - 数据寻址算法
  - 索引原理
  - 索引使用
7.	SQL 优化实践 
### 七、高可用及容灾
1.	高可用与思考(误区)
2.	基于 Raft 协议高可用(组件特性)
3.	基于 Binlog 数据备份同步架构
4.	高可用实操  

### PCTP 高级进阶篇 - 上机实操考试

### 考试形式和计分规则：
1.	指定考试中心集中上机考试，指定用机和云环境
2.	考试时长 90 分钟
3.	主要考核针对不同场景进行系统调优、SQL 优化、Trouble Shooting 等操作，强调解决问题的能力
4.	考试期间需要将过程命令行及结果截图复制在指定文档上；考试期间对操作步骤进行录屏


### 考试环境：
1.  官方考试用机为 UCloud 云环境 8-9 台 CPU：2C，内存：4G，磁盘：50G

### 考试题目举例：

TiKV 损坏场景恢复

场景：模拟多数 TiKV 损坏场景的 TiDB 集群恢复操作，在一套正常运行的集群下，手动删除其中两个 TiKV 部署目录、kill tikv-server 进程，进行灾难恢复

要求：写下具体操作步骤，并将命令返回的结果截图


