redis 中缓存 百万级别表的查询数据 出错:Query execution was interrupted

news2024/9/22 8:34:09

项目背景:项目需要 首检合格率 这个结果,但是sql执行非常慢,就想着使用redis来优化接口的速度。现在我需要将数据库查询结果存储到redis,但是就是这一小步,也非常困难。我是用定时任务来实现上面的目的。

@Component
@Slf4j
public class FirstInspectionPassRateTask {
    @Autowired
    private CheckResultMapper checkResultMapper;

    @Autowired
    private InspectionStationInfoMapper inspectionStationInfoMapper;

    @Autowired
    private RedisTemplate redisTemplate;

    @Scheduled(cron = "0 32 13 * * ?")
    public void calculateFirstInspectionPassRate(){
        log.info("####### 定时任务开启......");
        ValueOperations<String ,String> operations = redisTemplate.opsForValue();

        NumberFormat numberFormat = NumberFormat.getPercentInstance();
        numberFormat.setMinimumFractionDigits(2);

        List<String> unitIdList = inspectionStationInfoMapper.selectUnitId();//单位id 集合
        unitIdList = Optional.ofNullable(unitIdList).orElse(new ArrayList<>());
        //这里只给2024表中的统计数据,因为首检合格率需要跨表,目前我也想不出如何编写 TODO
        List<String> monthList = new ArrayList<>(Arrays.asList("03"));

        unitIdList.forEach(unitId -> {
            monthList.forEach(month -> {
                List<String> bgList = new ArrayList<>();
                //查询指定机构的 首检报告列表
                bgList = checkResultMapper.getFirstInspectionReportCount(unitId, "2024", month);
                bgList = Optional.ofNullable(bgList).orElse(new ArrayList<>());
                //计算指定机构的 首检报告数量
                Long bgSum = (long) bgList.size();

                //首检合格率
                String rate = "0.00%";
                if(bgSum != 0){
                    //计算异常的首检报告数量
                    Long warnBgSum = checkResultMapper.getWarnFirstInspectionReportCount(unitId,"2024",month,bgList);
                    rate = numberFormat.format((bgSum-warnBgSum)/bgSum.doubleValue());
                }
                rate = rate.substring(0,rate.length() -1 );//去除最后的 % 方便前端处理

                String key = String.format("SZJDC:CHECKRESULT:BGBH:%s",unitId+"-2024-"+month);
                operations.set(key,rate,20, TimeUnit.DAYS);
            });
        });
    }

}

 就在执行这个定时任务,我出现了非常多的报错:Query execution was interrupted

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6eaf527b]
10:45:18.655 [pool-2-thread-1] ERROR o.s.s.s.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task
org.springframework.dao.QueryTimeoutException:
### Error querying database. Cause: java.sql.SQLTimeoutException: Query execution was interrupted
### The error may exist in file [D:\workspace\IdeaProjects\szjdc-service\sz-warning-platform\target\classes\mappers\CheckResultMapper.xml]
### The error may involve com.iflytek.warning.mapper.CheckResultMapper.getFirstInspectionReportCount
### The error occurred while handling results
### SQL: select BGBH from check_result_2024 cr WHERE year(CHECK_DATE) = ? and month(CHECK_DATE) = ? and UNIT_ID = ? and NOT EXISTS ( select CHECK_ID from check_result_2024 pcr WHERE pcr.CHECK_DATE between DATE_SUB(cr.CHECK_DATE, INTERVAL 4 MONTH) and DATE_SUB(cr.CHECK_DATE , INTERVAL 1 DAY) and cr.VIN = pcr.VIN and UNIT_ID = ? )
### Cause: java.sql.SQLTimeoutException: Query execution was interrupted

这里给出我的解决办法:

 这上面处理完了之后还是出现了该报错,然后我请教前辈

 就解决了,不愧是前辈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2135146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于android studio开发的仿QQ聊天软件源代码+数据库+实验报告

