Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”。无独有偶,同样也在2017年,在英特尔®、腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用英特尔®提供的高端平台,跑出了创造历史的最快性能数据——峰值286万QPS。相比于上一代处理器,性能提升了近4倍,是32核/220GB实例的38倍,腾讯云TDSQL正在打造数据库领域的“超音速战机”。

  此次测试的TDSQL,是由腾讯云数据库团队、金融云团队和腾讯TEG团队共同维护的金融级分布式架构和MySQL内核分支的统称。目前,腾讯90%的金融、计费、交易、区块链等业务核心都承载在TDSQL架构中,并已成功应用于政府、银行、保险、制造业、物流、电商等用户。TDSQL提供专有云、公有云两种部署方案,可以分配关系型数据库(CDB)、分布式数据库(DCDB)、分析性数据库(ADB)实例。

  TDSQL强大的性能,离不开软硬件的共同支持,腾讯云技术团队通过对分布式架构和数据库内核的深度优化,同时借助英特尔®先进技术,让TDSQL已经成为金融企业互联网转型的一大“利器”。

  分布式架构与数据库内核深度优化

  与传统行业技术架构不同,大型互联网企业更倾向于使用分布式数据库(DCDB),这是因为互联网应用大多都面临着高并发数据处理,海量数据存储的需求;而分布式数据库底层将实际计算和存储数据的物理表进行自动水平拆分,通过让负载均匀的分布到每个数据库物理节点中,有效的提高了数据库的扩展能力。目前,腾讯充值及其相关合作伙伴的日流水量超过150亿,托管账户接近280个亿,而其中类似于春节红包,节日大促,营销活动,其访问流量经常超过日均值的2倍、10倍或更多,如果用传统方案来支撑,性能和成本将无法想象。

  在内核层面,腾讯云数据库团队对数据库内核进行了深度优化,增强了在性能,数据复制方面的能力,包括:

  · 优化线程池调度算法:启用数据库线程池能够很好的提升在高并发、短事务场景下,数据库整体吞吐量,并且能够有效的控制数据库内部工作线程的数量,降低开销。数据库团队在此基础上针对线程池的调度算法进行了优化,减少无谓的线程切换,减少请求在队列中的等待时间,解决查询和更新请求在线程组间分布不均衡等情况。负载越高,性能优化效果越明显,如下图TDSQL与MySQL在英特尔®平台进行对比测试,随着负载和CPU核数的增加,TDSQL的性能变化更接近于线性增长的趋势,高负载情况下性能仍然能领先1.4倍并仍可继续提升。

  · 组提交异步化:在写入数据时,Binlog事务组提交是数据库开销较大的过程,Binlog组提交的基本思想是引入队列机制保证innodb commit顺序与binlog落盘顺序一致,并将事务分组,组内的binlog刷盘动作交给一个事务进行,以实现组提交目的。在此过程中,一个组所有连接的工作线程,只有leader线程在工作,所有其他线程都需要等待leader线程完成工作。我们优化了在engine prepare期间不刷engine 事务日志,而是在执行binlog写入之前,一次性flush engine事务日志。简单来讲,即数据库的工作线程在其会话状态进入组提交队列后,不再阻塞等待组提交的Leader线程完成提交,而是直接返回处理下一个请求,实现异步化。在英特尔®高端平台中,为了更充分的利用机器资源的目的,我们引入多租户场景(4个实例并发),并采用OLTP RW(读写混合)纳入到测试场景, 4实例并发稳定峰值为19万 TPS。

  在资源扩展性上,随着英特尔®至强® CPU核数的不断增加,TDSQL的整体性能表现也不断提升,基本处于线性增长的趋势。

  · 异步强同步复制:针对金融场景对数据强一致的需求,有效解决MySQL同步机制问题,TDSQL结合中断思路,实现了用户线程异步化,当用户线程执行到写binlog,将会话保存到session时,就紧接着异步去处理其他请求。这样就能有效利用CPU资源,避免因等待备机应答而造成的线程阻塞,充分利用线程池中的线程。目前,对于OLTP类事务,TDSQL强同步复制性能(TPS/QPS)已与异步复制模式已无差别。同样,在OLTP RW(读写混合,主从架构),且开启强同步场景(MySQL 5.7为异步),相较于社区版mysql5.7,性能提升约1.2倍。

  为进一步验证强同步数据一致性,我们在每秒插入2万行数据的场景下,直接杀掉主机数据库进程,并在切换备机后导出流水做对比,发现数据完全一致。

  硬件与软件的强强结合,充分发挥数据库性能

  此次测试,英特尔®为腾讯云提供了英特尔® 至强® 可扩展处理器、英特尔® 傲腾* 固态盘产品等先进产品。依托这些先进产品的优秀表现,在另一项针对数据库读写性能的测评中,与上一代机型相比,英特尔® 至强® 可扩展处理器与英特尔®傲腾* 固态盘产品使写性能提高3倍,峰值达到了109万TPS(Transactions Per Second,每秒事务数),读性能提高4倍,峰值达到了286万QPS(Queries Per Second,每秒查询率)。

  通过以上性能数据我们可以看出,TDSQL在高并发场景下的良好表现,可以轻松支撑起亿级用户的访问需求。而如果您追求兼容性,可选择关系型数据库(CDB )实例,如果您追求超高性能弹性扩展可选择分布式数据库(DCDB)。当前,基于TDSQL的腾讯金融云已在众多金融领域关键业务场景获得广泛应用,已成为国内提供金融科技服务最重要的平台之一。

  附录

  实测的硬件/操作系统配置如下。

