DB Fiddle

2026-03-30发布 3,321 1 0

支持多版本 MySQL 与 PG 的在线 SQL 运行与调试沙箱

所在地:
USA
语言:
en
收录时间:
2026-03-30
DB FiddleDB Fiddle

DB Fiddle 是一款面向后端工程师、全栈开发者与 DBA 的多版本在线关系型数据库运行沙箱。凭借开创性的双屏解耦架构、涵盖主流数据库多历史版本的即时切换能力以及一键生成复现链接,它成为全球技术社区排查 SQL 故障、验证优化方案与技术答疑的标准协作平台。

为什么双屏解耦是最高效的 SQL 调试方式?

在传统的 SQL 答疑或线上故障排查中,最令人头疼的问题往往是“本地环境无法复现”:由于各成员本地数据库版本不一、缺乏基础表结构定义,或者测试数据产生脏读,沟通往往演变为漫长而低效的口头描述。

DB Fiddle 提出了极具代表性的双屏解耦范式:

左侧面板:Schema DDL 与测试数据构建。专门用于编写 CREATE TABLE 建表逻辑、外键约束、索引定义以及 INSERT INTO 基础测试数据初始化;

右侧面板:Query DML 业务查询与优化验证。专门编写待调试的 SELECT、复杂多表联查、聚合分析或 UPDATE 逻辑。

当点击“Run”执行时,系统会在后端容器中即时拉起崭新的数据库沙箱从零编译左侧结构并执行右侧查询。每次运行都是完全隔离、无污染的物理纯净态,彻底消除了测试环境历史数据残留导致的假性通过。

真实案例:在 MySQL 5.7 与 8.0 之间快速复现类型转换与语法冲突

DB Fiddle 最无可替代的生产价值,在于允许工程师在一秒内自由切换数据库的主流历史版本,极速捕捉版本升级带来的隐式 Bug:

-- 左侧 Schema DDL 示例
CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50),
  department_id INT,
  created_at DATETIME
);

INSERT INTO users (username, department_id, created_at) VALUES
('Alice', 10, '2026-01-01 10:00:00'),
('Bob', 10, '2026-01-02 11:00:00'),
('Charlie', 20, '2026-01-03 12:00:00');

在右侧查询中,若测试一段带有模糊分组的查询:

-- 右侧 Query 调试:测试 ONLY_FULL_GROUP_BY 行为
SELECT department_id, username, MAX(created_at)
FROM users
GROUP BY department_id;

在顶部将数据库版本切换为 MySQL 5.6 时,上述查询能够正常返回结果;但当一键切换至 MySQL 5.7 或 8.0 时,沙箱会立即精准抛出标准报错:Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column。无需在本地折腾 Docker 或安装多套 MySQL 实例,工程师在几秒内就能向团队清晰演示版本升级中 ONLY_FULL_GROUP_BY 严格模式导致的线上隐患。

结合 EXPLAIN 分析执行计划树与索引命中优化实战

DB Fiddle 绝不仅是简单的查询执行器,更是后端工程师验证索引命中与慢查询重构的高效试验台:

在面对复杂关联查询时,直接在右侧查询语句前加上 EXPLAIN 关键字(若使用 PostgreSQL 则可使用 EXPLAIN ANALYZE):

EXPLAIN SELECT u.username, d.dept_name
FROM users u
JOIN departments d ON u.department_id = d.id
WHERE u.created_at >= '2026-01-01';

点击运行后,右下方控制台会即时输出结构化的执行计划结果,详细展示 type(是否触发了致命的 ALL 全表扫描)、possible_keys、key(实际命中索引)以及 rows 预估扫描行数。工程师可以直接在左侧随手添加 CREATE INDEX idx_created ON users(created_at); 并在右侧秒级再次点击 Run,直观对比索引添加前后扫描行数从数万行锐减至几行的优化效果,杜绝了在生产库上盲目拍脑袋建索引的巨大锁表风险。

在线分享最小化复现用例(MRE)的团队协作规范

在将 DB Fiddle 作为团队技术问答、开源发帖或技术面试标准工具时,建议遵循以下最佳实践:

点击顶部的“Save”按钮后,系统会为这套表结构与查询生成一个全局永久唯一的 URL。在向同行请教时,遵循“最小化可复现用例(Minimum Reproducible Example, MRE)”原则:只需在左侧保留与问题直接关联的 1 到 2 张表结构,填入 3 至 5 行具有边界代表性的样例数据即可,切忌无意义地灌入数万行测试数据,这极易触发沙箱的多租户超时强制熔断(Timeout)。

最核心的安全纪律:DB Fiddle 生成的分享链接是公网完全可访问的。严禁将生产数据库中通过 mysqldump 导出的含有真实用户姓名、身份证号或业务交易流水的真实片段直接贴入左侧面板,必须在本地使用虚拟变量(如 test_user_1、user@example.com)进行完整脱敏,牢牢守住企业数据安全红线。

数据统计

相关导航

1 条评论

您必须登录才能参与评论!
立即登录
  • PPPPro
    PPPPro 游客

    DB Fiddle 跑 SQL 比装本地数据库方便多了,不过 PostgreSQL 版本更新有点慢,最新的特性有时候测不了。日常小查询和教学演示完全够用