当前位置: 首页 > news >正文

【赵渝强老师】TiDB的列存引擎:TiFlash

1

TiDB的TiFlash提供列式存储,且拥有借助ClickHouse高效实现的协处理器层。除此以外,它与TiKV非常类似,依赖同样的Multi-Raft体系,以Region为单位进行数据复制和分散。TiFlash以低消耗不阻塞TiKV写入的方式,实时复制TiKV集群中的数据,并同时提供与TiKV一样的一致性读取,且可以保证读取到最新的数据。TiFlash中的Region副本与TiKV中完全对应,且会跟随TiKV中的Leader副本同时进行分裂与合并。下图为TiDB HTAP形态架构,其中包含TiFlash节点。

2

TiFlash主要包含两个组件,一个是列式存储引擎组件,另一个是处理Multi-Raft协议通信相关工作的TiFlashproxy组件。TiFlash可以兼容TiDB与TiSpark,用户可以选择使用不同的计算引擎。

提示:TiFlash暂时无法直接接受数据写入,任何数据必须先写入TiKV再同步到TiFlash。

image.png
点击这里查看视频讲解:【赵渝强老师】TiDB的列存引擎:TiFlash

TiFlash部署完成后并不会自动从TiKV中同步数据,而需要手动指定需要同步的表。可以使用TiDB或者TiSpark读取TiFlash,其中:TiDB适合用于中等规模的OLAP计算,而TiSpark适合大规模的OLAP计算。用户可以根据使用的场景和使用习惯自行选择。

执行下面的语句创建一个TiDB数据库集群,该集群中将包含:一个TiDB节点、一个PD节点、两个TiKV节点和两个TiFlash节点。

# tiup playground v8.5.1 \--db 1 --pd 1 --kv 2 \--tiflash 2 --without-monitor

TiFlash接入TiKV集群后,默认不会开始同步数据。可通过MySQL客户端向TiDB发送DDL命令来为特定的表建立TiFlash副本,DDL语句格式如下:

ALTER TABLE <table_name> SET TIFLASH REPLICA <count>;
# 其中:count表示TiFlash中的副本数,0表示删除TiFlash中的所有副本数。

下面是具体的操作步骤:

(1)为员工表emp建立2个TiFlash副本。

tidb> alter table emp set tiflash replica 2;

(2)查看员工表emp的同步进度。

tidb> select * from information_schema.tiflash_replica where table_schema = 'scott' and table_name = 'emp' \G;# 输出的信息如下:
*************************** 1. row ***************************TABLE_SCHEMA: scottTABLE_NAME: empTABLE_ID: 114REPLICA_COUNT: 2
LOCATION_LABELS: AVAILABLE: 0PROGRESS: 0.5
1 row in set (0.005 sec)

(3)再次查看员工表emp的同步进度。

tidb> select * from information_schema.tiflash_replica where table_schema = 'scott' and table_name = 'emp' \G;# 输出的信息如下:
*************************** 1. row ***************************TABLE_SCHEMA: scottTABLE_NAME: empTABLE_ID: 114REPLICA_COUNT: 2
LOCATION_LABELS: AVAILABLE: 1PROGRESS: 1
1 row in set (0.004 sec)# 其中:
# AVAILABLE字段:表示该表的TiFlash副本是否可用。1代表可用,0代表不可用。副本状态为可用之后就不再改变,如果通过DDL命令修改副本数则会重新计算同步进度。
# PROGRESS字段:代表同步进度,在0.0~1.0之间,1代表至少1个副本已经完成同步。

(4)删除员工表emp的所有TiFlash副本。

tidb> alter table emp set tiflash replica 0;

(5)为scott数据库构建TiFlash副本。

tidb> alter database scott set tiflash replica 2;

(6)查看scott数据库的同步进度。

tidb> select * from information_schema.tiflash_replica where table_schema = 'scott' \G;# 输出的信息如下:
*************************** 1. row ***************************TABLE_SCHEMA: scottTABLE_NAME: empTABLE_ID: 114REPLICA_COUNT: 2
LOCATION_LABELS: AVAILABLE: 0PROGRESS: 0.5
*************************** 2. row ***************************TABLE_SCHEMA: scottTABLE_NAME: deptTABLE_ID: 112REPLICA_COUNT: 2
LOCATION_LABELS: AVAILABLE: 0PROGRESS: 0.5
2 rows in set (0.006 sec)

(7)再次查看scott数据库的同步进度。

tidb> select * from information_schema.tiflash_replica where table_schema = 'scott' \G;# 输出的信息如下:
*************************** 1. row ***************************TABLE_SCHEMA: scottTABLE_NAME: empTABLE_ID: 114REPLICA_COUNT: 2
LOCATION_LABELS: AVAILABLE: 1PROGRESS: 1
*************************** 2. row ***************************TABLE_SCHEMA: scottTABLE_NAME: deptTABLE_ID: 112REPLICA_COUNT: 2
LOCATION_LABELS: AVAILABLE: 1PROGRESS: 1
2 rows in set (0.006 sec)

(8)基于员工表emp创建一张新表,并查看新表的列存同步进度。

