【活动视频回放】:TiFlash 存储引擎的设计思路_哔哩哔哩_bilibili
【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 经验值