致敬MySQL 30周年|阿里云自研内核AliSQL的技术演进

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 30而立

引言

2025年,是MySQL数据库诞生的第30个年头。


5月23日-5月24日,由ACMUG和MySQL官方联合举办的「MySQL 30周年庆典」活动在成都召开。本次活动不仅是对MySQL 30年发展的总结,更是对未来的技术展望。


作为MySQL技术领域的重要推动者,阿里云瑶池数据库团队持续多年深耕MySQL技术领域,不断为社区贡献Patch和Idea(自2018年起,累计向MySQL社区提交技术提案219项,72个修复方案)。通过代码贡献、技术研讨等,团队在数据库性能优化、事务处理机制完善和高可用架构设计等多个方面,助力MySQL开源生态的技术创新和发展。


本次活动,阿里云数据库RDS产品负责人陈宗志分享《阿里云数据库RDS的自研内核AliSQL的技术演进》演讲,深度解析AliSQL在云存储、DDL场景、Binlog场景等的优化,以及分享AliSQL和DuckDB在HTAP场景上的解决方案。

image.png

阿里云数据库RDS产品负责人陈宗志

1、关于MySQL与AliSQL

自1995年诞生以来,MySQL凭借开源特性、易用性及高性能,已成为全球应用最广泛的关系型数据库,广泛服务于互联网、金融、电信、教育等关键领域。30年间,MySQL持续的技术迭代推动了数据库行业的革新进程。


在此背景下,阿里云RDS推出自研内核AliSQL——深度定制的MySQL分支。AliSQL融合阿里巴巴集团多年业务实践与技术积累,为用户构建企业级数据库服务。该内核不仅完整继承社区版MySQL功能,更通过创新实现性能、稳定、安全多方面的突破:提供企业级备份恢复、线程池、并行查询等核心能力,并兼容Oracle特性(如Sequence引擎),全面满足高并发场景下的可靠性与扩展性需求。


AliSQL开发的大部分功能,除了提供给公有云用户的使用,同时也积极开源,其中绝大多数都已经被官方 MySQL/MariaDB/Percona 吸收。阿里云一直秉持拥抱、回馈、融合、回报的思想反哺开源社区。

2、AliSQL在云存储上的优化

云数据库通过计算存储分离架构实现弹性扩展与按需计费,其资源解耦特性显著推动云原生数据库发展。基于通用云存储层构建的方案,既借助规模经济效应降低总体成本,又通过高可靠性特性降低开发与运维复杂度。


然而,云存储与本地存储的物理特性差异导致传统数据库上云面临多重挑战:远程分布式存储的I/O延迟瓶颈制约响应速度;聚合带宽利用率低限制吞吐潜力;长链路传输引发的I/O隔离性不足;云用户倾向数十TB级单表文件不切分,进一步加剧I/O瓶颈。这些技术矛盾直接限制云数据库在云环境下的性能上限与可靠性保障。


针对云存储中存在的问题,AliSQL团队进行了深入研究和优化,通过改进数据读写路径、优化缓存策略、降低系统锁争用等手段,提升了整体性能和稳定性。

1. 快速恢复

AliSQL 通过创新性设计,显著优化了数据库启动阶段的性能。AliSQL在数据库启动时仅扫描元数据,大大缓解了 InnoDB 全文件扫描和解析过程的 IO 压力,降低了耗时。其次,AliSQL采用并行化最小信息单元方式进行数据字典元信息获取,提升了时间效率,并降低了内存资源的使用。优化后,在 100w 表场景下,Crash recovery 下启动时间可缩短 95.2%;数据库启动过程中元数据占用的内存仅为原来的 15.4%。


除此之外,AliSQL 重新实现了崩溃恢复过程中Redo 日志的扫描与应用,采用多线程、流水线的方式对 Redo 日志进行扫描、解析与应用,大幅降低启动时间。优化后,Redo 的应用速度提升 500%以上。

2. IO 路径优化

InnoDB通过双写机制保障数据页原子性,防止半写错误;因此,每次数据页的刷新都涉及两次写操作,这增加了磁盘I/O负载。在高写入场景,InnoDB的双写机制就成为了性能瓶颈。AliSQL 具备全链路的16K原子写的能力,可安全关闭InnoDB双写机制。在降低了I/O写入量的同时,还简化了刷脏过程,大幅度降低云存储的IOPS及带宽需求,提升实例写性能。

image.png

3. 数据访问加速

AliSQL 引入缓存池拓展(Buffer Pool Extension)能力,扩展 Buffer Pool 的大小,将数据页缓存到Buffer Pool Extension中,让实例在一定时间内执行更多的读写命令。

image.png

引入BPE能够大幅提升数据页的访问速度,缩短SQL执行时间,同时也能大幅降低访问实例高性能云盘中数据文件的频率,降低高性能云盘带宽。此外,缓存层的存在也大幅降低云盘IO抖动对数据库运行的影响,提升稳定性。

image.png

3、AliSQL在DDL场景的优化