安卓客户端基于java 编程语言 在android studio 环境中开发。 内部图片资源很大一部分是反编译手机QQapp 获得的。 服务器端技术路线 聊天系统服务器基于Java Socket网络编程和并发编程、多线程技术、jdbc实现。 通过哈希表&#xff08;hashmap&#xff09;存储来自每一个向客…

读书笔记:《程序员修炼之道——从小工到专家》

前言 此书有两个版本&#xff0c;我读的是第一版&#xff0c;大学时买了略略翻过&#xff0c;当时太懵懂无法理解书中提出的观点&#xff0c;看了也记不得&#xff0c;感觉比较适用于有过1~2个项目工作经验的同学&#xff0c;初学者不一定能看得懂&#xff0c;工作之后看&…

学习通、智慧职教刷课脚本

&#x1f410;个人主页 可惜已不在 &#x1f40b;可以分享给身边有需要的人&#x1f436; &#x1f409;有用的话就留下一个三连吧&#x1f63c; 目录 一.安装 脚本运行器 篡改猴 - Microsoft Edge Addons 二.安装脚本 三.扩展 一.安装 脚本运行器 安装浏览器 Microsoft E…

【多因子分组箱线图】:附Origin详细画图教程

目录 No.1 理解箱线图 1 什么是箱线图 2 箱线图的组成 No.2 画图流程 1 导入数据并绘图 2 设置绘图细节 3 设置坐标轴 4 效果图 No.1 理解箱线图 1 什么是箱线图 箱线图&#xff0c;又称箱形图、盒须图或盒式图&#xff0c;用于体现数据分散情况的统计图。在视觉上辅助…

初始爬虫5

响应码&#xff1a; 数据处理&#xff1a; re模块&#xff08;正则表达式&#xff09; re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明&#xff1a; 1. 基本用法 1.1 匹配模式 …

CDGA|如何实施非常精准的数据治理策略?

在信息化高速发展的今天&#xff0c;数据已成为企业最重要的生产要素之一&#xff0c;其价值日益凸显。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;如何精准地管理和控制数据成为企业亟待解决的问题。本文将从设定目标、制定策略、组织结构建设、制度流程规范以及技术…

新发现!一键管理所有远程会话的神器——1Remote

大家好&#xff0c;今天给大家介绍一款非常实用的工具——1Remote&#xff0c;这是一款现代化的个人远程会话管理器与启动器&#xff0c;让您的远程工作变得更加轻松高效&#xff01; 项目介绍 &#x1f680; 核心功能概览 多协议支持&#xff1a;1Remote支持RDP、SSH、VNC、…

OBD服务0X0A--请求排放相关的永久DTC

服务0x0A的主要目的是允许外部测试设备获取所有具有“永久DTC状态”的故障诊断码&#xff08;DTC&#xff09;。这些DTCs是“已确认”的&#xff0c;并且被保留在服务器的非易失性存储器&#xff08;NVRAM&#xff09;中&#xff0c;直到针对每个DTC的相应监控器确定故障不再存…

如何使用ORJSONResponse增强FastAPI应用性能:转换任意类型为JSON

在FastAPI中&#xff0c;ORJSONResponse 是一种自定义响应类型&#xff0c;它使用 orjson 库来提高 JSON 数据的序列化性能。orjson 是一个快速且正确的 Python JSON 库&#xff0c;它支持 dataclass、datetime 和 numpy 等数据类型的序列化。使用 ORJSONResponse 可以提升 API…

打造民国风格炫酷个人网页:用HTML和CSS3传递民国风韵

附源码&#xff01;&#xff01;&#xff01; 感谢支持 小弟不断创作网站demo感兴趣的可以关注支持一下 对了 俺在结尾带上了自己用的 背景 大家可以尝试换一下效果更好哦~~~ 如何创建一个民国风格的炫酷网页 在这篇博客中&#xff0c;我们将展示如何制作一个结合民国风格和…

【Java文件操作】文件系统操作文件内容操作

文件系统操作 常见API 在Java中&#xff0c;File类是用于文件和目录路径名的抽象表示。以下是一些常见的方法&#xff1a; 构造方法&#xff1a; File(String pathname)&#xff1a;根据给定的路径创建一个File对象。File(String parent, String child)&#xff1a;根据父路径…

