引言
环境上有一个实时表库,该表存储了一天24小时定时任务.马上打算进行软件升级,领导让分析一下,什么时间升级软件,对程序的影响最小.
这样就需要进行数据统计,按小时进行分组,统计出每个小时的运行任务个数.
方案
方法1 sql+excel分组
sql: select * from t_jobs #查询表中所有的记录(表中只有24小时的数据)查询记录数466条.
查询的数据导出到excel中,如下图:
然后,在时间栏,进行筛选函数,得到自分组,可以查看每个分组的个数和详细.筛选结果如下图:
优点:查看方便,尤其是可以得知在某个时间段内,有多少个具体的程序在运行.
缺点:不直观,想要知道24小时之内的程序运行分布状况,需要一个个去查看,比较麻烦.
方案2. sql分组查询
sql: SELECT DATE_FORMAT(planTime,'%Y%m%d%H')hours,COUNT(any_value(planTime)) FROM t_jobs GROUP BY hours;
将结果导出后,结果显示如下:
sql说明: any_value()函数,主要是为了避免mysql的group查询函数失效,因为MySQL 5.7.5后only_full_group_by成为sql_mode的默认选项之一,这会导致在查询的时候,如果不加上any_value()函数,则会报错.
优点:可以很清楚看到程序分布情况
缺点:不能像excel一样查看具体的流程信息.
总结 根据自己需要进行使用.同时避免mysql版本不同带来的脚本兼容性问题.