DBA会被AI取代吗?我花了一个下午实测了KES MCP Server,得出了这个结论
DBA会被AI取代吗?我花了一个下午实测了KES MCP Server,得出了这个结论
开篇:我的焦虑和你的焦虑,可能差不多
2025 年以后,我周围的 DBA 圈子里弥漫着一种微妙的情绪。
不是"数据库要完蛋了"那种恐慌——KingbaseES、OceanBase、openGauss 这些国产数据库一个比一个能打。是一种更具体的焦虑:
“如果开发自己能在 IDE 里调 SQL 了,那还要 DBA 干什么?”
这种焦虑不是空穴来风。Cursor 已经能帮你写代码了;TRAE 直接内置了 AI 能力;各种 Copilot 插件让写 SQL 像写作文一样简单。那数据库调优这块——DBA 最核心的护城河——会不会也被大模型啃掉?
正好,电科金仓前阵子在 Gitee 上开源了 KES MCP Server。我花了一个下午把它部署起来,把它的 9 个工具挨个用了一遍。
结论我先不说,你往下看。
MCP 到底是什么?说人话版
在开搞之前,有必要把 MCP 这个概念讲清楚。不是那种"Model Context Protocol 是一种开放标准"的教科书定义——我用大白话给你翻译一下。
MCP 就是大模型世界的"USB 协议"。
以前你想让大模型操作数据库,过程是这样的:你需要把建表语句抄出来→贴到对话框→再把执行计划抄出来→再贴进去→大模型帮你分析。所有数据都要靠你手动搬运。
MCP 解决的就是这个问题:它定义了一套标准,让大模型可以直接"调用"外部工具。
每个工具都是 MCP Server 上的一个函数,有明确的输入和输出。大模型通过 MCP Client(TRAE、Cursor 内置的能力)去调用这些函数,拿到返回结果,再根据自己的推理能力给你建议。
整个过程你什么都不用做,只需要用自然语言描述需求。
好,概念说完,直接开干。
环境准备:比我预想的简单,但有几个坑
KES MCP Server 对 Python 版本的要求比较严格:必须是 3.12 或 3.13。我这台 Mac 之前用的 3.11,得先升一下:
# 用 pyenv 切到 3.12
pyenv install 3.12.4
pyenv local 3.12.4
拉代码:
git clone https://gitee.com/king-db/kingbase-mcp
cd kingbase-mcp
uv pip install .
uv 这个工具之前没用过,但体验不错,比 pip 快不少。装完之后,需要在 Cursor 里配一下 MCP。如果你用 TRAE 也是一样的配置逻辑,只是配置文件路径不同。
我在项目目录下创建 .cursor/mcp.json:
{
"mcpServers": {
"kingbase": {
"command": "uv",
"args": [
"run",
"kingbase-mcp",
"--access-mode",
"restricted",
"--host", "10.0.1.50",
"--port", "54321",
"--database", "test_db",
"--user", "mcp_reader",
"--password", "mcp_reader_pwd"
]
}
}
}
几个配置要点:
--access-mode restricted一定要加,这是安全底线。测试环境想放飞可以用unrestricted。- 数据库账号我用的是一个只读用户,只给了
SELECT权限。即便 AI 产生了什么奇怪的想法,它也没法对数据搞破坏。 - Stdio 模式下,不需要额外启动服务,Cursor 会在需要的时候自己拉起进程。
重启 Cursor 之后,打开 AI 对话框,能看到 KES MCP Server 已经加载了 9 个 Tool。这一步没有任何坑。
这里顺便说一下三种传输模式的选择,因为我在部署时在这上面纠结了一下:
| 传输模式 | 工作方式 | 适合谁 |
|---|---|---|
| Stdio | 本地进程通信,Client 自动拉起 Server | 单机开发,最省心 |
| SSE | HTTP 长连接,需手动启动 Server | 同局域网团队共享 |
| Streamable HTTP | 标准 HTTP + HTTPS,可配反向代理 | 公司级集中部署 |
我个人是 Stdio 模式一把梭。因为就我一个人用,不需要开端口、不需要配 Nginx,Curosr 自动管理 Server 进程的生命周期,开箱即用。如果你是一个团队要共用同一个 KES 实例的 MCP 能力,那 Streamable HTTP 更合适,Server 部署在一台公用机器上,所有人通过 HTTPS 连接。
另外有一个我踩过的坑:如果你的 KES 版本低于 V8R6,某些字典视图的字段名不一样,会导致 MCP 工具返回异常。部署前记得检查一下版本:
SELECT version();

