TiFlash:TiDB的列式存储引擎,开启HTAP新时代
项目介绍
TiFlash 是 TiDB 和 TiDB Cloud 的列式存储组件,主要在 TiDB 的混合事务/分析处理(HTAP)架构中扮演分析处理(AP)的角色。TiFlash 通过 Raft 日志实时同步来自 TiKV 的数据更新,延迟仅为亚秒级。其读取操作在事务一致性方面保证与快照隔离级别一致,并利用大规模并行处理(MPP)计算架构加速分析工作负载。
项目技术分析
TiFlash 基于 ClickHouse 构建,继承了 ClickHouse 的高性能列式存储和并行处理能力。TiFlash 通过 Raft 协议实现与 TiKV 的数据同步,确保数据的一致性和实时性。其 MPP 架构能够充分利用多核处理器的并行计算能力,大幅提升查询性能。
项目及技术应用场景
TiFlash 适用于需要实时分析和高并发查询的场景,如金融风控、实时报表、物联网数据分析等。通过 TiFlash,用户可以在同一个数据库系统中同时处理事务和分析查询,无需数据复制或复杂的 ETL 过程,大大简化了数据处理流程。
项目特点
- 实时数据同步:通过 Raft 协议实现与 TiKV 的实时数据同步,确保数据的一致性和实时性。
- 列式存储:采用列式存储格式,适合大规模数据的分析查询,显著提升查询性能。
- MPP 架构:利用大规模并行处理架构,充分发挥多核处理器的并行计算能力,加速分析查询。
- 事务一致性:读取操作保证与快照隔离级别一致,确保数据的一致性和可靠性。
- 易于集成:作为 TiDB 的组件,TiFlash 可以无缝集成到现有的 TiDB 生态系统中,无需额外配置。
快速开始
使用 TiDB Cloud 快速体验
通过 TiDB Cloud 免费试用 快速探索 TiFlash 的功能。详细指南请参考 TiDB Cloud 快速开始指南。
使用 TiDB 快速开始
参考 HTAP 快速开始指南 和 使用 TiFlash 进行快速部署和使用。
构建 TiFlash
TiFlash 支持在以下硬件架构和操作系统上构建:
- 硬件架构:x86-64 / amd64、aarch64
- 操作系统:Linux、MacOS
1. 准备依赖
构建 TiFlash 需要以下软件包:
- CMake 3.23.0+
- Clang 17.0.0+(Linux)或 AppleClang 14.0.0+(MacOS)
- Rust
- Python 3.0+
- Ninja-Build 或 GNU Make
- Ccache(可选,但强烈推荐以减少重建时间)
详细步骤请参考 构建指南。
2. 检出源代码
git clone https://github.com/pingcap/tiflash.git --recursive -j 20
cd tiflash
3. 构建
cmake --workflow --preset dev
更多构建选项和详细步骤请参考 构建指南。
运行单元测试
在调试模式下,单元测试默认启用。构建并运行单元测试的步骤如下:
cmake --workflow --preset unit-tests-all
cd cmake-build-debug
./dbms/gtests_dbms
./libs/libdaemon/src/tests/gtests_libdaemon
./libs/libcommon/src/tests/gtests_libcommon
更多使用方法请参考 ./dbms/gtests_dbms --help。
运行 Sanitizer 测试
TiFlash 支持使用线程 sanitizer 和地址 sanitizer 进行测试。详细步骤请参考 Sanitizer 测试指南。
通过 TiFlash,您可以在 TiDB 生态系统中轻松实现实时分析和高并发查询,无需复杂的配置和数据复制过程。立即开始您的 HTAP 之旅,体验 TiFlash 带来的高效和便捷!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



