MySQL内核大牛解密腾讯数据库关键技术点

  

  

  

本文是腾讯羊毛基础架构部数据库团队专家工程师赖铮在腾讯云与3306年π联合举办的数据库技术沙龙上的演讲实录。

  

今天分享时长四十分钟左右,详细解释腾讯云数据库内核TXSQL的新功能和特性。主要包括三个部分:

  

第一个部分是腾讯云国开行介绍,国开行是云数据库服务云数据库服务的缩写。

  

第二部分主要介绍国开行新版本的新功能和新优化。

  

第三部分主要介绍国开行企业级特性。

  

  赖铮演讲视频(与本文内容一致)

  

首先我们介绍一下我们腾讯云的国开行。大家应该都知道腾讯云是国内领先的云服务供应商,像腾讯内部的一些业务,qq,微信之类的一些内部业务就是跑在腾讯云上的,当然不是全部,其他未上云业务后续也会逐步迁移到腾讯云上。   

  

腾讯云上运行的这些数据库服务统一都叫TencentDB也叫CDB.CDB提供了非常完善的数据库服务,能够让用户做一些自主可控的管理,同时针对很多应用做了兼容和优化。腾讯云数据库服务也支持多种数据库引擎。比如我们今天要讲到MySQL的数据库服务,还有复述,MongoDB等其他数据引擎。现在腾讯云数据库的数据量非常大,就MySQL数据库服务来说早已经超过p级。

  

接下来,看看我们的现网客户,包括拼多多,蘑菇街,WeBank,微信支付,搜狐畅游等都在使用我们的数据库。而腾讯云数据库服务的核心,也就是刚才介绍的TencentDB或者叫国开行的最主要的核心叫TXSQL也叫TengXunMySQL也叫TencentDB MySQL。这个数据库的内核是腾讯自己自研的一个MySQL分支,它是基于官方MySQL版本的,它在我们整个腾讯云数据库服务的核心位置。从这个架构图可以看的出,首先上层是访问集群访问集群,然后中间就是TXSQLInstance集群数据库实例集群,下层是存储集群。

  

接下来讲一下腾讯云数据库内核TXSQL演进的过程,最早的TXSQL是从MySQL5.1开始,因为那时只有有限的资源,所以只做了错误修复。而到了之后的TXSQL5.5,除了错误修复还做了一些特性需要byOSS.OSS是什么呢?实际上就是我们腾讯云的管控平台或者叫做云操作系统,云操作系统支持或者说管理腾讯云上面的数据库。后来接着到了TXSQL5.6,我们做了更多的东西,比如说DBA管理需要的东西,商业化需要的特性,以及针对读写方面的优化等等

  

现在在腾讯云上提供的最新版本是5.7版本,5.7除了刚才讲的东西,还提供了一些企业级的特性,比如说加密,审计,还有线程池。现在正在研发的是8.0版本.8.0版本我们的团队现在已经基本完成,应该在近期就会发布.8.0版本中我们会加入更多的新特性,而不光是刚才介绍的这些特性。其实8.0大家都应该知道,就官方本身来讲就加入了非常多的特性,比如说数据库字典的优化,对重做日志的优化,优化器的重构.8.0可以说算是MySQL近期的里程碑式的版本,所以将来的主流的MySQL数据库服务都会往8.0上迁,我们腾讯的8.0的版本不光是提供官方版本这些特性,还有我们自己的一些特性,我相信大家应该会感兴趣。因为我参与了8.0版本的规划,我想这个版本应该会给大家带来惊喜,敬请期待。

  

以上我们简单介绍了一下腾讯云整个数据库服务的一些情况,   

  

一、异步删除大表

  

在TXSQL之前的版本就已经有了这个功能,新版本是对这个功能进行了一些优化。它主要是解决一个什么问题呢,我相信大家都或多或少碰到过这个问题,就是在我们滴水数据库或表的时候,当这个表特别大的时候,因为原来的MySQL是直接去删除掉那个IDB文件的,而当这个IDB文件特别大的时候就会产生一个IO尖刺,这个尖刺有的客户是无法接受的,因为可能有些业务会很受影响。为了解决这个问题,我们做了这个异步删除大表的功能,它是怎做的呢?做删除表,删除数据库的时候会把删除文件的工作通过后台线程来做,后台线程每一次会截断掉128,然后一直到删除这个IBD文件。

  

在我们最新的版本里对这个功能的参数支持了动态设置,比如说可以配置临时文件存放的目录,还可以动态打开或关闭这个功能,集全球innodb_async_truncate_work_enabled=alt=" MySQL内核大牛解密腾讯数据库关键技术点">

  

  

  

我们来看一下官方的公布测试效果:

  

   MySQL内核大牛解密腾讯数据库关键技术点

  

第一个图,随着并发数的增加性能有了近三倍的提升,不过,大家需要注意这个新的事务调度算法并不是万能的,它只能适用某些场景。是哪些场景呢?就是某一部分数据特别热的场景,比如有20张表,每一张都有一千万行数据,相对来讲,它只会去做一些修改相对集中于一张表或者两张表的记录,这种情况下,这种事务算法才会比较有效.TXSQL新版本中,我们增加了一个新的参数,来让用户可以设置事务调度的方法:

MySQL内核大牛解密腾讯数据库关键技术点