上手实测:我让它干了这五件事
测试 1:“看看我库里有什么”
先来个最简单的试探:
“列出 public schema 下的所有表”
大概 2 秒后,AI 给出了一个表格,把我测试库里的 8 张表全部列了出来,包括表名、类型(table/view/sequence)、所属 schema。我特意和 pgAdmin 里看到的对比了一下,一字不差。
这说明 Server 不是从什么缓存或训练数据里拿的结果,它是真的连上了我的数据库在执行查询。
接着我又试了一下:
“还要列出所有序列和视图”
返回结果里把 table、view、sequence 分门别类地列了出来,甚至标注了每个对象的 owner。对于刚接手一个新项目的开发者来说,这个能力简直是"数据库导览图"——不需要翻文档,不需要问同事,直接问 AI。
我有个做后端的朋友经常说:“接手一个新项目最痛苦的事不是看代码,是搞懂数据库里那几十张表都是干什么的。” 现在这个痛点,一句话就能解决一半。

测试 2:查表结构
我库里有一张 order_records 表,结构比较复杂,有 30 多个字段、5 个索引、3 个外键约束:
“查看 order_records 表的所有字段、索引和约束信息”
返回结果非常详细。字段名、类型、是否可空、默认值、索引名称和类型(btree/hash/gist)、主键和外键约束,全部一清二楚。
这里有个细节我很欣赏:索引信息里明确标注了索引列和是否唯一。以前我在 pgAdmin 里查这些,要点开好几个面板才能看全。现在一句话搞定。
测试 3:执行计划分析
这是我最期待的功能。我故意构造了一条有性能问题的 SQL:
SELECT o.id, o.total_amount, o.status, u.username
FROM order_records o
JOIN users u ON o.user_id = u.id
WHERE o.created_at >= '2026-01-01'
AND o.status = 'completed'
ORDER BY o.total_amount DESC
LIMIT 20;
这条查询在我 500 万行的 order_records 表上跑了大概 2.8 秒。我在对话框里输入:
“分析这条 SQL 的执行计划,看看为什么慢”
AI 返回了完整的 EXPLAIN (ANALYZE, BUFFERS) 结果,并且自动做了解读:主因是 order_records 表走了 Seq Scan,created_at 和 status 字段上没有复合索引,导致扫描了 500 万行去筛出 2000 行。
它还主动告诉我:“建议在 (created_at, status) 上建联合索引,可以让扫描从 Seq Scan 变成 Index Scan。”
这个建议跟我自己分析的结论一致。但关键是,以前我自己分析要 5 分钟,现在只需要 5 秒钟。这是质变。
测试 4:假设索引验证
它提了建索引的建议,我就直接追问:
“如果用 sys_hypo 模拟一下,加上 (created_at, status) 索引后,执行计划什么样?”
KES MCP Server 通过假设索引给出了"虚拟"执行计划。结果非常直观——预估代价从 48000 降到了 12,执行时间预估从秒级降到毫秒级。整个过程没有在数据库里创建任何物理索引。
这个功能的价值在于:建索引之前心里有数。不用猜"这个索引到底有没有用",执行计划直接告诉你。
我在生产环境里见过太多因为盲目建索引导致的写入性能下降。有了这个能力,DBA 的决策质量会大幅提高。
测试 5:健康巡检
最后我让它做了一次全库检查:
“给我做一次数据库健康检查”
返回的结果涵盖了好几个维度:缓存命中率(97%)、慢查询情况(最近 1 小时 12 条)、活跃连接数(35/200)、索引膨胀比例(< 5%,正常)、Vacuum 状态等。
它还用自然语言给出了总结:“数据库整体健康,缓存命中率良好,慢查询数量在可接受范围内。建议关注 order_records 表的索引优化。”
讲真,这个巡检报告的质量,不输我们团队初级 DBA 的水平。关键是它秒出结果,而人工巡检至少要大半个小时。
九个工具全览
测完之后我把 KES MCP Server 的 9 个工具全部列出来,给需要的人做个参考:
| 序号 | 工具名 | 功能 | 常用场景 |
|---|---|---|---|
| 1 | list_schemas | 列出所有 Schema | 接手新项目,了解数据库组织 |
| 2 | list_tables | 列出表 / 视图 / 序列 | 快速浏览库中有哪些对象 |
| 3 | describe_table | 查看表结构详情 | 了解字段、索引、约束 |
| 4 | run_query | 执行只读 SQL 查询 | 按需查询业务数据 |
| 5 | explain_query | 分析 SQL 执行计划 | 排查慢查询、验证索引 |
| 6 | health_check | 数据库健康巡检 | 定期巡检,发现问题 |
| 7 | list_slow_queries | 列出高耗时 SQL | 定位性能瓶颈 |
| 8 | analyze_index | 分析索引使用情况 | 发现未使用或缺失的索引 |
| 9 | hypo_index | 假设索引执行计划分析 | 建索引前 0 风险验证 |
坦白说,9 个工具的数量不算多,但每一个都打在了日常开发最高频的痛点上。没有花哨的功能,但缺的这几个能力恰好是以前最费时间的。
它真正的价值在哪?我的三点感受
用完之后,我有几个很明确的感受:
感受一:消灭"上下文切换"
这是最直观的变化。从查表结构 → 分析执行计划 → 提出优化方案 → 验证方案效果,以前要跨四五个工具才能完成的流程,现在全部在一个 AI 对话窗口里完成。
不需要打开 DBeaver、不需要复制粘贴 SQL 结果、不需要重新描述问题背景。K MCP Server 在中间充当了"翻译官"的角色——它把自然语言翻译成数据库操作,再把数据库结果翻译成大模型能理解的结构化数据。

