腾讯云原生数据库 TDSQL-C 荣获“云原生卓越技术提供商”奖项
TDSQL-C 再创佳绩
9 月 16 日,Distributed Cloud|2021 全球分布式云大会在上海召开,腾讯云原生数据库 TDSQL-C 荣获“云原生卓越技术提供商”奖项,TDSQL-C 是腾讯自研的云原生分布式数据库(原 CynosDB), 基于共享存储,实现了强大的扩展能力和超百万级 QPS 的高吞吐性能,深度定制的数据库内核 TXSQL 是支撑关键业务平稳运行的基石。
TDSQL-C 的总体架构是基于共享存储,存储和计算分离的架构。
1.传统的 MySQL 主备通过 binlog 进行的逻辑复制,而 TDSQL-C 是通过 redo 日志进行的物理复制。
2.传统的 MySQL 需要向存储写多份数据包括 data,binlog,redo log, 而 TDSQL-C 只需向存储写一份 redo 日志即可。
3.传统的 MySQL 主备各存储一份数据,而 TDSQL-C 基于共享存储只有一份数据。
TDSQL-C 具有以下关键特性:
1、可靠性
多副本/RPO=0
存储多副本保证数据高可靠
共享存储,主备数据一致
即时回滚,任意时间数据都可靠
2、高性能
极致性能
主备机读写性能全面优化
不同规格针对性优化
相对传统 MySQL 有 6 倍提升
3、高可用性
秒级 RTO
秒级 RTO,故障几乎无感知
毫秒级主备延迟,数据极速同步
共享内存,数据恢复,快速预热
4、弹性扩展
随心所欲
数据快速、透明扩展,按需使用
大容量 1PB,满足“大”需求
来自官方的多次认可
在 MySQL 官方近几次 release notes 中都有腾讯云数据库内核团队的重要贡献,也意味着腾讯云数据库内核技术 TXSQL 在国内是走在前列的;2020 年底,腾讯云数据库内核团队又获 MariaDB 社区的官方感谢信,对团队的贡献予以感激。
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 功能,达到了秒级修改列的效果。具体的实现方式是:
1.元数据多版本化, 表元数据保存列的多个版本信息,用户只能看到的总是最新的表元数据。
2.行记录增加版本信息对应到不同版本的表元数据上。
3.修改列只修改元数据,修改列的过程中不修改实际的行记录。
4.行记录读取时,老版本记录会自动转换为最新版本的记录。
5.行记录更新时,老版本记录会自动更新为最新版本的记录。
此方案为业界首创
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。
精耕细作,追求卓越
有创新力量,也有稳扎稳打的技术底盘。TDSQL-C 在高性能、高可用、弹性扩展方面同样精耕细作,追求卓越。
TDSQL-C 高性能
plan cache 实现查询计划缓存,以 sysbench 场景为例,经过 plan cache 优化后,解析和查询优化时间减少了,性能提升了 70%左右;在线程池的基础上进行了异步组提交优化,将线程池资源提起释放从而能够去处理更多的请求,优化后整体的读写事务 QPS 有 70%的提升;Log Compaction,在计算存储分离的架构下,日志即数据库, 对日志结构进行了一些压缩优化后,redo 日志量减少了 30%。
TDSQL-C 高可用
采用 redo 物理复制,基于共享存储,主备数据物理一致,低延时、低损耗; 在数据复制做备份延迟优化,其中备库查询时 IO 过程不阻塞 redo 的回放,主备延迟做到毫秒级别;计算节点 HA 重启后,buffer pool 需要重新加载进行预热,持续时间比较长,期间业务会受到较大影响,TDSQL-C 支持独立 Buffer pool 无需预热,缩短了重启时间。
TDSQL-C 弹性扩展
TDSQL-C 目前支持最多扩展 16 个备库,备库可以提供读服务,Btree 一致性读优化后,备库读不会被主库更新产生的 SMO 操作所阻塞。不会被主库更新产生的 SMO 操作所阻塞。
向云而进,持续增长
目前,TDSQL-C 云原生数据库内核 TXSQL 在全球范围内已有近数万客户,运营公司最大的数据库集群。在云上也为拼多多,B 站,微盟等不同行业的超大型客户提供了稳定可靠,性能优异,功能强大的企业级云数据库服务,与此同时,通过自研上云和开源协同,TXSQL 也强力支撑和保障了诸如:微信红包、微信支付、QQ 音乐,腾讯会议等大型内部业务。
作为云原生技术先驱,腾讯云数据库内核团队在产研共建与生态融合上不遗余力,聚焦市场与客户需求,把技术概念更好地落地实现;兼容并包,加强与开源社区的联系,持续贡献技术力量,为各行各业带来全新的业务价值与技术优势。
向云而进,持续增长,TDSQL-C 继续为社区和生态发展贡献自己力量,以创新技术探索数据管理的无限可能。
评论