仅用慢日志文件,如何快速获取分时报告?

如果有监控系统,获取分时报告(每小时慢查询的条数报告)不难,如果只有慢日志文件,就会有点费劲。
通过 pt-query-digest --timeline 功能,可以输出带时间戳的慢查询条目
使用 termsql,将报告导入,并使用 SQL 查询一条记录,以展示 termsql 的效果
可以看到 termsql 将 timeline 报告的每一行,整理成了一条数据,放在 SQLite 中。
下面就可以尽情使用 SQL 获取分时报告:
用一个复杂一点慢日志,获得如下结果:
可以轻松定位到慢查询的热点时段,也便于发现业务的周期性规律。
termsql 是一个很方便的小工具:
1. 可以用于将文本导出到 SQLite 中,方便 SQL 查询。
2. 它与 ps 或者 top 合用也有惊喜,比如找出 CPU 占用率高于 25% 的进程:
mysql 中把时间戳转换成普通时间,使用From_UNIXTIME函数 一、FROM_UNIXTIME函数简介
1、函数作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。
2、语法:FROM_UNIXTIME(unix_timestamp,format) 返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。 根据format字符串格式化date值。 下列修饰符可以被用在format字符串中:
数据表里存储两个字段,一个int存时间戳,一个int存签到计数。每次签到发生时,php页面做判断,计算本次签到时间戳与系统记录的最后一次签到时间戳之差,超过3600*24,则将计数修改为零,否则+1。sql语句就不写了吧,就一个update的事情。。。
① 请求消息处理线程负责端口监听,如果有新连接进入则验证连接合法性,如果成功则加入连接池,连接池只能容纳一定量的连接监听连接池中所有连接是否有消息输入,如果有则读取请求消息处理连接非协议性关闭(如断电)
② 将请求消息写入消息队列这时必须换过消息格式,在原来的消息头中加入进队列的时间戳和所属连接。
③ 通知连接无法处理请求由于消息队列可容纳的消息个数有限,并且消息队列是循环可丢弃型的,只有在消息处理线程组太忙而客户又有大量请求进来时才须要抛弃最旧的消息。在抛弃最旧消息时查一下时间戳,如果未超时则可产生一个‘系统太忙未处理请求’的结果消息加到结果队列去。如果消息队列已满,可以考虑动态增加处理线程的个数,但处理线程组的个数必须是有限的。