感受二:安全机制不是摆设
KES MCP Server 支持两种访问模式,这个设计很务实:
| 模式 | 允许的操作 | 适用场景 |
|---|---|---|
| Restricted | 只读(SELECT、EXPLAIN) | 生产环境、演示环境 |
| Unrestricted | 所有 SQL(含 DDL/DML) | 开发测试库、沙箱环境 |
Restricted 模式下,Server 层就拦截了所有写操作。我个人建议生产环境无脑用 Restricted。不差这一道防线。
另外强烈建议给 MCP 专用的数据库账号开最小权限。我配的 mcp_reader 用户只给了下面这些权限:
GRANT CONNECT ON DATABASE test_db TO mcp_reader;
GRANT USAGE ON SCHEMA public TO mcp_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_reader;
三重保障:Server 层白名单 + 数据库账号只读 + Restricted 模式。三个环节里只要有一个起作用,恶意操作就执行不了。

感受三:但它不是银弹
客观地说,KES MCP Server 目前的做法是把 KES 已有的管理和诊断能力封装成 MCP Tool。9 个工具覆盖了日常开发中最常见的场景,但离"替代 DBA"还差得很远。
它做不到的事情包括:
- 不会自动生成 DDL。你不能跟它说"帮我建一张 users 表",它没有这个 Tool。
- 不会做容量规划。它不会分析你的表增长趋势,算不出你 3 个月后需要扩多少存储。
- 不会处理故障。数据库挂了,它不会自动主备切换,也不会发告警。
- 不会做业务决策。它能告诉你"这条 SQL 用了全表扫描",但要不要改、怎么改、什么时候改,需要人来判断。
换句话说,它是一个效率工具,不是一个决策工具。它让熟练的 DBA 工作效率翻倍,但不能让一个不懂数据库的人变成 DBA。
它适合谁?我的分层建议
根据我的实测体验,KES MCP Server 对不同角色的人价值是不一样的:
🟢 后端开发 (最大受益者)
如果你是写 Java/Go/Python 的后端,日常需要写 SQL、排查询性能问题,这个工具对你的效率提升是最明显的。以前碰到慢查询你得找 DBA 帮忙看表结构、看执行计划,现在自己在 IDE 里聊两句就解决了。减少了对 DBA 的依赖,也减少了沟通成本。
🟡 DBA(效率放大器)
对 DBA 来说,KES MCP Server 不能替代你的核心价值(架构设计、容量规划、故障处理、性能调优决策),但它能极大缩短你排查问题的时间。尤其是巡检和慢查询定位这种重复性工作,一句话搞定,把精力腾出来做更高价值的事情。
🟠 数据分析师 / 产品
如果你的工作主要是查数据、拉报表,KES MCP Server 也能帮上忙。省去了记表结构的时间,直接用自然语言查询你关心的数据。前提是你的数据库账号权限配置得当。
我对"AI 会不会取代 DBA"这个问题的真实想法
回到开头那个问题。用完 KES MCP Server 之后,我的判断是这样的:
不会取代,但会重新定义。
就像一个优秀的 IDE 没有取代程序员,只是让好的程序员变得更好一样;MCP 这类工具也不会取代 DBA,但它会让 DBA 的工作重心发生转移——从"手动执行诊断命令"变成"基于 AI 输出做判断和决策"。
以后一个好的 DBA,核心能力不再是"我知道 pg_stat_statements 的视图结构",也不再是"我能手写出 EXPLAIN 的所有参数"——这些 AI 都能做,而且做得更快。
一个好的 DBA 的核心能力会变成:
- 能从 AI 的分析结果中识别出真正重要的问题(而不是被淹没在噪音里)
- 能在业务上下文下做出正确的数据库设计决策(AI 不理解你们的业务)
- 能在安全和效率之间找到平衡(AI 给不了这种权衡判断)
换句话说,AI 帮你省了"操作"的时间,但"判断"和"决策"仍然是你的工作。

