阿里巴巴开源 MySQL 分支,集成 DuckDB 分析引擎与原生向量索引
基于 MySQL 8.0.44,由阿里云数据库团队维护
AliSQL 是阿里云数据库团队维护的开源 MySQL 分支。本版本基于 MySQL 8.0.44,增加 DuckDB 分析型存储引擎、HNSW 向量索引、Native Flashback 和 Binlog 优化,并保留 MySQL 客户端协议。
|
随附的 TPC-H SF100 测试结果 中,DuckDB 的多项查询在该测试环境下相比 InnoDB 加速超过 200 倍 |
|
应用通过 MySQL 协议连接,可继续使用现有 MySQL 客户端和驱动 |
| 特性 | 描述 | 状态 |
|---|---|---|
| DuckDB 存储引擎 | 面向分析表的列式执行与存储,支持自动压缩 | 已发布 |
| 向量索引 (VIDX) | 原生向量存储与 ANN 搜索,基于 HNSW 算法,支持余弦和欧氏距离 | 已发布 |
| Native Flashback | 使用 AS OF TIMESTAMP 和保留的 Undo 快照查询 InnoDB 历史数据 |
已发布 |
| 大事务优化 | Binlog Cache Free Flush 减少 InnoDB 大事务提交阶段的 Binlog I/O 放大 | 已发布* |
| Binlog 持久化优化 | Persist Binlog Into Redo V2 在保留崩溃恢复能力的同时降低同步 Binlog I/O | 已发布 |
| DDL 优化 | Instant DDL、并行 B+树构建、非阻塞锁机制 | 规划中 |
| RTO 优化 | 加速崩溃恢复,缩短实例启动时间 | 规划中 |
* Free Flush 已支持 InnoDB 大事务。当前版本中,DuckDB 会注册额外的 2PC 参与者,因此包含 DuckDB 的 AliSQL 使用普通 Binlog Group Commit;下一版本将支持 DuckDB 场景的大事务优化。
# 克隆仓库
git clone https://github.com/alibaba/AliSQL.git
cd AliSQL
# 构建(release 模式)
sh build.sh -t release -d ~/alisql
# 安装
make install详细指南: 如何搭建 DuckDB 节点
# 初始化数据目录
~/alisql/bin/mysqld --initialize-insecure --datadir=~/alisql/data
# 为下方示例启用 DuckDB 并启动服务
~/alisql/bin/mysqld --datadir=~/alisql/data --duckdb_mode=ON-- 创建使用 DuckDB 引擎的分析表
CREATE TABLE sales_analytics (
sale_date DATE,
product_id INT,
revenue DECIMAL(10,2),
quantity INT
) ENGINE=DuckDB;
-- 使用 DuckDB 执行分析聚合
SELECT
DATE_FORMAT(sale_date, '%Y-%m') as month,
SUM(revenue) as total_revenue,
COUNT(*) as transactions
FROM sales_analytics
GROUP BY month
ORDER BY total_revenue DESC;-- 向量功能默认关闭,向量索引要求使用 RC 隔离级别
SET GLOBAL vidx_disabled = OFF;
SET SESSION transaction_isolation = 'READ-COMMITTED';
-- 创建包含向量列的表
CREATE TABLE embeddings (
id INT PRIMARY KEY,
content TEXT,
embedding VECTOR(3)
) ENGINE=InnoDB;
INSERT INTO embeddings VALUES
(1, '第一篇文档', VEC_FROMTEXT('[0.1,0.2,0.3]')),
(2, '第二篇文档', VEC_FROMTEXT('[0.2,0.1,0.4]'));
-- 创建 HNSW 索引以加速 ANN 搜索
CREATE VECTOR INDEX idx_embedding ON embeddings(embedding) DISTANCE=COSINE;
-- 使用余弦距离查找相似项
SELECT id, content,
VEC_DISTANCE_COSINE(
embedding, VEC_FROMTEXT('[0.1,0.2,0.3]')
) AS distance
FROM embeddings
ORDER BY distance
LIMIT 10;| 选项 | 描述 | 默认值 |
|---|---|---|
-t release|debug |
构建类型 | debug |
-d <目录> |
安装目录 | /usr/local/alisql 可写时使用该目录,否则为 $HOME/alisql |
-g asan|tsan |
启用内存/线程检测器 | 禁用 |
-c |
启用代码覆盖率 (gcov) | 禁用 |
前置依赖: CMake 3.x+、Python 3、GCC 7+ 或 Clang 5+
2025 Q4 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[x] DuckDB 存储引擎 [x] 向量索引 (VIDX) [x] 8.0.44 发布
2026 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[x] Native Flashback [x] 事务与 Binlog 优化 [ ] DDL / RTO
- AS OF TIMESTAMP - Binlog in Redo V2 - Instant DDL
- Undo 快照 - Free Flush - 快速崩溃恢复
| 文档 | 描述 |
|---|---|
| DuckDB 集成指南 | 架构、兼容性、复制与性能参考 |
| 向量索引指南 | 原生向量存储与 ANN 搜索 |
| Native Flashback 指南 | InnoDB 历史查询与恢复 |
| Binlog in Redo 指南 | Redo 持久化 Binlog 与回退规则 |
| Binlog Cache Free Flush 指南 | 大事务提交路径、配置与限制 |
| 发布说明 | AliSQL 8.0.44 新特性 |
| 搭建 DuckDB 节点 | 快速搭建分析节点指南 |
外部资源:
阿里云 RDS MySQL 提供部分 AliSQL 功能的托管版本,并负责内核发布、产品拓扑、数据同步、备份、监控与技术支持。RDS 支持的版本和参数默认值可能与本仓库不同,使用 RDS 实例时应以产品文档为准。
| 功能 | RDS MySQL 产品文档 |
|---|---|
| DuckDB 分析实例 | 中文 / English |
| 向量存储 | 中文 / English |
| Native Flashback | 中文 / English |
| Binlog Cache Free Flush | 中文 / English |
| Binlog in Redo | 中文 / English |
各功能指南会注明本源码与 RDS MySQL 的行为差异。
AliSQL 自 2016 年 8 月起即为开源项目,由阿里云数据库团队持续维护。当前 8.0.44 功能版本延续了这一开源版本线。
欢迎提交 Bug、文档修正和代码修改。
- Fork 本仓库。
- 创建功能分支 (
git checkout -b feature/my-change)。 - 提交修改 (
git commit -m 'Describe the change')。 - 推送分支 (
git push origin feature/my-change)。 - 发起 Pull Request。
如有 Bug 反馈或功能建议,请通过 GitHub Issues 提交。
RDSAI CLI 是面向 AliSQL 和 MySQL 的命令行客户端,支持通过自然语言生成 SQL、分析执行计划和诊断查询问题。
# 安装
curl -LsSf https://raw.githubusercontent.com/aliyun/rdsai-cli/main/install.sh | sh
# 连接数据库,使用自然语言查询
rdsai --host localhost -u root -p secret -D mydb
mysql> 分析 users 表的索引使用情况
mysql> 显示过去一小时的慢查询
mysql> 为什么这个查询很慢: SELECT * FROM users WHERE name LIKE '%john%'主要功能:
- 自然语言转 SQL(支持中英文)
- 查询优化与诊断分析
- 按
Ctrl+E即时分析执行计划 - 多模型 LLM 支持(通义千问、OpenAI、DeepSeek、Anthropic 等)
- 自动化性能基准测试与分析报告
|
GitHub Issues Bug 反馈与功能建议 |
阿里云 RDS 托管的 DuckDB 分析型实例 |
AliSQL 采用 GPL-2.0 协议开源,与 MySQL 保持一致。
详见 LICENSE 文件。
由 阿里云数据库团队 维护
