【资料+Q&A回顾】TiFlash 存储引擎的设计思路

【活动视频回放】https://www.bilibili.com/video/BV16A4y1X7gy/
【PPT下载】:TiFlash 存储层概览.pdf (877.2 KB)

全文回顾: TiFlash 源码阅读(一) TiFlash 存储层概览

以下是线上活动 Q&A 环节小伙伴们提到的问题,附上解答~

1. 多层的LSM树有什么好处呢?

解答:是 LSM Tree 存储的数据量增加之后一种必然的结果吧。比如假设 L0 的最大数据量是 10MB,那么 L1 一般能存储 10x 的数据量,即 100MB,以此类推。L1 的数据量不能无限大,因为需要平衡写放大的问题。
———————————————————————————————

2. TiFlash,TiKV是要存储两份数据,有点浪费存储空间呢?

解答:TiFlash 是按表同步,对于同步到 TiFlash 的表确实需要在 TiFlash 和 TiKV 存储两份数据。
———————————————————————————————

3. 二级索引怎么解决正确性问题?

解答:TiFlash 中的数据主要分为 Delta 和 Stable 两部分,其中 Stable 的数据是按照 Pack 组织的,每个 Pack 大概有 8192 行左右,为了保证二级索引的正确性,在写入时需要将相同主键的数据写入到同一个 Pack 中,这样在用二级索引过滤时可以保证 MVCC 的正确性。更详细的解释可以期待后续的 DeltaIndex 专题的源码解析。
———————————————————————————————

4. 切分segment的分析性能,对比clickhouse怎么样?

解答:具体性能可以根据自己的场景测试一下哦。ch 由于不需要处理 mvcc 版本过滤等事情,所以性能理论上会好于 TiFlash。
———————————————————————————————

5. 如何去掉Ck on cluster语法?

解答:Ck on cluster语法是 Clickhouse 的专用语法,TiFlash 里的数据是通过 Raft 协议同步和管理的,因此在 TiFlash 里不需要考虑该语法。
———————————————————————————————

6. 有和ck的benchmark吗?有做TPC-H的标准对比测试么?

解答:ClickHouse 主要面向单表场景,不适合 TPC-H 场景。

TiDB TPC-H 性能对比测试报告 - v5.4 MPP 模式对比 Greenplum 6.15.0 以及 Apache Spark 3.1.1
———————————————————————————————

7. 请问数据能直接加载到 TiFlash 中吗?

解答:不可以,目前数据必须通过 TiKV 同步到 TiFlash。
———————————————————————————————

8. mpp是 region 为单位交换吗?

解答:是的,也可以批量读取数据。
———————————————————————————————

9. TiFlash主要解决什么问题的?适用哪些场景?

解答:主要解决关系型数据的实时分析问题,即 Realtime OLAP。TiFlash 可以保证数据的 事务一致性,并且实时同步 OLTP 业务的更新,分析性能媲美专用的 AP 数据库。让 TiDB 可以同时很好的处理 TP 和 AP 的业务。
———————————————————————————————

10. DeltaIndex的内存开销如何权衡?

解答:通常情况下,Delta Layer 的数据量占总数据量的 3% 以内,而一个 Entry 只需要 16 个字节,若按照单节点存放 100 亿条数据来估算,大概需要 4.5 GB 内存,内存开销还可以接受。可以通过配置 delta_index_cache_size 限制 DeltaIndex 的最大内存占用。超过内存占用时会淘汰一部分 DeltaIndex,未来会考虑 DeltaIndex 落盘。
———————————————————————————————

参与评论有奖:

话题讨论:TiDB 源码解读系列回归~,你还想听听哪些源码话题?

互动积分评论区参与上述话题讨论,即可获得 100 积分,100 经验值

3赞

多谢,收藏一下

2赞

已收藏,感谢分享~

1赞