DDL(Data Definition Language)是MySQL中最频繁的“变更”操作之一。早期版本存在锁表、性能抖动、执行时间长等问题,导致用户不敢随意进行变更操作。但随着技术的发展,MySQL引入了Inplace DDL(5.6版本开始)和Instant DDL(8.0版本开始),大大提升了DDL操作的效率和稳定性。

image.png

在社区 MySQL 各版本对 DDL 改进的基础之上,AliSQL 团队对 DDL 做了更进一步的优化,让 DDL 操作更快、更稳、更安全。

1. 性能优化

▶︎ Instant DDL 增强AliSQL在社区MySQL 8.0版Instant操作(支持添加字段、删除字段和修改表名等)基础上,扩展了字段类型修改等能力。例如将INT类型改为BIGINT时不存在数据不兼容问题,引擎层将两者视为同类型数据来处理,仅需修改数据字典元数据并维护版本,即可实现秒级列修改。同时AliSQL 5.7完整同步了社区MySQL 8.0的Instant add/drop column能力,使该版本也具备部分Instant DDL特性,显著提升DDL执行效率与稳定性。


▶︎ IO 和 排序优化AliSQL优化了DDL内存管理策略。在B+tree构建过程中,优化了排序逻辑,采用更高效的排序算法替代社区版归并排序。同时,AliSQL对Inplace DDL的数据扫描、校验及刷脏流程进行深度优化,彻底解决了社区MySQL并行DDL引发的性能问题。经实测验证,AliSQL Inplace DDL执行时间较社区版缩短至63%。

image.png

▶︎ 并行构建 B+tree:社区MySQL的并行DDL本质为索引并行创建,但涉及表重建的主键操作仍保持单线程扫描插入。AliSQL在社区框架基础上重构主键数据扫描与插入逻辑,实现该流程的并行化处理。通过将二级索引并行与主键构建并行相结合,显著提升B+tree构建速度,进而提高整体DDL效率。

image.png

2. 稳定性优化

▶︎ Buffer Pool 管理优化:在业务高峰期,1个小表的结构变更就可能引起性能抖动。AliSQL开发了Faster DDL功能,优化了Buffer Pool管理策略,显著降低锁争用,缩短高峰时段DDL耗时,有效消除稳定性风险。

image.png

▶︎ 大文件异步删除:社区MySQL的DROP TABLE和TRUNCATE TABLE操作中,InnoDB数据文件会直接从文件系统中删除;这会导致POSIX文件系统出现严重的稳定性问题。AliSQL的大文件清理功能会通过后台线程实现异步清理;删除文件时将文件重命名为临时文件后由清理线程异步处理,减少文件系统抖动,有效规避系统风险。


▶︎ AHI 清理优化:社区MySQL的DROP TABLE/INDEX 和 TRUNCATE TABLE 操作中,删除自适应哈希索引(AHI)的操作耗时较高。在大文件或高缓存池配置场景下,处理 AHI 的耗时会急剧增加;同时,清理 AHI过程中的全局锁会导致DDL阻塞。AliSQL 通过优化AHI 的删除时机和加锁策略,将表删除对系统的影响降至最低。


▶︎ 非阻塞 DDL:执行DDL时若存在未提交事务或长查询,社区MySQL的MDL-X/SNW锁的高优先级会阻塞目标表所有访问,导致连接堆积甚至系统崩溃。AliSQL提供非阻塞DDL的功能,在等待MDL-X/SNW锁期间仍允许目标表访问,避免业务中断并保障系统稳定。

image.png

3. 安全性

▶︎ Recycle Bin:社区版MySQL的DDL操作不可回滚,误操作(如DROP/TRUNCATE)易引发数据丢失。AliSQL设计了回收站功能,通过将被删除表临时保留,用户可在预设时间内恢复,有效降低数据丢失风险。

4、AliSQL在Binlog模块的优化

Binlog是MySQL生态中非常重要的组件,AliSQL从性能,稳定性,复制延迟几个维度对binlog进行了优化。

1. 性能优化

▶︎ Binlog 并行写模式社区MySQL采用串行Binlog写入,高并发下存在较大性能瓶颈。AliSQL通过Binlog Buffer机制实现多线程并发写入,利用Writer和Syncer后台线程分别处理缓冲写入与持久化;前台事务线程写Binlog时,可并发写入Binlog Buffer中并等待写入完成即可。该优化使MySQL高并发写性能提升超40%。

image.png

image.png

▶︎ Binlog in Redo社区MySQL通过Binlog Group Commit合并多事务的Binlog和Redo log IO以优化提交性能。AliSQL在此基础上引入Binlog in Redo,将单事务的Binlog与Redo IO合并,进一步提升性能。提交阶段,Binlog直接写入Redo Log并只执行一次Sync Redo操作。宕机恢复时,AliSQL会从Redo Log恢复出Binlog内容确保数据不丢失。该优化使低并发的写性能提升超1倍,高并发的写性能提升超40%。

