讲师中心 微信公众号
AI工具推荐 视频效率加速

如何为查询执行耗时添加颜色告警_超长SQL爆红显示配置

冬婷姑娘_6301

冬婷姑娘_6301

发布时间:2026-05-06 10:15:58

|

518人浏览过

|

来源于php中文网

原创

MySQL慢查询日志本身不支持着色,需在查看阶段用awk/grep动态高亮;CLI耗时标红需捕获stderr;SQL批量执行推荐Python精确计时着色;所有方案均依赖终端支持ANSI颜色。

MySQL 慢查询日志里怎么让耗时数字自动标红

直接改日志本身做不到——mysqld 输出的慢查询日志是纯文本,不带颜色。真要“爆红”,得在查看阶段加处理,不是在生成阶段。

最常用也最轻量的办法:用 grep 或 awk 配合终端着色,在读取日志时动态高亮超时行。比如把执行时间 ≥ 2 秒的整行标红:

awk '$NF+0 >= 2 {print "\033[31m" $0 "\033[0m"; next} 1' /var/log/mysql/slow.log

注意:$NF 是最后一列(MySQL 慢查日志末尾是 Query_time: 后的数值),+0 强制转为数字避免字符串比较出错;\033[31m 是红色 ANSI 码。

  • 别直接用 grep -E "Query_time: [2-9]\.|[1-9][0-9]" —— 它只能匹配文本,无法区分 1.95s 和 2.01s,精度不够
  • 如果日志用了 log_output = TABLE 存进 mysql.slow_log 表,就得换 SQL 方式查,没法用终端着色
  • 某些旧版终端(如 Windows CMD)不支持 ANSI 颜色,会显示乱码,优先用 WSL、iterm2 或 mintty

MySQL 客户端执行 SQL 时实时标红耗时

MySQL CLI 本身不提供执行耗时着色功能,但可以通过 shell 包装实现:把 mysql 命令套一层脚本,捕获输出里的 Query OK 或 Rows matched 行及前面的耗时提示。

关键点在于 MySQL CLI 默认会在每条语句后打印类似 1 row in set (0.32 sec) 的信息,它其实走的是 stderr,可单独截获:

mysql -u root -p -e "SELECT SLEEP(1);" 2> >(awk '/sec)/ && $(NF-1)+0 > 0.5 {print "\033[31m" $0 "\033[0m"; next} 1' >&2) 

这个命令对 stderr 做了实时过滤,只要括号里秒数 > 0.5 就标红。

  • 2> >(...) 是 bash 进程替换语法,不能在 dash/sh 下用,确保用 bash 启动脚本
  • 别试图修改 my.cnf 里的 pager 配置来着色——pager 只作用于查询结果,不包含耗时统计行
  • 如果开了 profiling=ON,耗时分散在多行,这种简单匹配会失效,得用更重的解析逻辑

SQL 文件批量执行时按耗时分色输出(Python 脚本方案)

当需要跑一堆 .sql 文件并监控每条语句耗时,CLI + shell 组合太脆弱,推荐用 Python 控制执行流,自己测时、判断、着色。

核心是用 mysql-connector-python 或 pymysql 执行单条语句,并用 time.time() 包裹。超过阈值就用 \033[31m 打印语句和耗时:

import time
import mysql.connector
conn = mysql.connector.connect(user='root', password='', database='test')
cursor = conn.cursor()
for sql in open('batch.sql').read().split(';'):
    if not sql.strip(): continue
    t0 = time.time()
    try:
        cursor.execute(sql)
        dt = time.time() - t0
        color = '\033[31m' if dt > 1.0 else ''
        print(f"{color}→ {sql[:50]}... ({dt:.3f}s)\033[0m")
    except Exception as e:
        print(f"\033[33m! {sql[:30]}... ERROR: {e}\033[0m")

这样每条语句独立计时,比看整体执行时间靠谱得多。

  • 别用 subprocess.run(['mysql', '-e', sql]) —— 启动新进程开销大,且无法精确到单条语句粒度
  • 注意 autocommit=False 时,COMMIT 本身也会被计时,需单独判断语句类型
  • 如果 SQL 含注释或换行,split(';') 会切错,得用真正 SQL 解析器(如 sqlparse)做安全切分

为什么不用 Prometheus + Grafana 做“红灯告警”

因为这不是日志着色问题,而是监控告警场景。如果你已经上了 mysqld_exporter,那 mysql_global_status_slow_queries 和 mysql_info_schema_processlist_time 这类指标能反映慢查询趋势,但它们不记录单条 SQL 内容,更不会“爆红显示原始 SQL”。

想在 Grafana 里让某条 SQL 爆红,得先让它进日志、再进 Loki/ELK、最后写 LogQL 查询提取 Query_time 并配告警颜色——链路长、延迟高、还依赖日志格式稳定。

  • 别指望 performance_schema.events_statements_history_long 直接导出带颜色的 HTML 表格——它没渲染能力,只是张内存表
  • 开发环境用着色脚本够用;生产排查才值得上 ELK+Grafana 这套,否则就是杀鸡用核弹
  • 最常被忽略的一点:所有着色方案都依赖终端解释 ANSI 序列。发邮件、存文件、贴进钉钉/企微时,颜色全消失,只剩乱码

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2193

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1339

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

795

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2992

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

5048

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1139

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5311

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4662

2023.08.14

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

80

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn