载誉而归 | 腾讯云原生数据库 TDSQL-C荣获“云原生卓越技术提供商”奖项

共 3318字,需浏览 7分钟

 ·

2021-09-29 20:52


TDSQL-C再创佳绩


9月16日,Distributed Cloud|2021全球分布式云大会在上海召开,腾讯云原生数据库TDSQL-C荣获“云原生卓越技术提供商”奖项,TDSQL-C 是腾讯自研的云原生分布式数据库(原CynosDB), 基于共享存储,实现了强大的扩展能力和超百万级QPS的高吞吐性能,深度定制的数据库内核TXSQL是支撑关键业务平稳运行的基石。


(云原生卓越技术提供商奖项)


TDSQL-C的总体架构是基于共享存储,存储和计算分离的架构。


(传统的MySQL主备架构和TDSQL-C架构对比图)


  • 传统的MySQL主备通过binlog进行的逻辑复制,而TDSQL-C是通过redo日志进行的物理复制。
  • 传统的MySQL需要向存储写多份数据包括data,binlog,redo log, 而TDSQL-C只需向存储写一份redo日志即可。
  • 传统的MySQL主备各存储一份数据,而TDSQL-C基于共享存储只有一份数据。

TDSQL-C具有以下关键特性:
1、可靠性
多副本/RPO=0
  • 存储多副本保证数据高可靠
  • 共享存储,主备数据一致
  • 即时回滚,任意时间数据都可靠
2、高性能
极致性能
  • 主备机读写性能全面优化
  • 不同规格针对性优化
  • 相对传统MySQL有6倍提升
3、高可用性
秒级RTO
  • 秒级RTO,故障几乎无感知
  • 毫秒级主备延迟,数据极速同步
  • 共享内存,数据恢复,快速预热
4、弹性扩展
随心所欲
  • 数据快速、透明扩展,按需使用
  • 大容量1PB,满足“大”需求


来自官方的多次认可


在MySQL官方近几次release notes中都有腾讯云数据库内核团队的重要贡献,也意味着腾讯云数据库内核技术TXSQL在国内是走在前列的;2020年底,腾讯云数据库内核团队又获MariaDB社区的官方感谢信,对团队的贡献予以感激。

(放到MySQL社区贡献的patch)
(来自Maria社区官方的感谢信)

TDSQL-C的关键特性之高可用-秒级RTO,可以达到故障无感知。
过往buffer pool大实例重启,初始化耗时长,用户体验差,对此的团队给出优化方案是:并行初始化加上page上的mutex延迟初始化。
  • 并行初始化是指按innodb buffer pool instance来并行初始化。
  • page mutex延迟初始化,是指当page首次使用时才初始化,而不是在启动时全部都初始化。


优化后的结果是之前500G buffer pool初始化从23s降到了1.3s,提升近20倍。


这个优化方案贡献给了MySQL官方(lmprove lnnoDB buffer pool initialization)


腾讯云数据库内核团队一直坚持以稳定性为第一位,保证了线上服务的可用性达到 99.95%,可靠性达到99.9996%,同时,深入研究技术细节,持续优化系统性能,使得数据库内核TXSQL的性能远超官方版本,并达到业界领先水平。



业界首创,蓄力技术创新


在官方MySQL8.0支持 instant add column 后,修改列类型操作便成为MySQL中最不友好的DDL类型。而在用户实践中,修改列类型也是用户执行比较频繁的DDL之一,此操作会长时间阻塞用户的读写请求,对业务的影响非常大。

TDSQL-C 业界首创,创新地支持了instant modify column功能,达到了秒级修改列的效果。具体的实现方式是:
  • 元数据多版本化, 表元数据保存列的多个版本信息,用户只能看到的总是最新的表元数据。
  • 行记录增加版本信息对应到不同版本的表元数据上。
  • 修改列只修改元数据,修改列的过程中不修改实际的行记录。
  • 行记录读取时,老版本记录会自动转换为最新版本的记录。
  • 行记录更新时,老版本记录会自动更新为最新版本的记录。

