查数据库业务高峰需用实时指标:MySQL用SHOW GLOBAL STATUS LIKE 'Threads_running'持续>10,PostgreSQL用SELECT count(*) FROM pg_stat_activity WHERE state='active'持续>15,连续观测3–5分钟确认。
怎么查数据库当前是不是业务高峰
别凭感觉定凌晨2点——很多公司这时候在跑etl、日志归档或安全扫描,show global status like 'threads_running' 返回值持续 >10,就说明mysql正在高并发扛压;postgresql则用 select count(*) from pg_stat_activity where state = 'active',超过15基本就是忙时。这些指标得连续看3–5分钟,单次快照没意义。
Navicat定时任务怎么真正错峰,而不是“假装错峰”
Navicat本身没有独立调度能力,所谓“定时”本质是Windows任务计划程序调用 --batch-job 启动GUI进程。所以错峰关键不在Navicat里设时间,而在任务计划程序中:
- 触发器必须选“每天”,但起始时间要根据你刚查到的负载低谷段手动填(比如MySQL负载曲线显示凌晨4:30–5:15最空闲,那就设4:40)
- 不能只设一个时间点——对大库建议拆成多时段:比如全量备份放凌晨4:40,增量备份放上午10:20和下午3:50,避开早会后和下班前这两个隐性高峰
- 任务属性里勾选“如果任务已在运行,请勿启动新实例”,否则I/O撞车时可能同时跑3个dump进程
为什么Navicat备份常在错峰时间仍卡住CPU
即使时间设对了,以下三点不处理,照样撞车:
- 同步任务卡在
Comparing records阶段?说明源表或目标表缺主键或UNIQUE NOT NULL索引——Navicat会全量拉数据到本地比对,CPU必然飙高。先执行SHOW CREATE TABLE对两边结构做逐字段比对 - 批处理作业里用了“压缩备份”,压缩过程本身吃CPU,建议关掉,用外部工具(如7-Zip定时归档)替代
- 导出CSV/Excel时勾了“使用文本限定符”但没设为
"(英文双引号),字段含换行或逗号时Navicat会反复重试解析,表现为CPU占用率锯齿式波动
任务计划程序里最容易被忽略的三个权限细节
哪怕时间、命令都对,这三项错一个,任务就静默失败:
- 「安全选项」必须勾选“只在用户登录时运行”——否则Excel/PDF渲染引擎加载失败,导出文件为空
- 「起始目录」必须设为Navicat安装路径(如
C:\Program Files\PremiumSoft\Navicat Premium 16),否则找不到ODBC驱动,报错0xc000007b - 参数栏写
--batch-job="daily_backup"时,名称必须与Navicat里保存的批处理作业名完全一致(包括大小写),且双引号是英文直角引号,不是中文顿号或弯引号
Threads_running,连采3天画出热力图,再定时间。