CANFD接口卡配套奇瑞上位机检测电池状态

随着汽车电子的高速发展&#xff0c;车内信息的急剧增多&#xff0c;传统的CAN总线的数据传输能力已经很难满足车辆ECU的数据传输需求了&#xff0c;此时CANFD就应运而生了。 CANFD和CAN最主要的区别就是CANFD的ID段和数据段能够以不同的速率传输数据&#xff0c;这就保证了即…

下一代 AI 医疗:知识图谱RAG + 多智能体,听医生的话没前途,让医生听你的话才是正道!

下一代 AI 医疗&#xff1a;知识图谱RAG 多智能体&#xff0c;听医生的话没前途&#xff0c;让医生听你的话才是正道&#xff01; 医疗算法趋势现代 AI 医疗算法问题医学影像算法的局限医疗知识图谱的问题基于最本质循证医学实现人类级因果推理摆脱LLM概率性输出 嘘&#xff0…

用python操作Excel表格(自动化办公)!

文章开始前打个小广告——分享一份Python学习大礼包&#xff08;激活码安装包、Python web开发&#xff0c;Python爬虫&#xff0c;Python数据分析&#xff0c;人工智能、自动化办公等学习教程&#xff09;点击领取&#xff0c;100%免费&#xff01; 一、openpyxl介绍安装 1.…

影刀RPA:考勤自动打卡小程序

上班族&#xff0c;最惊心动魄的一件事&#xff0c;是什么&#xff0c;当然是&#xff1a;打卡 即使你在智能手机上设置提醒&#xff0c;比如闹钟或者日历事件&#xff0c;提醒自己按时打卡&#xff0c;但依然会忘记 即使公司很开明&#xff0c;使用的考勤系统支持可以设置自…

五大注入攻击网络安全类型介绍

1. SQL注入&#xff08;SQL Injection&#xff09; SQL注入流程 1.1. 概述 SQL注入是最常见的注入攻击类型之一&#xff0c;攻击者通过在输入字段中插入恶意的SQL代码来改变原本的SQL逻辑或执行额外的SQL语句&#xff0c;来操控数据库执行未授权的操作&#xff08;如拖库、获取…

不可思议!这7个反共识设计原则,正悄然改变AI应用的未来格局!

引言 在AI技术日益成熟的今天&#xff0c;如何设计出既符合用户需求又具备高度智能化的原生应用&#xff0c;成为摆在开发者面前的重要课题。然而&#xff0c;传统的应用设计思维往往限制了AI潜力的充分发挥。本文提出的七个反共识观点&#xff0c;旨在挑战传统观念&#xff0…

如何优雅的使用 Nacos

简介 问题描述&#xff1a;Nacos 在某一版本后&#xff0c;Spring 官方不再对 Nacos 作版本适配&#xff0c;导致在使用配置中心时&#xff0c;无法导入配置 如何解决&#xff1a;使用 https://start.aliyun.com/ 问题复现 如何解决 新建模块时将服务器 URL 修改为 https://…

UE4_后期处理六—复古电视效果

效果图&#xff1a; 步骤&#xff1a; 1、让场景颜色与复古色相混合&#xff0c;采用强光混合模式&#xff0c;蓝图连接如下图&#xff1a; 效果图如下&#xff1a; 2、把上一章的扫描线效果拿过来&#xff0c;看看扫描线的蓝图节点&#xff1a; 效果图如下&#xff1a; 此效果…

数据为翼,智控未来:EasyCVR视频监控汇聚平台助力城市精准管理

在数字化浪潮席卷全球的今天&#xff0c;智慧城市的概念已不再遥不可及&#xff0c;而是逐步成为现代城市发展的核心驱动力。作为智慧城市的重要组成部分&#xff0c;视频监控系统正以前所未有的速度和规模覆盖城市的每一个角落&#xff0c;成为城市管理者手中的“千里眼”和“…