腾讯云资深架构师王少华日前在 2018 开源数据库论坛(ODF)暨首届MariaDB中国用户者 大会上做了主题为“TXSQL Internals @2018”的主题演讲,本次分享从五个方面介绍TXSQL。
第一部分 腾讯云和TXSQL的概念
腾讯云作为国内云计算领先公司,全球建立500多个数据中心,超过百万数量的开发者在使用腾讯云。
腾讯云数据库TencentDB(曾用名:CDB)是腾讯云提供数据库产品和服务的总称,提供一整套的解决方案,包括用户上云,数据迁移、备份、恢复、升级等操作,相比于传统用户来构建数据库服务,减少了投入的同时也方便使用。TXSQL 是 Tencent MySQL 的简称,是 腾讯TEG 基础架构部 团队在近十年发展过程中衍生出来的一个对 MySQL 内核源码深度定制、对官方 MySQL 版本进行二次开发的项目。TXSQL内核版本拥有更高的性能、更强的稳定性,同时提供 Oracle MySQL 企业级版本才拥有的特性,对内支持集团内部业务的发展;对外通过TencentDB for MySQL提供服务,提供强有力的竟争力,助力腾讯云的快速奔跑。在腾讯云的发展过程中,为其保驾护航,积极的推动了腾讯云的快速发展。
腾讯云数据库TencentDB for MySQL服务于各行各业,包括游戏、电商、银行、证券、物流、政府、零售、工业、还有传统企业等。
TXSQL是数据库内核团队独立维护的MySQL 分支,对外通过TencentDB for MySQL服务提供给客户。可以看到TXSQL是内核,也是底层提供数据服务的位置。
第二部分 TXSQL可用性改造
MySQL 作为最受欢迎的开源数据库,也是云上使用最多的数据库,不同的业务场景对数据库有不同的功能需求与性能需求,这样就决定了数据库本身的多样化需求,同时 MySQL 在不同使用场景下所衍生出来的各种问题,也影响着线上的稳定性,TXSQL在可用性上做了以下改造:
1. Aysnc Drop Table
删除文件较大的表时,IO资源会被较长时间占用,出现峰值。为了避免这种情况,我们做了以下优化,避免IO峰值。
1) 将ibd文件重命名为临时文件;
2)每次在后台按固定大小(例如128M)截断;
3)最后删除它。
2. ALTER TABLE NO_WAIT | TIMEOUT
DDL 在执行过程中需要获取对应的表锁,然后进行操作,如果此时有事务获取表锁,则会造成此语句的阻塞,而后绪操作此表的请求也会被此 DDL 阻塞,因此我们引入了 Oracle 中的 alter table 超时失败的功能,即 alter table …. [nowait | wait for n] 的功能以降低 DDL 对线上的影响,oracle 中 select for update [nowait|wait for n] 则可以通过设置参数 innodb_lock_wait_timeout 来实现。因篇幅有限,此处仅列出一部分优化。
3. INFORMATION SCHEMA : METADATA LOCKS
此优化大大提高DBA在数据库的诊断效率。
第三部分 性能优化
除了可用性以外,TXSQL还在性能方便做了大量优化。
1. Replicaiton优化
1)Slave Lock Split
2)Slave IO Optimization
3)Parallel Replication
2)Query Optimizations
3)InnoDBRead View Optimization
第四部分 企业级特性
而在功能方面,我们实现官方版本所没有的功能,满足各行各业企业的要求,比如加密、审计、线程池,并行复制。首先是审计功能,官方的版本是没有审计这个功能的,只有企业版才有,我们结合自己的实际情况,为了保证用户的性能,我们做了一个audit的插件,从而保证性能的同时实现了用户所需要的功能。加入审计后,性能损耗低于5%。
金融行业对合规要求较高,加密是必备功能。TXSQL结合腾讯云的KMS和CAM,提供一整套数据库加密解决方案。其中腾讯云提供的KMS(Key Management System)管理和存放密钥,CAM(Cloud Access Management services)做用户权限控制,TXSQL提供lKerying Plugins和lKeyring_kms 两个插件。目前此解决方案已为大量企业所采用。
我们第三个是thread handling,我们在测试压力测试的时候,随着并发的加大,性能会首先提升,然后下降,原因则是系统内部各种资源的竟争比较严重,TXSQL 通过把 Thread Pool 引入来解决这个问题,并且解决了以下几个问题:
解决了Threadpool 情况下全局读锁所造成的死锁问题
解决了 Dump 线程对于Thread Pool 的影响
添加新的 Information Schema 表来观察ThreadPool内部的运行情况
第五部分 TXSQL未来的发展方向
在未来的发展过程中 TXSQL 仍然会以用户为导向,保持稳定性,性能调优和功能实现的基础上,从以下方面不断的进行改进:
- 智能化
- 分布式
- 新硬件
- 存储和计算分离
更多前沿数据库技术和案例分享,请关注我们的微信号:腾讯云数据库CDB