性能测试工具及用例采用sysbench OLTP。相关命令行参数如下。
强同步测试用例方案参考。相关命令行参数如下。
 

286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”的更多相关文章

  1. 腾讯云TDSQL审计原理揭秘

    版权声明:本文由孙勇福原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/244 来源:腾云阁 https://www.qclo ...

  2. 强强联袂!腾讯云TDSQL与国双战略签约,锚定国产数据库巨大市场

    日前,腾讯云计算(北京)有限责任公司与北京国双科技有限公司签署了<国产数据库产品战略合作协议>,双方将在数据库技术方面展开深度合作,通过分布式交易型数据库的联合研发.产品服务体系建设.品牌 ...

  3. 复盘价值1000万的腾讯云硬盘固件"BUG"

    摘要: 除了吃瓜,还是得吸取教训啊同学们! 这次,我从纯技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,不站队. 硬盘门 这里说的硬盘门不是10年前陈老师的那一次,而聊的是最近"腾讯云&qu ...

  4. 免费报名 | 腾讯云自研数据库CynosDB交流会

    本文由云+社区发表 作者:技术沙龙 All in 云+时代,数据库的高可用性.按需付费.按需扩展等属性解放了大批开发者.腾讯发布的自研数据库CynosDB作为国内首款同时兼容MySQL和PG的云原生数 ...

  5. 腾讯云TDSQL监控库密码忘记问题解决实战

    首先,给大家介绍一下TDSQL.TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用.全球部署架构.分布式水平扩展.高性能.企业级安全等特性, ...

  6. 腾讯云TDSQL MySQL版 - 开发指南 二级分区

    TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...

  7. 腾讯云TDSQL MySQL版 - 开发指南 分布式事务

    由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...

  8. 腾讯云TDSQL PostgreSQL版 -最佳实践 |优化 SQL 语句

    查看是否为分布键查询 postgres=# explain select * from tbase_1 where f1=1; QUERY PLAN ------------------------- ...

  9. 远程连接腾讯云服务器MySQL数据库

    1.添加腾讯云安全组规则的MySQL 3306端口 将所有端口打开,至少打开3306,不在赘述. 2.打开更改MySQL配置文件 打开配置文件 vi /etc/mysql/mysql.conf.d/m ...

随机推荐

  1. 最强AngularJS资源合集

    AngularJS是Google开源的一款JavaScript MVC框架,弥补了HTML在构建应用方面的不足,其通过使用指令(directives)结构来扩展HTML词汇,使开发者可以使用HTML来 ...

  2. [python3.5][PyUserInput]模拟鼠标和键盘模拟

    一.PyUserInput安装 python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中.在python3.5中,直接安装PyUserInput模块即可 Py ...

  3. 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案

    今天同事问了我一件很怪异的事情,说她的office打不开了,如打开word或excel时,突然出现错误提示错误窗口"向程序发送命令时出现问题",分析原因才知道她安装了 AVG pc ...

  4. MAC下安装如何安装mysql?

    最近有位搞开发的朋友,估计是买了一个新的MAC本,他说不是很熟悉这个系统(什么人哪,太懒了!),于是让我给他装一下后台开发过程中经常使用的数据库软件MYSQL,今天给大家分享一下我的操作步骤以及出现问 ...

  5. springboot2.x里面访问静态资源的坑

    在spring boot的自定义配置类继承 WebMvcConfigurationSupport 后,发现自动配置的静态资源路径( classpath:/META/resources/,classpa ...

  6. Mock接口平台Moco学习

    Mock就是模拟接口的.本文学习Mock的 Moco开源框架. Moco源码和jar下载地址: git  jar  下载moco-runner-xxxx-standalone.jar moco的启动及 ...

  7. 【转载】Docker+Kubernetes 干货文章精选

    主要涉及到以下关键字: K8S.Docker.微服务.安装.教程.网络.日志.存储.安全.工具.CI/CD.分布式.实践.架构等: 以下盘点2018年一些精选优质文章! 漫画形式: 漫画:小黄人学 S ...

  8. MySQL - 扩展性 3 负载均衡:眼花缭乱迷人眼

    负载均衡的基本思路很简单: 在一个服务器集群中尽可能地的平均负载量. 基于这个思路,我们通常的做法是在服务器前端设置一个负载均衡器.负载均衡器的作用是将请求的连接路由到最空闲的可用服务器上.如图 1, ...

  9. 中国.NET:各地微软技术俱乐部汇总(持续更新中...)

    中国.NET:各地微软技术俱乐部汇总(持续更新中...)   本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by ​史记微软. ...

  10. Java工程师必备书单

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...