Redian新闻
>
魔鬼都在细节里,揭秘腾讯云数据库TDSQL刷新TPC-C世界记录!

魔鬼都在细节里,揭秘腾讯云数据库TDSQL刷新TPC-C世界记录!

科技

本文首发微信公众号:飞总聊IT


2023年3月30日,根据TPC(Transaction Processing Performance Council)官网披露,腾讯云数据库TDSQL打榜TPC-C,刷新了世界纪。这次性能的世界纪是8.14亿tmpC(每分钟事务处理数)。



和性能的世界记录比起来,新的打榜测试,也提供了非常低廉的性价比,达到了1.27人民币/tmpC。是同类产品价格的三分之一。


此次打榜参加的产品是腾讯云数据库TDSQL。这个团队很低调。说起来也很巧,飞总第一次知道腾讯云TDSQL的时候,是2018年在巴西里约热内卢开VLDB的时候,遇到了同事来开会的TDSQL团队。飞总也算是对业界比较了解的人,但是之前却对腾讯的数据库团队一无所知,可见这个团队有多低调了。


经过和团队的接触聊天,我才对TDSQL有了一些了解。这个产品是腾讯自己研发的分布式数据库。腾讯研发这个数据库的时间已经差不多有20年了,从一开始的Q币支付,到财付通,微信支付等等都可以看到这款产品的身影。


后来TDSQL也用在了微众银行,作为第一个在银行核心业务系统上使用国产数据库的例子。TDSQL在上线微众银行以后还上线了平安银行等一系列的企业。


这是一款具备金融级一致性,高可用,分布式等特征的分布式数据库,不仅仅支撑了腾讯内部的业务,在很多大银行的核心业务上都有应用。所以,对产品的质量和可靠性,我是没什么疑问的。


但是这个打榜成绩,还是吓到了我。我们简单聊聊TPC这个机构和TPC-C这个基准程序吧。


TPC,中文名叫事务处理性能委员会,是由数十家会员公司创立的非盈利组织。它最著名的是TPC系列的测试基准程序,其中TPC-C是在线事务处理OLTP的基准程序。

TPC-C测试,在数据库行业内非常的有名,打榜类似攀登珠穆朗玛峰,如果对自己的产品没有信心的话,是不敢随便去打榜的。那些全球知名的数据库,比如IBM的DB2,Oracle等,都去打过榜。相对比来说,国产数据库去打榜的就屈指可数了。


简单来说,TPC-C测试逻辑是模拟一个批发商的货物管理系统。批发公司有N个仓库给10个地区供货,每个地区为3000名客户服务。中间还会存在仓库和仓库之间调货的情况。


在这个场景下,TPC-C测试包含5种不同的事务,每种事务有规定的上限或者下限比例。TPC-C测试结果用tmpC表示,也就是订单创建事务每分钟执行的数量。


测试模拟的场景并不是太复杂。难点在于这个测试模拟了一个极值场景。所以TPC-C打榜才像攀登珠穆朗玛峰,每次测试都是对产品严苛的考验。


整个测试有4部分,全长大约30多个小时,有难有易。最难的包括两个部分。


第一个是8小时满压力测试。该测试要求系统平稳满压力运行8小时,中间不得有任何人工干预,性能每秒抖动不可以超过2%。


另外一个测试是故障容灾测试。该测试要求,在满压力运行的时候,人为模拟各种硬件故障。测试要求数据不丢失,并能很快恢复到峰值。


TPC-C的测试是一个严格的审计的测试。在全球仅有的几个审计员和腾讯云数据库团队之间的来来往往,有非常严格的程序。整个过程对团队来说有很大的挑战。


审计要求有很多,简单来说,包含事务的处理符合ACID,被测数据库的性能要和数据量成正比,被测数据库能够平稳地长期运行,被测数据库的写事务结果必须在规定时间内写入磁盘。


TPC-C测试投入的成本也很高,这次腾讯云数据库TDSQL就搭建了1650台机器的一个大分布式集群。这个集群运行一个月的成本就需要以千万计价为单位的成本考虑。这还不算人工成本和打榜本身要付出的费用。


总之,这个测试参与起来不容易。能够参与进来并且拿下世界纪录,更是不容易。


就我自己阅读整个报告来看,腾讯云数据库TDSQL这次的测试有很多亮点。


首先,这次获得了8.14亿tmpC的新世界纪录,用了1650台机器。按照说法大概15%的事务是分布式的。所以简单看一下就可以知道,这个分布式集群里面的单机性能相当的不错。


当然,具体多不错,我没有仔细去算过。不过这不重要,重要的是,显然这是一个单节点性能被充分优化的系统。这说明了这个产品的基础打得很牢固。在我眼里,这就是一个亮点。


