【mysql】统计两个相邻任务/事件的间隔时间以及每个任务的平均用时
- 准备
- 步骤
- 1. 设置查询参数部分
- 1.1 设置需要分析的起始时间
- 1.2. 设置需要分析的时间的长度(分析的结束时间)
- 1.3. 设置分析内容
- 1.4. 设置需要分析的表和字段
- 2. 自动计算分析
- 2.1 设置起始序号
- 2.2. 筛选`user_log`表数据并生成带序号的临时表`temp_ria`
- 2.3. 通过临时表`temp_ria` 生成序号减一的临时表`temp_rib`
- 2.4. 关联通过序号 `temp_ria` 与 `temp_rib`,并计算出需要分析的时间`create_time`的时间差。
- 2.5. 查询分析结果
- 2.6. 统计平均用时
- 2.7. 删除临时表
- 完成查询语句
准备
- 数据:任务/事件日志。
- 查询工具:Navicat
步骤
1. 设置查询参数部分
1.1 设置需要分析的起始时间
SET @st = '2024-10-13 11:00:00';
1.2. 设置需要分析的时间的长度(分析的结束时间)
分析30分钟的数据
SET @et = DATE_ADD(@st,INTERVAL 30 MINUTE);
分析30秒的数据
SET @et = DATE_ADD(@st,INTERVAL 30 SECOND);
分析12小时的数据
SET @et = DATE_ADD(@st,INTERVAL 12 HOUR);
1.3. 设置分析内容
SET @eventname = '微信支付';
1.4. 设置需要分析的表和字段
- 将
user_log数据表转化为后续自动分析使用的临时表temp_table_time。 - 将
create_time需要分析的时间字段转化为后续自动分析使用的临时字段temp_time。
DROP TABLE IF EXISTS temp_table_time;
CREATE TABLE IF NOT EXISTS temp_table_time
SELECT *,create_time AS `temp_time` FROM user_log
WHERE create_time BETWEEN @st and @et AND event_name =@eventname ;
2. 自动计算分析
2.1 设置起始序号
SET @row_index = 0;
2.2. 筛选user_log表数据并生成带序号的临时表temp_ria
DROP TABLE IF EXISTS temp_ria;
CREATE TABLE IF NOT EXISTS temp_ria
SELECT (@row_index:=@row_index + 1) AS ria,t.*
FROM (SELECT * FROM temp_table_time) AS t
2.3. 通过临时表temp_ria 生成序号减一的临时表temp_rib
DROP TABLE IF EXISTS temp_rib;
CREATE TABLE IF NOT EXISTS temp_rib
SELECT ria-1 AS rib,temp_ria.* FROM temp_ria;
2.4. 关联通过序号 temp_ria 与 temp_rib,并计算出需要分析的时间create_time的时间差。
使用 TIMESTAMPDIFF 函数计算两个时间的时间差,并使用 SEC_TO_TIME 函数将计算结果转换为时:分:秒的格式。
DROP TABLE IF EXISTS temp_diff;
CREATE TABLE IF NOT EXISTS temp_diff
SELECT
a.ria,
a.create_time as create_time_a,
b.create_time as create_time_b,
TIMESTAMPDIFF(SECOND, a.create_time,b.create_time) as diff,
SEC_TO_TIME(TIMESTAMPDIFF(SECOND, a.create_time,b.create_time)) as difftimeFROM temp_ria AS a
LEFT JOIN temp_rib as b ON a.ria = b.rib WHERE b.rib is not NULL;
2.5. 查询分析结果
SELECT * FROM temp_diff ORDER BY diff DESC;

2.6. 统计平均用时
使用 AVG 函数计算平均时间差,并使用 SEC_TO_TIME 函数将计算结果转换为时:分:秒的格式 。
SELECT SEC_TO_TIME(AVG(diff)) FROM temp_diff;

