Skip to content

Latest commit

 

History

History
309 lines (224 loc) · 11.4 KB

File metadata and controls

309 lines (224 loc) · 11.4 KB

AliSQL Logo

AliSQL

阿里巴巴开源 MySQL 分支,集成 DuckDB 分析引擎与原生向量索引

基于 MySQL 8.0.44,由阿里云数据库团队维护

GitHub Stars GitHub Forks License MySQL Version

特性 • 快速开始 • 文档 • 路线图 • 贡献

简体中文 | English

AliSQL 简介

AliSQL 是阿里云数据库团队维护的开源 MySQL 分支。本版本基于 MySQL 8.0.44,增加 DuckDB 分析型存储引擎、HNSW 向量索引、Native Flashback 和 Binlog 优化,并保留 MySQL 客户端协议。

分析性能参考

随附的 TPC-H SF100 测试结果 中,DuckDB 的多项查询在该测试环境下相比 InnoDB 加速超过 200 倍

原生向量索引

VECTOR(N) 类型和 HNSW 索引支持最高 16,383 维向量

兼容 MySQL 客户端

应用通过 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 分析节点

详细指南: 如何搭建 DuckDB 节点

初始化并启动服务

# 初始化数据目录
~/alisql/bin/mysqld --initialize-insecure --datadir=~/alisql/data

# 为下方示例启用 DuckDB 并启动服务
~/alisql/bin/mysqld --datadir=~/alisql/data --duckdb_mode=ON

使用示例

使用 DuckDB 进行数据分析

-- 创建使用 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;

使用向量搜索构建 AI 应用

-- 向量功能默认关闭,向量索引要求使用 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 商业版

阿里云 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、文档修正和代码修改。

  1. Fork 本仓库。
  2. 创建功能分支 (git checkout -b feature/my-change)。
  3. 提交修改 (git commit -m 'Describe the change')。
  4. 推送分支 (git push origin feature/my-change)。
  5. 发起 Pull Request。

如有 Bug 反馈或功能建议,请通过 GitHub Issues 提交。

相关工具

RDSAI CLI

RDSAI CLI Python 3.13+

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 反馈与功能建议

提交 Issue

阿里云 RDS

托管的 DuckDB 分析型实例

了解更多

开源协议

AliSQL 采用 GPL-2.0 协议开源,与 MySQL 保持一致。

详见 LICENSE 文件。

Star 趋势

Star History Chart

由 阿里云数据库团队 维护

GitHub • MySQL • DuckDB