TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
复杂业务查询对于传统的关系型数据库来说是一种考验,而通过 TiKV 行存与 TiFlash 的列存结合使用就能很好地应对。本文根据 TUG 用户边城元元在 TiDB 社区技术交流石家庄站的分享整理,详细介绍了?TiKV & TiFlash 加速复杂业务查询的原理及实践方案。
背景
传统的关系型数据库无法通过加索引来优化加速查询,业务无法正常开展; 列存数据库需要把筛选相关数据放到列数据库,并且需要做好数据实时同步; 无法从数据库层面做好数据的读取,往往需要从列数据库读取数据后再到关系数据库进行数据合并后输出,性能不容乐观。
TiKV 行存与 TiFlash 列存混合使用

混用原理
TiDB 的行列混合并不是传统设计上的行存列存二选一,而是 TiDB 可以在同一张表同时拥有行存和列存,且两者永远保持数据强一致(而非最终一致)。 多表查询分别使用不同的引擎 TiKV 或 TiFlash。 TiFlash 支持 MPP 模式的查询执行,即在计算中引入跨节点的数据交换(data shuffle 过程)。
混用优化
| 优化 | 说明 |
| # 查询时变量设置 set session tidb_allow_mpp=1; set session tidb_mem_quota_query=10<<30; set session tidb_distsql_scan_concurrency=80; |
|
| # tiflash.toml server_configs: ? tiflash: ? ??profiles.defult.max_memort_usage:10000000000000 | # TiFlash 单次查询内存使用限制 tiup cluster edit-config <clustername> tiup cluster reload <clustername> -R tiflash |
| TiKV 与 TiFlash 部署 |
|
标签系统高级筛选

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.cat1?IN?(?516,?710,?230,3301?)?
??AND?n.ORG_ID?IN?(?'133','8716',?'7162')?ORDER?BY?n.cust_id?ASC??LIMIT?100?
?)?a
?LEFT?JOIN?m_cust_main?b?ON?a.cust_id?=?b.cust_id
?LEFT?JOIN?m_cust_org?c?ON?a.cust_id?=?c.cust_id
?LEFT?JOIN?m_cust_data?d?ON?a.cust_id?=?d.cust_id?;
?
Read From TiKV & TiFlash
?
?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(tiflash[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.cat1?IN?(?516,?710,?230,3301?)?
??AND?n.ORG_ID?IN?(?'133','8716',?'7162')?ORDER?BY?n.cust_id?ASC??LIMIT?100?
?)?a
?LEFT?JOIN?m_cust_main?b?ON?a.cust_id?=?b.cust_id
?LEFT?JOIN?m_cust_org?c?ON?a.cust_id?=?c.cust_id
?LEFT?JOIN?m_cust_data?d?ON?a.cust_id?=?d.cust_id?
TiFlash & MPP
set?@@session.tidb_allow_mpp=1;
set?@@session.tidb_enforce_mpp=1;
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(tiflash[m],tiflash[n])?*/
??m.cust_id?
?FROM
??m_cust_label?m
??RIGHT?JOIN?m_cust_org?n?ON?m.CUST_ID?=?n.CUST_ID?
?WHERE
??m.cat1?IN?(?516,?710,?230,3301?)?
??AND?n.ORG_ID?IN?(?'133','8716',?'7162')?ORDER?BY?n.cust_id?ASC??LIMIT?100?
?)?a
?LEFT?JOIN?m_cust_main?b?ON?a.cust_id?=?b.cust_id
?LEFT?JOIN?m_cust_org?c?ON?a.cust_id?=?c.cust_id
?LEFT?JOIN?m_cust_data?d?ON?a.cust_id?=?d.cust_id?
SPM 固定执行计划
CREATE?GLOBAL|SESSION??BINDING?for?<BindableStmt?>?USING?<BindableStmt2>
SHOW?GLOBAL|SESSION?BINDINGS?;?--?查看绑定计划explain?format?=?'verbose'?<BindableStmt2>;
show?warnings;?--?通过执行?show?warnings?了解该?SQL?语句使用了哪一条?binding

标签下价值机构排名
根据选中的属性(多值)

执行计划



总结
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 从五年规划看“中国之治” 7904122
- 2 “最快女护士”被医院警告处分 7808067
- 3 广东汕头火灾事故遇难人数升至12人 7714437
- 4 长征系列火箭一日三发 7617989
- 5 日本地震是中国制造?日本政府辟谣 7522162
- 6 小米将承担门店调整损失约2726万元 7425416
- 7 售价约20元 水银温度计平替长这样 7328803
- 8 2026年总台春晚主题、主标识发布 7236471
- 9 71岁成龙回应“龙叔老了” 7135934
- 10 冷空气南下 这些地方流感风险上升 7046277







PingCAP
