DH3G游戏资讯网

TiDB 5.2 发版 ——“交易 + 分析”双引擎提速,挑战极限业务场景

发表于:2024-04-26 作者:创始人
编辑最后更新 2024年04月26日,作为数字化新时代的企业级数据库,TiDB基于海量数据规模的在线事务处理和实时分析能力在全球金融、互联网、物流、零售、在线游戏等各个行业得到充分验证,并广受好评。今年4月,TiDB发布针对企业级的里程碑

作为数字化新时代的企业级数据库,TiDB基于海量数据规模的在线事务处理和实时分析能力在全球金融、互联网、物流、零售、在线游戏等各个行业得到充分验证,并广受好评。今年4月,TiDB发布针对企业级的里程碑5.0版本,并在6月份发布了5.1版本,目前已经应用在数十家大型企业的生产环境。

TiDB 5.2聚焦于用户真实场景,挑战更为严苛的超大规模OLTP和实时数据分析的性能极限,进一步拓展了"交易+分析"双引擎数据处理能力的边界。测试结果表明,无论是高负载大集群场景还是高吞吐写入的并发实时分析场景,TiDB 5.2均表现出了更优异的稳定性、更出色的实时性、更佳的易用性,可以更轻松地加速企业实现数字化转型和数据价值变现。

TiDB 5.2功能亮点和用户价值

近年来,为满足不同场景的业务需求,企业内部往往存在不同的数据存储方案,造成在线和离线业务数据分离,全量数据实时查询和分析成为难题。

在这种情况下,企业可以将数据实时汇聚到可无限水平扩展并兼容MySQL的TiDB,由TiDB直接对接数据应用端。数据汇聚到TiDB后,无论是处理面向C端或B端客户的OLTP请求(例如,电商平台的C端和B端请求分别来自买家和卖家,物流平台的C端和B端请求分别来自寄件人和快递员),还是处理企业后台实时数据服务(例如,Real-time BI、风控、Ad-Hoc查询),TiDB都可以提供一站式的数据解决方案,帮助企业打通数据孤岛,既能保证高负载下大集群的查询稳定性和实时性,又能保证高吞吐写入下的并发实时查询和分析的性能与稳定性,并降低企业运维成本.

TiDB 5.2针对多源实时数据汇聚四大典型场景中的主要挑战和特点做了大量优化,为不同场景量身打造更好用、更省心的数据库。

在面向C端用户的高并发、高频查询场景中,全面提升高负载下大集群的稳定性

提升大表在高负载写入时在线建索引的速度,优化大流量写入时的内存使用,提升高读写负载压力下大集群的稳定性。

实现Leader自动转移,降低单节点性能抖动对整个集群的影响。

升级热点调度策略,有效打散小表热点,并且提供列存引擎TiFlash的热点调度能力,实现集群资源的充分利用。

在200K QPS压力负载下,DM(TiDB Data Migration)仍可以保证99%时间的数据同步延迟在1s以内,提高汇聚库的数据更新实时性。

在面向B端客户中等并发的实时综合查询场景中,使优化器执行计划更智能

当数据不断更新时,针对统计信息过期或缺失的情况,提升优化器选中正确索引的概率;提升估算模块的准确度,减少人工绑定索引。

当使用SPM(SQL Plan Management,执行计划管理)功能自动或人工绑定索引时,用户可以更容易地使用、诊断、调试SPM功能。

在实时BI场景中,让企业轻松应对复杂实时BI查询,让业务决策更实时

实现更多的算子下推,更充分地利用MPP引擎的能力,降低查询的响应时间。

在高吞吐写入的同时提供并发实时分析的场景中,提升并发实时分析性能和稳定性,助力企业从容应对双十一

平稳支持超平时200%~300%的峰值写入流量,提供更强大的数据写入支持。

消除了在特殊条件下内部线程互相等待死锁的状况,带来更智能的MPP执行引擎,提高分析处理能力。

提升并发能力,可支持30量级的并发查询(全表扫描型)稳定执行。

提升高负载下大集群的稳定性,挑战极限业务场景

