TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践

本文介绍了如何利用TiDB的TiKV行存与TiFlash列存混合使用来优化复杂业务查询,包括它们的混用原理、优化方案以及实际性能提升案例。通过设置查询执行策略和启用MPP模式,可以显著提高查询速度,解决传统数据库在筛选、多表联合查询等场景的性能问题。

复杂业务查询对于传统的关系型数据库来说是一种考验,而通过 TiKV 行存与 TiFlash 的列存结合使用就能很好地应对。本文根据 TUG 用户边城元元在 TiDB 社区技术交流石家庄站的分享整理,详细介绍了 TiKV & TiFlash 加速复杂业务查询的原理及实践方案。

背景

在互联网公司或传统公司的 CRM 系统中,最常用的功能之一客户的筛选。通过不同的角度、维度、标签的组合来框选客户,以便后续的业务操作。

这无疑是对传统关系型数据库,或者关系数据库加列存数据库的架构是一种考验,主要有下面几个痛点:

  • 传统的关系型数据库无法通过加索引来优化加速查询,业务无法正常开展;

  • 列存数据库需要把筛选相关数据放到列数据库,并且需要做好数据实时同步;

  • 无法从数据库层面做好数据的读取,往往需要从列数据库读取数据后再到关系数据库进行数据合并后输出,性能不容乐观。

TiDB 数据库的 TiKV 和 TiFlash 的组合理论上解决了上面的几个痛点。

TiKV 行存 与 TiFlash 列存混合使用

TiDB 中 query 执行的示意图,可以看到在 TiDB 中一个 query 的执行会被分成两部分,一部分在 TiDB 执行,一部分下推给存储层( TiFlash/TiKV )执行。

image.png

混用原理

  • TiDB 的行列混合并不是传统设计上的行存列存二选一,而是 TiDB 可以在同一张表同时拥有行存和列存,且两者永远保持数据强一致(而非最终一致)。

  • 多表查询分别使用不同的引擎 TiKV 或 TiFlash。

  • TiFlash 支持 MPP 模式的查询执行,即在计算中引入跨节点的数据交换(data shuffle 过程)。

混用优化

image.png

标签系统高级筛选

通过标签(从宽表里不确定字段)和窄表特定字段组合查询客户并分页

image.png

Read from TiKV

SELECT 
/*+ READ_FROM_STORAGE(tikv[b], tikv[c],tikv[d]) */
	a.*,
	b.CUST_NAME,b.CERT_TYPE,b.CERT_NUM,b.CUST_TYPE,b.SEX,b.AGE,b.BIRTH_DT,
	c.ORG_ID,c.ORG_NAME,
	d.ASSET,d.ASSET_MON_AVG 
FROM
	(
	SELECT /*+ READ_FROM_STORAGE(tikv[m],tikv[n]) */
		m.cust_id 
	FROM
		m_cust_label m
		RIGHT JOIN m_cust_org n ON m.CUST_ID = n.CUST_ID 
	WHERE
		m
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值