- 添加计划任务选“备份数据库”时,前端调用 POST crontab/GetDatabases 拉取库列表
- 后端(class/crontab.py:1964)会遍历每个库的每张表,执行 select count(*) + show table status 等查询来组装表清单
- 你的数据库规模:2 个库共 92 张表、约 46GB,最大单表 xxx 有 4450 万行 / 15.7GB,还有多个 union 视图
- InnoDB 大表的 COUNT(*) 是全表扫描,单条就要数分钟 → 接口 120 秒以上无响应 → 前端超时 → 下拉列表拿不到任何库,只能停留在默认“所有数据库”
MySQL 现场证据: processlist 中最多同时卡着 13~15 条 select count(*),最长已跑 314 秒,mysqld CPU 约 37% 被这些查询占用。数据本身完全正常——3 个库(11、22、33)都正确注册为本地 MySQL,旧版列表接口秒回。
以上是AI分析的结论 |