面向C端用户的高并发、高频查询以点查为主,也有部分基于索引的小范围查询,需要底层数据库具有非常好的弹性扩展能力、极低的查询延迟、极高的业务查询的稳定性。例如,在交易所的账户和订单等核心场景,业务对延迟极为敏感(订单写入需要控制在1ms以内),同时需要提供对客户端的高并发历史订单查询,在高峰期可能会对主流程造成影响。在此场景下,可以采取主从架构,突破MySQL单机瓶颈限制,通过数据迁移工具DM将前端多个MySQL分片的数据实时汇聚到一个TiDB集群,由TiDB承载核心链路上的高频查询,避免高峰期对前端订单写入造成压力,从而影响交易业务。

针对这些高负载低延迟的场景,TiDB 5.2进一步提升了大规模OLTP性能和稳定性,为用户带来更流畅的业务体验:

提升高读写负载压力下大集群的稳定性

提升大表在线建索引的速度:在DDL过程中合理均衡热点Region的range。

实现Leader自动转移:当某个存储节点变慢时,将Raft协议中的leader角色自动转移到正常的存储节点上以承载业务流量,保证单节点出现性能抖动时集群整体吞吐能力不受影响。

优化TiKV的内存使用:严格限制Raft Log的cache以及Raft消息的内存占用,解决了在大流量写入情况下TiKV潜在的OOM问题。

热点调度引入QPS参考维度,实现集群资源的充分利用

支持按维度调整热点均衡优先级,提高了对热点场景的处理能力,确保在节点数较多的集群中均衡CPU的使用率,避免出现单点瓶颈。在热点小表客户仿真场景中,CPU资源的均衡度大幅提升,QPS提升了近一倍。另外也支持对OLAP引擎TiFlash的热点调度能力,解决了HTAP场景的热点调度问题。

提升高负载下DM数据同步的性能和稳定性,提高汇聚库的数据更新实时性

减少DM资源消耗:DM 2.0.6以前版本对CPU资源消费较多。单DM节点的复制流量1k ~ 3k QPS下,消耗35%~50%的CPU资源。为了减少资源的消耗,v2.0.6版本对多个逻辑点进行了优化,包括relay log读写、数据转码优化等。测试结果表明,DM v2.0.6最多可减少50%的CPU使用量。

大流量低延迟实时复制:使用DM同步MySQL Shard上的高负载(聚合后200K QPS)业务写入数据到TiDB,DM可以保持99%时间内1s实时数据同步延迟。

优化器执行计划更智能,助力电商平台大促卖家订单处理

面向B端客户中等并发的综合查询通常基于索引查找小范围的数据,查询语句多样化,表关联可能会比较多,会遇到聚合、子查询、Top N排序以及翻页Limit。大小商户的数据量差异可能会非常大,通常有数据倾斜。电商平台通常采用读写分离的数据库架构,借助TiDB数据迁移工具DM将上游分库分表的订单实时汇聚到一个TiDB集群,提供实时的数据存取和查询服务。在电商大促销期间,面对比平时高几倍甚至几十倍的查询流量,如何在平台数据不断更新的情况下提高查询性能是对数据库的一大挑战。

TiDB 5.2版本提供了一个更智能的查询优化器,使数据库能高效选中包含正确索引的最优的执行计划,更快速稳定地给出查询结果,为企业带来更实时的数据查询体验:

当优化器生成执行计划所需的统计信息过期或缺失时,TiDB优化器会先使用启发式规则的方法来对索引进行裁剪和优化,提升选中正确索引的概率。

对优化器的估算模块进行了优化,使更多的查询可由优化器来自动选择正确索引计划,减少人工绑定索引。

当使用SPM(SQL Plan Management,执行计划管理)功能自动或人工绑定索引时,用户可以更容易地使用、诊断、调试SPM功能:

绑定的查询语句会按照绑定时间戳排序显示,不再是无序显示的结果,方便定位绑定的语句。

支持通过`EXPLAIN`语句执行的附加信息获知该SQL语句是否使用了绑定。

支持通过设置黑名单定义自动捕获绑定的语句,为用户带来更大的使用灵活性。

轻松应对复杂实时BI查询,让业务决策更实时

实时BI提供商业智能系统中的数据实时动态刷新,具有数据量大、查询复杂、高并发性等特点,同时对查询的实时性有较高要求。例如,在金融领域,大量的交易数据需要给业务或风控部门提供自助分析,帮助用户及时调整金融方案。这些数据同时包含历史数据和实时数据,动辄几千万行,较为复杂的查询则会关联多个这样的数据表,且包含复杂度量(例如精确去重)的计算。

