EasyDB

轻量级 MySQL 兼容数据库 · 完整 SQL 支持 · 主从复制 · Go 语言实现

195+
测试用例通过
100%
MySQL 协议兼容
50+
内置函数
3
数学函数优化

产品概述

EasyDB 是一款轻量级、完全兼容 MySQL 协议的关系型数据库系统,采用 Go 语言编写。产品实现了完整的 SQL DDL/DML/DCL 语法、MySQL 线协议兼容、主从复制、存储过程、视图、CTE 递归查询等高级特性。

EasyDB 定位于学习研究、嵌入式应用、轻量级服务、开发测试环境等场景。可直接使用 Navicat、DBeaver、MySQL Workbench 等主流 MySQL 客户端工具连接,也可使用 mysql 命令行客户端或 mysqldump 进行备份恢复,实现无缝替换。

技术架构

客户端工具
Navicat DBeaver MySQL Workbench mysql CLI mysqldump HeidiSQL
网络协议层
MySQL 线协议 握手认证 结果集返回 预编译语句
SQL 引擎
SQL 解析器 查询优化器 执行计划 Hash Join 子查询
功能模块
存储过程 视图 CTE 递归 触发器 UDF 主从复制
存储与安全
B+树索引 事务 (ACID) 死锁检测 用户权限 WAL

核心特性

🔌 MySQL 协议兼容

完全兼容 MySQL 线协议,支持握手认证、结果集返回、预编译语句等。可使用 Navicat、DBeaver、MySQL Workbench、mysql CLI 等所有主流 MySQL 客户端直接连接,端口默认 3336。

📝 完整 SQL 语法

支持 DDL(CREATE/ALTER/DROP DATABASE/TABLE/INDEX/VIEW)、DML(SELECT/INSERT/UPDATE/DELETE/REPLACE INTO)、DCL(GRANT/REVOKE/CREATE USER)、事务控制(BEGIN/COMMIT/ROLLBACK/SAVEPOINT)。

🔗 多表 JOIN

实现 Hash Join 算法,时间复杂度 O(m+n),支持多表关联查询。配合 IN 语句哈希查找 O(1)、LIKE 前缀优化等查询优化策略,提升复杂查询性能。

⚡ 数学函数优化

内置高性能数学函数:快速平方根(Quake III Arena 算法)、快速三角函数(泰勒级数近似)、快速对数/指数函数、位运算优化(ABS/FLOOR/CEIL),实现 2-4 倍性能提升。

📊 视图与 CTE

支持视图(VIEW)创建与查询,支持 CTE(Common Table Expression)递归查询,可编写复杂的递归 SQL 查询,处理树形/图结构数据。

🔧 存储过程

支持存储过程定义与执行,内置虚拟机(VM)执行存储过程逻辑。支持变量声明、条件判断、循环控制、参数传递等存储过程特性。

🔄 主从复制

支持 MySQL 风格的主从复制配置:CHANGE MASTER TO / START SLAVE / STOP SLAVE。可实现数据读写分离和高可用架构。

📦 批量操作

支持 BatchInsert、BatchUpdate、BatchDelete 批量操作,减少网络往返和事务开销,大幅提升数据导入/更新/删除的性能。

🔢 丰富函数库

内置 50+ 函数:数学(ABS/FLOOR/CEIL/ROUND/POW/SQRT/SIN/COS/TAN/LOG/EXP)、字符串(CONCAT/UPPER/LOWER/TRIM/REPLACE/REPEAT/REVERSE)、日期(NOW/CURDATE/YEAR/MONTH/DAY)、聚合(COUNT/SUM/AVG/MIN/MAX)。

🔒 安全认证

完整的用户认证与权限系统,支持 GRANT/REVOKE 权限控制,CREATE USER/DROP USER/ALTER USER 用户管理,确保数据库访问安全。

📈 管理语句

支持 SHOW DATABASES/TABLES/COLUMNS/VARIABLES/STATUS,EXPLAIN 查询计划分析,DESCRIBE 表结构查看,方便数据库管理和性能调优。

✅ 195+ 测试验证

完整的测试套件,195/195 测试用例全部通过,覆盖 SQL 语法、数据类型、函数、事务、JOIN、子查询等各个模块,确保功能正确性和稳定性。

快速开始

1. 启动服务器

# 方式1: 使用启动脚本(推荐) start.bat # 方式2: 直接运行 mysqldb.exe # 方式3: 指定配置文件 mysqldb.exe -config config.ini

2. 连接数据库

# 使用 MySQL 命令行客户端 mysql -h 127.0.0.1 -P 3336 -u root # 或使用 Navicat/DBeaver # 主机: 127.0.0.1 端口: 3336 用户: root 密码: 无

3. SQL 示例

# 创建数据库和表 CREATE DATABASE testdb; USE testdb; CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100), email VARCHAR(255), age INT, created_at DATETIME ); # 插入数据 INSERT INTO users VALUES (1, 'Alice', 'alice@example.com', 25, NOW()), (2, 'Bob', 'bob@example.com', 30, NOW()); # 查询 SELECT name, age, YEAR(created_at) AS year FROM users WHERE age >= 18 ORDER BY age DESC; # JOIN 查询 SELECT u.name, COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON u.id = o.user_id GROUP BY u.name; # 事务 BEGIN; INSERT INTO users VALUES (3, 'Charlie', 'c@test.com', 28, NOW()); UPDATE users SET age = 29 WHERE id = 3; COMMIT;

4. 主从复制

# 配置主从复制 CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3336, MASTER_USER='repl', MASTER_PASSWORD='password'; START SLAVE; # 查看复制状态 SHOW SLAVE STATUS;

产品对比

特性EasyDBMySQL
协议MySQL 线协议MySQL 线协议
客户端兼容Navicat/DBeaver/Workbench全生态支持
SQL 语法完整 DDL/DML/DCL完整 SQL
JOINHash Join O(m+n)Nested Loop/Hash Join
存储过程支持支持
视图支持支持
CTE 递归支持支持 (8.0+)
主从复制支持支持
数学函数优化快速算法 2-4x标准实现
语言GoC/C++
开源协议MITGPL
适用场景轻量/嵌入式/学习企业级生产

立即下载

选择合适的方式获取 EasyDB

📦 下载V1.1 🐙 GitHub 仓库

版本: v1.0.0 | 平台: Windows amd64 | 语言: Go

包含: mysqldb.exe (服务器) + config.ini + 完整文档 + 测试用例