Skip to content

Commit 94c454c

Browse files
authored
Merge pull request pingcap#4 from lichunzhu/addRFC
add rfc for hackathon 2021
2 parents 83b273a + 12f6ff9 commit 94c454c

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

hackathan_rfc.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
+ 作者:胡海峰([email protected])/李淳竹([email protected])/曹闯([email protected])
2+
+ 项目进展:正在写 [demo]([email protected]:hackathon2021index/tidb.git)
3+
4+
# 项目介绍
5+
用 lightning 的方式来实现 索引相关 ddl: 生成 sst 文件然后 ingest 到 tikv.
6+
7+
# 背景&动机
8+
在表数据量巨大的情况下,建立索引的 ddl 很慢耗时较长。而 TiDB 虽然支持 `在线 DDL`,但是还是会耗时很久。但在实际场景中,我们往往会在优化大表读取时才会加索引,因此这会为我们带来极大的不便。
9+
10+
研究 TiDB 代码后,可以发现 TiDB 在加索引时的回填数据操作大量使用事务写并重试,耗时较大。
11+
12+
而 lightning local backend 模式可以快速导入数据并绕过事务层直接插入 kv 对。所以,该项目使用 lighting 导入索引功能来实现 tidb 的 ddl 中索引插入部分,从而极大的节约加索引时间,提升数据库效率。
13+
14+
# 项目设计
15+
## 架构设计
16+
17+
原来的 `index ddl` 基本流程:
18+
+ 修改表 meta 数据
19+
+ 修改索引数据
20+
+ finish
21+
22+
现在,原来的没有变化,只需要把 `修改索引数据` 这里 修改为 `lightning` 来完成就可以了。
23+
`修改索引数据` 其实也有如下步骤:
24+
+ 将索引的各列数据取出来
25+
+ 将 索引列数据,构造为 kv 保存到本地,主键数据还会进行冲突检测
26+
+ ddl 完成的时候,将 sst 文件 ingest 到 tikv
27+
28+
该功能,主要涉及到 `tidb/ddl` / `table/tables` 相关组件
29+
30+
## 测试
31+
32+
- 功能验证
33+
- admin check
34+
- 跟 ddl 速度对比
35+
- 是否正常走索引
36+
- 完备性验证
37+
- 正常加索引
38+
- 读时 加索引
39+
- 写时 加索引
40+
- 读写时 加索引

0 commit comments

Comments
 (0)