tidb> create table newemp like emp;
tidb> select * from information_schema.tiflash_replica where table_schema = 'scott' and table_name = 'newemp' \G;# 输出的信息如下:
*************************** 1. row ***************************TABLE_SCHEMA: scottTABLE_NAME: newempTABLE_ID: 126REPLICA_COUNT: 2
LOCATION_LABELS: AVAILABLE: 1PROGRESS: 1
1 row in set (0.008 sec)# 提示:基于一张已存在TiFlash副本的表创建的新表也将自动拥有TIFlash副本。

在了解到了TiFlash的基本操作后,下面讨论一下TiFlash的核心特性。

  • 异步复制

TiFlash中的副本以特殊角色(Raft Learner)进行异步的数据复制。这表示当TiFlash节点宕机或者网络高延迟等状况发生时,TiKV的业务仍然能确保正常进行。这套复制机制也继承了TiKV体系的自动负载均衡和高可用:并不用依赖附加的复制管道,而是直接以多对多方式接收TiKV的数据传输;且只要TiKV中数据不丢失,就可以随时恢复TiFlash的副本。

  • 一致性

TiFlash提供与TiKV一样的快照隔离支持,且保证读取数据最新。这个一致性是通过对数据进行复制进度校验做到的。每次收到读取请求,TiFlash中的Region副本会向Leader副本发起进度校对,只有当进度确保至少所包含读取请求时间戳所覆盖的数据一致后才响应读取。

  • 智能选择

TiDB可以自动选择使用TiFlash列存或者TiKV行存,甚至在同一查询内混合使用提供最佳查询速度。这个选择机制与TiDB选取不同索引提供查询类似:根据统计信息判断读取代价并作出合理选择。

  • 计算加速

TiFlash对TiDB的计算加速分为两部分:列存本身的读取效率提升以及为TiDB分担计算。TiDB会将可以由存储层分担的计算下推。能否下推取决于TiFlash是否可以支持相关下推。

http://www.jsqmd.com/news/98352/

相关文章:

  • 2025 年 12 月 EL检测仪权威推荐榜:光伏组件隐裂精准诊断,高效运维必备神器深度解析 - 品牌企业推荐师(官方)
  • 从 C 链表到 Android Looper:MessageQueue 的底层原理一条线讲透
  • PapersGPT for Zotero 终极安装指南:5步快速配置AI文献助手
  • 直播 / 录屏推流工具首选!OBS Studio v32.0.2 中文绿色版:修复崩溃 bug,免费无广告还便携
  • vlan间通信之vlanif虚接口、vlan聚合 - 教程
  • 2025年加工中心正规供应商推荐,卧式加工中心与制造商全解析 - myqiye
  • 新手快速上手动漫生成模型Counterfeit-V2.5
  • 2025抖音代运营公司TOP5权威推荐:抖音代运营套餐哪家便 - 工业品牌热点
  • 2025年设计行业聚焦:十大中国风全案公司谁主沉浮,设计4A公司推荐技术引领与行业解决方案解析 - 品牌推荐师
  • 查看Gmail 的注册地区
  • 2025年亚崴龙门靠谱生产商五大榜单,工业制造伙伴精选指南 - mypinpai
  • 快速上手Umo Editor:零配置的Vue3文档编辑器解决方案
  • 2025年上海A-Level实力培训学校推荐:看哪家口碑好? - 工业推荐榜
  • Apache Weex性能优化实战:从渲染瓶颈到极致体验的突破之路
  • 2025年靠谱的切削液集中供液/集中供液厂家推荐及选择参考 - 品牌宣传支持者
  • DeepSeek-V2.5:强大多用途语言模型详解
  • 2025年知名的单组分聚脲最新TOP品牌厂家排行 - 品牌宣传支持者
  • 2025年热门的柱塞式液压油缸/摆动式液压油缸高评价厂家推荐榜 - 品牌宣传支持者
  • 边缘AI混合模型LFM2-350M:轻量化部署的技术突破
  • 2025年抗静电型半透明HDPE再生颗粒生产厂家权威推荐榜单:半透明抗菌型HDPE再生颗粒 ‌/环钢度高聚乙烯半透明HDPE再生料‌/低挥发物半透明HDPE再生颗粒源头厂家精选 - 品牌推荐官
  • Ivy框架:打破AI开发壁垒的统一解决方案
  • “权力“和“权利“联系和区别?
  • MSBuild BuildCheck框架:构建时代码质量检查的完整指南
  • MCPServerStdio环境变量传递困境:从原理到实战的深度解决方案
  • 2025年比较好的PVC卡发卡机厂家选购指南与推荐 - 品牌宣传支持者
  • 【Rust日报】Rust 1.92.0 正式发布
  • 免费商用字体资源库:设计师必备的字体宝典
  • 2025年知名的EG屹晶微ACDC电源管理芯片/EG屹晶微PFC/LLC控制器芯片实力厂家TOP推荐榜 - 品牌宣传支持者
  • 2025 上考教育深度解析:公考培训靠谱吗?押题准度如何? - 品牌推荐排行榜
  • 8 个毕业答辩PPT工具,研究生AI降重推荐