2.7. 删除临时表
DROP TABLE IF EXISTS temp_diff;
DROP TABLE IF EXISTS temp_rib;
DROP TABLE IF EXISTS temp_ria;
DROP TABLE IF EXISTS temp_table_time;
完成查询语句
# 1. 设置查询参数部分
SET @st = '2024-10-13 11:00:00';
SET @et = DATE_ADD(@st,INTERVAL 30 MINUTE);
SET @eventname = '微信支付';-- 生成临时表 temp_table_time
DROP TABLE IF EXISTS temp_table_time;
CREATE TABLE IF NOT EXISTS temp_table_time
SELECT *,create_time AS `temp_time` FROM user_log
WHERE create_time BETWEEN @st and @et AND event_name =@eventname ;# 2.自动计算部分
SET @row_index = 0;
-- 生成临时表temp_ria
DROP TABLE IF EXISTS temp_ria;
CREATE TABLE IF NOT EXISTS temp_ria
SELECT (@row_index:=@row_index + 1) AS ria,t.*
FROM (SELECT * FROM temp_table_time) AS t;-- 生成临时表 temp_rib
DROP TABLE IF EXISTS temp_rib;
CREATE TABLE IF NOT EXISTS temp_rib
SELECT ria-1 AS rib,temp_ria.* FROM temp_ria;-- 生成分析结果 temp_diff
DROP TABLE IF EXISTS temp_diff;
CREATE TABLE IF NOT EXISTS temp_diff
SELECT
a.ria,
a.temp_time as temp_time_a,
b.temp_time as temp_time_b,
TIMESTAMPDIFF(SECOND, a.temp_time,b.temp_time) as diff,
SEC_TO_TIME(TIMESTAMPDIFF(SECOND, a.temp_time,b.temp_time)) as difftimeFROM temp_ria AS a
LEFT JOIN temp_rib as b ON a.ria = b.rib WHERE b.rib is not NULL;-- 查询分析结果
SELECT * FROM temp_diff ORDER BY diff DESC;SELECT SEC_TO_TIME(AVG(diff)) FROM temp_diff;DROP TABLE IF EXISTS temp_diff;
DROP TABLE IF EXISTS temp_rib;
DROP TABLE IF EXISTS temp_ria;
DROP TABLE IF EXISTS temp_table_time;
相关文章:
【mysql】统计两个相邻任务/事件的间隔时间以及每个任务的平均用时
准备步骤1. 设置查询参数部分1.1 设置需要分析的起始时间1.2. 设置需要分析的时间的长度(分析的结束时间)1.3. 设置分析内容1.4. 设置需要分析的表和字段 2. 自动计算分析2.1 设置起始序号2.2. 筛选user_log表数据并生成带序号的临时表temp_ria2.3. 通过…...
RHCE——笔记
第一章——例行性工作 1:单一致性的例行性工作 仅处理执行一次就结束 at命令 /etc/at.allow —— 写在该文件的人可以使用at命令 /etc/at.deny —— 黑名单 两个文件都不存在,则只有root可以使用 #at工作调度对应的系统服务 [rootlocalhost ~]# p…...
Spring Boot在知识管理中的应用
1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…...
OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 允许用户在给定的图像上选择多个 ROI。 该函数创建一个窗口,并允许用户使用鼠标来选择多个 ROI。控制方式:使用空格键或…...
字节青训营入营考核部分题解
题库链接:https://juejin.cn/problemset?utm_sourceschool&utm_mediumyouthcamp&utm_campaignexamine 1. 计算从x到y的最小步数 问题描述 AB 实验同学每天都很苦恼如何可以更好地进行 AB 实验,每一步的流程很重要,我们目标为了…...
Android调用系统打印图片
拍摄和分享照片是移动设备最受欢迎的用途之一。如果您的应用 拍摄照片、展示照片或允许用户分享图片,则应考虑启用打印功能 和图片。Android 支持库提供了一个便捷的功能,支持使用 只需编写极少的代码和一组简单的打印版式选项。 本节课介绍如何使用 v4…...
网络最快的速度光速,因此‘‘光网络‘‘由此产生
世界上有一种最快的速度又是光,以前传统以太网络规划满足不了现在的需求。 一 有线网规划 二 无线网规划...
WPF -- LiveCharts的使用和源码
LiveCharts 是一个开源的 .NET 图表库,特别适用于 WPF、WinForms 和其他 .NET 平台。它提供了丰富的图表类型和功能,使开发者能够轻松地在应用程序中创建动态和交互式图表。下面我将使用WPF平台创建一个测试实例。 一、LiveCharts的安装和使用 1.安装N…...
spring 如何将mutipartFile转存到本地磁盘
两者的区别和联系 MutipartFile是spring的一部分,File则是java的标准类MutipartFile用于接收web传递的文件,File操作本地系统的文件 MutipartFile 转换File的三种方式 使用MutipartFile 自带的transferTo方法使用java自带的FileOutPutStream流使用java自…...
【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想!
【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想! 【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想! 文章目录 【…...
模电基础(晶体管放大电路)
1.放大电路 1.1基本共射放大电路工作原理 1.1.1电路的组成和作用 各器件的作用 (1)(交流电源):输入电路的有用信号,也就是我们需要去放大的信号 (2)(反馈…...
Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法)
Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法) requests-pkcs12 PyPI python中如何使用requests模块下载文件并获取进度提示 1、GET方法 1.1、调用 # 下载客户端(GET)def download_client_get(self, header_all):try:url = self.host + "/xxx/v1/xxx-mod…...
rhce:列行性(at和cron)
配置 at练习 设置时间提醒 定义一分钟后显示命令,使用atq查看 cron练习 配置 systemctl status crond 查看文件所在位置 ll /var/spool/cron/ 主要功能 开始操作 进入界面操作每天早上9点说hello crontab -e 五个星号分别代表分时日月周,其次是执…...
kubernetes给service动态增加服务端口
根据kubernetes官方文档的说明,service的ports规则支持merge操作: portsServicePort arraypatch strategy: mergepatch merge key: portThe list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-…...
如何将 html 渲染后的节点传递给后端?
问题 现在我有一个动态的 html 节点,我想用 vue 渲染后,传递给后端保存 思路 本来想给html的,发现样式是个问题 在一个是打印成pdf,然后上传,这个操作就变多了 最后的思路是通过 html2canvas 转化成 canvas 然后变成…...
ubuntu24 finalshell 无法连接ubuntu服务器, 客户端无法连接ubuntu, 无法远程连接ubuntu。
场景: 虚拟机新创建一个最小化的ubuntu服务器,使用finalshell连接服务,发现连接不上。 1. 查看防火墙ufw 是否开启,22端口是否放行 2. 查看是否安装openssh server, 并配置 我的问题是安装了openssh server 但是没有配置root可…...
牛客编程初学者入门训练——BC19 牛牛的对齐
BC19 牛牛的对齐 描述 读入 3 个整数,牛牛尝试以后两个数字占 8 个空格的宽度靠右对齐输出。 输入描述: 输入三个整数,用空格隔开。 输出描述: 输出 3 个整数以第二三个数字占 8 个空格靠右对齐输出 示例1 输入:…...
log file sync 内部执行过程
通常oracle的log file sync执行大致印象是等待cpu、log file parallel write、等待cpu,遇到问题主要考虑lgwr自适应模式参数要关闭、io性能、cpu瓶颈、归档数量和大小等,但是内部执行内容其实很多,尤其是有ADG了以后。 log file sync主要执行…...
【动手学深度学习】7.5 批量规范化(个人向笔记)
训练深层神经网络是十分困难的,特别是在较短的时间内使它们收敛更加棘手。而本节的批量规范化(batch normalization) 可以持续加速深层网络的收敛速度结合下节会介绍道德残差块,批量规范化使得研究人员能够训练100层以上的网络 1.…...
111 - exercise 5
一 public class Dummy {private static int a 3;private static int b 5;private static int c 7;public static void main(String... arguments) {int a 1, b 2;System.out.println("" a (a - b) c);} }这个Java程序中有两个a和b变量,一个是类…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