TiDB的HTAP功能是这类需求的理想解决方案,一方面TiDB提供了高速的数据写入能力,实时数据可以高并发地写入至TiKV中,并利用Raft协议快速准确地将数据同步至TiFlash的列存中,实现了数据的实时性;另一方面,TiFlash支持MPP模式的查询执行,最大限度地利用了计算资源,实现了数据查询的实时性。TiFlash支持的函数或算子越多,TiDB可以下推至TiFlash节点进行计算的SQL语句就越多,查询性能就越高。值得注意的是,只要某条SQL语句中存在一个尚不支持下推到TiFlash的算子或函数,该SQL语句的整个执行计划都无法下推至TiFlash节点,从而无法享受查询性能的提升。因此,多支持一个函数或算子就意味着某些特定查询数量级的性能飞跃。

为了给复杂BI场景带来更高的实时性,TiDB 5.2新增了几十个下推函数和算子(如MOD, LENGTH, LOG, ROUND, DATE, INET_ATON等,详情请查看TiDB 5.2 TiFlash新增下推支持),进一步完善了TiFlash的SQL语法支持。实际测试发现,TiFlash在新支持某个函数后:

单并发场景下,简单查询的查询延迟由数十秒降低至不到一秒,复杂查询则是由数分钟降低至一秒左右。

数十并发场景下,简单查询依然可以以不到一秒的延迟响应查询,复杂查询则是从查询超时降低至10秒左右。

我们计划在未来一年内持续支持剩余常用的MySQL函数和算子,持续提升BI实时分析的查询响应时间。

提升高吞吐写入下的并发实时分析性能和稳定性,助力物流平台备战双十一

随着互联网时代的到来,提供海量数据实时分析服务的场景日益增多。以国内某头部物流公司的双十一场景为例,该公司一个基于宽表的典型BI查询应用,数据总量达百亿级别、日均更新达过亿级别、BI实效性控制在分钟级、且有较高并发要求。TiDB通过无限水平扩展的存储和实时HTAP的特性,较好地满足了该公司的需求。但随着双十一数据更新和分析任务的同时激增,业务对TiFlash的稳定性提出了更高的要求:如何避免节点磁盘内存使用不均衡引发内存OOM、如何缓解IO等系统资源压力、如何解决在大流量数据写入时产生的热点问题。

为了更好地满足前端海量数据写入+后端实时报表的需求,TiDB 5.2提供以下功能助力企业更轻松地应对大数据量与高并发带来的压力。

更强大的数据写入支持:同规模的集群可以平稳承受200%~300%于以往的峰值写入流量,实现"写平衡",各节点磁盘空间差异在10%以内。

更健壮的MPP执行引擎:消除了在特殊条件下内部线程互相等待死锁的状况,进一步改善在高负载情况下查询出错或超时取消的问题。

更高的并发支持:在20~30并发量级的全表扫描查询,业务查询不出现内存OOM。在更高的写入流量和并发查询下,出现OOM现象可减少90%以上。

更简单的运维:即使偶发集群不稳定状态(例如节点重启),系统可以自动恢复,或在人工干预下很快恢复。在扩缩容集群时,对客户端的查询响应不会停止,极大地降低了维护TiFlash集群时对业务的影响。

结语

TiDB针对极限OLTP和OLAP场景的产品能力打造和持续优化提升,具有非常大的挑战。5.2版本只是一个开端,我们将在后面1~2个版本按照用户反馈持续优化、快速迭代,把复杂交给TiDB,把简单留给用户,打造更加适合用户场景的数据库。

TiDB自5.1版本开始采用火车发版模型,加速场景和功能的升级迭代,感谢TiDB社区每一位开发者的贡献,特别感谢知乎、理想汽车、小米等公司为5.2版本的产品改进提供的宝贵建议。相信在大家的共同努力和开放透明的协作下,TiDB会越来越好,为用户创造更多价值,助力用户更好地拥抱数字化时代。

查看TiDB 5.2 Release Notes,立即下载试用,开启TiDB 5.2之旅。

2022-05-06 12:14:58
0