此方案为业界首创
TDSQL-C 修改列可以毫秒级完成,并且不受数据量大小的影响。


该功能解决了云上业务的痛点问题,补充了官方和开源社区在修改列上的不足,完善了整体的Online DDL功能体系。

除此之外,TDSQL-C其中的很多特性都是业界领先甚至是首创的亮点特性,并有多项申请了专利。比如:热点更新功能,通过存储引擎行锁级别的优化,大幅度优化了秒杀场景下的系统性能,此特性为业界首创,并申请专利。再比如:内核TXSQL的审计功能,通过异步方式优化了数据库审计日志的记录方式,使得审计性能业界领先。团队泰而不骄,蓄力并进,加大研发力度助力简化企业对数据库的管理、维护和更新,真正做到开发者只“使用”数据库,而不是被数据库繁琐的工作所困扰。


解决MySQL历史顽疾,Puege预读机制


Undo 空间膨胀问题是MySQL历史老大难问题,TDSQL-C创新地通过purge预读解决了此问题。

问题原因
  • Purge会读取undo page并清理delete mark的记录,清理完成后会释放undo page,从而最终释放undo表空间。
  •  IO bound场景或Buffer pool比较小的实例, purge时读取undo 更容易出现IO。而 IO时占用时间比较长,导致purge不及时undo日志空间膨胀。

解决方法(实现purge预读机制)
  •  根据事务提交顺序在内存中保存undo page的purge顺序用于预读。
  •  Purge coordinator异步预读这些page。

(purge预读开启前后效果对比)


精耕细作,追求卓越


有创新力量,也有稳扎稳打的技术底盘。TDSQL-C在高性能、高可用、弹性扩展方面同样精耕细作,追求卓越。

TDSQL-C高性能
plan cache实现查询计划缓存,以sysbench场景为例,经过plan cache优化后,解析和查询优化时间减少了,性能提升了70%左右;在线程池的基础上进行了异步组提交优化,将线程池资源提起释放从而能够去处理更多的请求,优化后整体的读写事务QPS有70%的提升;Log Compaction,在计算存储分离的架构下,日志即数据库, 对日志结构进行了一些压缩优化后,redo日志量减少了30%。

(TDSQL-C高性能-异步组提交优化)

TDSQL-C 高可用
采用redo物理复制,基于共享存储,主备数据物理一致,低延时、低损耗; 在数据复制做备份延迟优化,其中备库查询时IO过程不阻塞redo的回放,主备延迟做到毫秒级别;计算节点HA重启后,buffer pool需要重新加载进行预热,持续时间比较长,期间业务会受到较大影响,TDSQL-C支持独立Buffer pool 无需预热,缩短了重启时间。

(TDSQL-C高可用-独立buffer pool)

TDSQL-C 弹性扩展
TDSQL-C 目前支持最多扩展16个备库,备库可以提供读服务,Btree一致性读优化后,备库读不会被主库更新产生的SMO操作所阻塞。不会被主库更新产生的SMO操作所阻塞。



向云而进,持续增长


目前,TDSQL-C云原生数据库内核TXSQL在全球范围内已有近数万客户,运营公司最大的数据库集群。在云上也为拼多多,B站,微盟等不同行业的超大型客户提供了稳定可靠,性能优异,功能强大的企业级云数据库服务,与此同时,通过自研上云和开源协同,TXSQL也强力支撑和保障了诸如:微信红包、微信支付、QQ音乐,腾讯会议等大型内部业务。 

作为云原生技术先驱,腾讯云数据库内核团队在产研共建与生态融合上不遗余力,聚焦市场与客户需求,把技术概念更好地落地实现;兼容并包,加强与开源社区的联系,持续贡献技术力量,为各行各业带来全新的业务价值与技术优势。

向云而进,持续增长,TDSQL-C继续为社区和生态发展贡献自己力量,以创新技术探索数据管理的无限可能。


-- 更多精彩 --

降本95%,你们能做到吗?


怎么做好“硬核”的事?


TDSQL inside之路


点击阅读原文,了解更多优惠福利!
浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报