其次,1650台机器的分布式大集群,在容灾测试中,经历了各种故障切换,对整个系统几乎没什么影响,这也是非常令人叹为观止的。


做过大规模分布式集群的都知道,这种分布式集群的硬件条件和集中式大型机的数据库产品不一样,硬件非常的不可靠。在不可靠的硬件下做到容灾很好,说明无论是系统的冗余,还是系统在发生灾变的时候的切换,都非常的扎实。


对分布式系统来说,如果这方面做得不好,银行的核心系统,是不敢用这样的分布式系统去取代传统的大型机集中式系统的。


最后,也是我本人觉得最重要的,最让我佩服的是,整个8小时持续打满压测的过程中,整个系统的波动率只有0.2%,而TPC-C的要求2%的波动率。


可能很多人不太理解0.2%和2%之间到底有什么样的差别,下面这张图,应该能给大家一点直观的感觉。


大家可以直观感受一下,毛刺感,锯齿感和一条平直的直线之间的差异。


这条直线意味着什么呢?飞总觉得,这意味着这个系统被优化到极致了,各方面都很稳定可控了。


比如说,这个系统的内存管理,肯定已经完全由应用程序自己来管理,绝不可能再仰赖操作系统了。


又比如说,对于系统内部的处理事务的时候对数据或者元数据需要加的锁,开发人员肯定也做了大量的lock-free的实现,即使无法避免用lock-free的实现方式,也一定尽量用轻量级的锁了。


我只是举了两个例子,其实还有很多,比如说对于主从数据之间的复制,又比如说,对网络的优化,显然,这些都需要做得非常的细致可靠敏捷。


这些东西,倒不是说每件都是难如登天的事情。但是,这里面的事情要想做得很极致,就没有什么省时间的办法。通常来说,需要足够的业务去磨炼,足够的时间去慢慢的构建,修改,尝试,版本迭代。十年磨一剑,用在这里,是非常合适贴切的。


换个说法,腾讯云TDSQL这个数据库系统的稳定性,已经被磨炼到了令人发指的地步了。说真话,我真的没有见过一个大型分布式系统可以在波动率上提升到0.2%的。我一开始读到这个报告的时候,我以为我读错了。


要我说的话,打榜很重要,跑出新世界纪录很牛逼。但是,一定要我选,什么是最让我佩服的,那我觉得这个0.2%的波动率,才是最让我佩服的。我也很吃惊,这个团队可以把产品打磨到这种程度。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
最全的生物样本数据库(Biobank)收集;及部分公开数据库的大数据分享MySQL 处理大数据表的 3 种方案,写的太好了,建议收藏!!一条SQL如何被MySQL架构中的各个组件操作执行的?让你显老的原因,藏在这 3 个细节里,一招缓解创下250项世界记录的男人,他才是真正的无聊无冕之王16 年等待,再见 SQL Boy,这一次数据库交互形态彻底被颠覆了!《我的天才女友》的细节里,隐藏着一场伟大的女性运动MySQL 数据同步到 Redis 缓存, so Easy !数字化企业如何占领未来发展制高点?DTDS 全球数字人才发展峰会为您揭秘 | 极客时间企业版5大主流方案对比:MySQL千亿级数据线上平滑扩容实战多模数据库、“Serverless 化” | 开源数据库领域解读NoSQL 数据库如何选型黄奇帆:金融本质归纳起来就是三句话,说金融是发财捷径或吸血鬼都是误解上帝要你殁,先要让你“阔”SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案流感频发的季节里,鼻炎反复真的没有“解药”吗??慢SQL是如何拖垮数据库的?过年聚会,退了4个群拉黑了5个人每分钟可处理8.14亿笔交易、腾讯云数据库TDSQL刷新TPC-C纪录对国产数据库行业意味着什么?行于所当行,止于不可不止上帝要你亡,先要让你“狂”美团四面:如何保障 MySQL 和 Redis 的数据一致性?结婚必须赢了那个“绿茶”!魔鬼藏在细节里...旅游記憶(2)美高中生被125所大学录取,奖学金$900万,打破世界记录!不要在细节上雕花FlinkSQL 数据权限之数据脱敏解决方案美国男子与105名女性同时结婚!渣男行为载入吉尼斯世界记录,她们被害惨还被当成疯子细节中隐藏着玄机,细节中能看到“魔鬼”如何高效实现MySQL与elasticsearch的数据同步临床数据库对于临床科研有多重要?如何利用开放的数据库撰写SCI论文?隐语开源首个工业级多方安全数据分析系统SCQL:像写SQL一样「易用」隐私计算【动脉严选新品鉴第12期】腾讯健康组学平台:为基因测序行业提供腾讯云整体解决方案了解那些“奇葩”SQL写法,快速写出高效率SQL数据库er的夏日盛宴 | 2023 可信数据库发展大会演讲议题征集限时开启!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。