image.png

image.png

2. 稳定性

▶︎ 大事务写binlog优化:社区MySQL将事务生成的Binlog Events暂存在Binlog Cache;事务提交时,从Binlog Cache中读取文件,这对大事务的读取来说耗时较长,并且过程中其他事务无法写入Binlog,从而导致实例暂时不可写。AliSQL改造了Binlog Cache的临时文件,使其可以在提交阶段直接rename成binlog文件,该优化彻底消除大事务提交的性能抖动,避免了实例长时间不可写的问题,并已合入MariaDB 10.8版本。

image.png

3. 复制延迟

▶︎ Writeset 优化社区MySQL 5.7通过Writeset实现行级并行复制,虽提升并发度却因前缀索引、外键及DDL支持不足易引发延迟或中断。AliSQL针对性优化,包括:修复前缀索引Bug,增强外键/DDL冲突检测,彻底消除带前缀索引表、外键表及高频小表DDL场景的复制延迟。▶︎ Binlog 实时复制优化社区MySQL的Binlog复制中,大事务和大表DDL需主库提交后备库才执行,导致延迟与事务执行时长同步。AliSQL通过实时复制使主备库并行执行大事务和DDL,从根源上解决此类场景的复制延迟问题。

5、AliSQL基于DuckDB在HTAP场景的解决方案

AliSQL集成DuckDB作为分析型存储引擎,依托DuckDB列式存储与向量化计算能力实现高效分析查询,为用户提供高效分析查询能力。

image.png

在实现过程中,AliSQL对DuckDB语法解析器和函数模块进行深度改造,实现SQL语法、函数、数据类型、DDL及事务与MySQL的高度兼容。DuckDB引擎实例作为独立的只读分析节点,与主库通过Binlog同步数据,新增节点时自动将数据表转换为DuckDB引擎。用户无需对现有的业务进行改造,可以像使用和访问 MySQL 一样的方式来访问只读分析节点;同时,由于 AliSQL 将 AP 的核心能力都集成在数据库内核中,因此也无需引入数据同步工具,减少了数据同步链路的复杂性、降低数据出错和同步中断的可能性。


依托 DuckDB 的列式存储和高压缩比技术,在TPC-H sf100测试中,该方案加速比达到200+倍,而磁盘空间占用仅为20%。

image.png

6、结语

从MySQL开源内核到AliSQL的深度定制,阿里云瑶池数据库始终以"用户价值"为驱动。AliSQL作为基于MySQL深度优化的分支,从性能、稳定性、安全多个方面进行深度优化和定制;同时AliSQL积极回馈社区,推动MySQL生态发展。


未来,阿里云瑶池数据库将持续深耕数据库内核技术,为用户提供更加高效、稳定、安全的数据库体验,让云数据库像水和电一样触手可及。


*下表为阿里云瑶池数据库团队给社区提交的部分Issue截图

image.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11月前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
422 0
|
6天前
|
缓存 关系型数据库 MySQL
在MySQL中处理高并发和负载峰值的关键技术与策略
采用上述策略和技术时,每个环节都要进行细致的规划和测试,确保数据库系统既能满足高并发的要求,又要保持足够的灵活性来应对各种突发的流量峰值。实施时,合理评估和测试改动对系统性能的影响,避免单一措施可能引起的连锁反应。持续的系统监控和分析将对维护系统稳定性和进行未来规划提供重要信息。
49 15
|
11月前
|
监控 关系型数据库 MySQL
10亿数据如何最快速插入MySQL:技术干货分享
【8月更文挑战第2天】在大数据时代,处理并快速插入数十亿条数据到MySQL数据库是许多企业面临的关键挑战。本文将深入分享一系列高效的技术策略和实战经验,帮助读者优化这一过程,确保数据能够快速、准确地进入数据库系统。
397 1
|
7月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
362 1
|
8月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
8月前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
391 3
|
8月前
|
SQL DataWorks 关系型数据库
阿里云 DataWorks 正式支持 SelectDB & Apache Doris 数据源,实现 MySQL 整库实时同步
阿里云数据库 SelectDB 版是阿里云与飞轮科技联合基于 Apache Doris 内核打造的现代化数据仓库,支持大规模实时数据上的极速查询分析。通过实时、统一、弹性、开放的核心能力,能够为企业提供高性价比、简单易用、安全稳定、低成本的实时大数据分析支持。SelectDB 具备世界领先的实时分析能力,能够实现秒级的数据实时导入与同步,在宽表、复杂多表关联、高并发点查等不同场景下,提供超越一众国际知名的同类产品的优秀性能,多次登顶 ClickBench 全球数据库分析性能排行榜。
|
9月前
|
XML 关系型数据库 MySQL
MySQL 导出某些数据的技术详解
MySQL 导出某些数据的技术详解
417 2
|
11月前
|
NoSQL Redis 监控
Redis常用命令指南
Redis常用命令指南
599 1
Redis常用命令指南
|
10月前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
748 6

相关产品

  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多