MySQL / InnoDB 内核
AliSQL 8.0.44-2 以 MySQL 8.0.44 Server 和 InnoDB 为基础,并在 8.0.44-1 的 DuckDB HTAP 首发之上加入 Vector Index、Native Flashback 与两种 Binlog 优化。
一个 SQL 入口,两条工作负载路径
应用与 MySQL 客户端/驱动
│
MySQL 协议 + SQL 层
│
认证 · 优化器 · Binlog
│
┌───────┴────────┐
│ │
InnoDB DuckDB
事务、行存储、 列式扫描、
向量索引 连接、聚合
| 模块 | 用途 | 数据组织 | AliSQL 扩展 |
|---|---|---|---|
| MySQL / InnoDB | OLTP 和事务数据 | 行存储与 B+Tree 索引 | Vector Index、历史查询、Binlog 提交优化 |
| DuckDB | OLAP 与归档查询 | 列式存储与向量化执行 | SQL 转换、表转换、复制、故障恢复和资源管理 |
应用继续使用 MySQL 协议和 SQL 入口,但两个引擎并不共享全部 SQL 与存储语义。上线前仍需验证所用功能、数据类型、DDL、复制和故障恢复。
AliSQL 8.0.44-2 功能
| 功能 | 实现方式 | 8.0.44-2 默认值 | 主要限制 |
|---|---|---|---|
| Native Vector Search | HNSW 图持久化在 InnoDB 辅助表中 | vidx_disabled=ON | 仅 InnoDB;索引操作要求 READ COMMITTED |
| Native Flashback | 根据快照历史和保留 Undo 重建 InnoDB 历史读视图 | 快照任务 OFF | 仅支持 InnoDB 基础表的历史 SELECT;不能替代备份 |
| Persist Binlog Into Redo V2 | 符合条件的 Binlog 事件随 Redo 持久化,再由后台线程写入 Binlog | OFF | 需要满足严格的事务和两阶段提交(2PC)条件;否则使用标准 Binlog Group Commit |
| Binlog Cache Free Flush | 已完成的大事务缓存可以直接成为下一个 Binlog 文件,避免再次复制大量数据 | OFF | 当前开源 DuckDB 构建会使用标准 Binlog Group Commit |
| DuckDB Storage Engine | 通过 MySQL Storage Engine API 集成 DuckDB | duckdb_mode=NONE | 用于 OLAP;不保证完整的 MySQL SQL 与存储语义 |
使用限制
每项功能都有独立的配置和限制:
- Native Vector Search 将基础行和图节点纳入 InnoDB 事务,但当前要求
READ COMMITTED,同一向量表的并发写入会串行执行。 - Flashback 依赖快照生成和 Undo 保留。只开启查询开关并不会自动产生可恢复的历史。
- Binlog in Redo 优化符合条件的较小事务缓存;检查失败时按事务回退。
- Free Flush 面向溢出的大事务缓存,启用条件与 Binlog in Redo 不同。
- DuckDB 使用自己的表存储和分析副本;延迟敏感的事务写入应保留在 InnoDB 上。
进一步阅读
- DuckDB 分析 — SQL 转换、列式执行、分析副本和使用限制。
- Native Vector Search — HNSW 持久化、缓存层、SQL、参数和并发。
- Native Flashback — 快照生成、Undo 保留、历史查询和使用限制。
- Binlog 优化 — Binlog in Redo 和 Free Flush 如何处理符合条件的提交,以及何时回退。
- 快速开始 — 构建源码并分别验证各项功能。
开源版本与托管服务属于不同运行环境
阿里云 RDS MySQL 提供部分 AliSQL 功能,但产品版本、拓扑、参数名称、默认值和支持策略可能不同。自建源码版本请使用本站和仓库 Wiki;RDS 实例请使用 RDS 产品文档。