一图总结评测结果
我把我对 KES MCP Server 各项能力的实测感受整理了一下(主观评价,仅供参考):
| 能力 | 成熟度 | 我的评价 |
|---|---|---|
| Schema 探索 | ⭐⭐⭐⭐⭐ | 非常稳定,秒级响应,信息全面 |
| 执行计划分析 | ⭐⭐⭐⭐⭐ | 自动解读 + 优化建议,体验极佳 |
| 假设索引验证 | ⭐⭐⭐⭐⭐ | 0 风险验证,Killer Feature |
| 健康巡检 | ⭐⭐⭐⭐ | 覆盖全面,但缺少告警阈值配置 |
| 慢查询定位 | ⭐⭐⭐⭐ | 好用,但依赖 sys_stat_statements 扩展 |
| SQL 执行 | ⭐⭐⭐⭐ | 只读模式下稳定,但错误提示可优化 |
| 写操作 | ⭐⭐ | Restricted 模式下被限制(这是对的) |
| 自动调优 | ⭐ | 当前版本不具备 |
最后几句
一个下午的体验下来,KES MCP Server 给我的感觉不是"这玩意太牛了革命性的",而是 “这东西就该存在”。
数据库工具的发展逻辑一直是"功能越来越多,界面越来越复杂"。pgAdmin 的功能菜单已经多到需要搜索才能找到的地步了。这条路走到头了。
MCP 的思路完全反过来了:功能不变,但界面彻底消失了,变成了自然语言。
你不用学怎么用工具,你只需要知道你想干什么。剩下的交给它。
当然,KES MCP Server 不是完美的。作为初版产品,它在错误提示的友好度、Tool 返回结果的格式一致性上还有改进空间。比如某些查询失败时,返回的错误信息是原生的数据库错误码(比如 42P01: relation does not exist),对不熟悉 PostgreSQL/KES 错误码体系的开发者不太友好。如果能把错误信息翻译成自然语言解释,体验会更好。
但瑕不掩瑜。方向是对的,产品是可用的,效率提升是实打实的。
如果你的团队在用 KingbaseES,强烈建议让你们的 DBA 和后端开发都试一下。特别是配合 Cursor 或 TRAE 使用,效率和体验的提升是非常直观的。把一个下午的时间投资在部署和试用上,接下来几个月每天都能省出半小时,这投入产出比没什么好犹豫的。
git clone https://gitee.com/king-db/kingbase-mcp
- 项目仓库:https://gitee.com/king-db/kingbase-mcp
更多推荐




所有评论(0)