首页 > 数据库 >mysql batch insert 慢的问题排查过程

mysql batch insert 慢的问题排查过程

时间:2024-11-14 16:46:21浏览次数:1  
标签:insert eisrq batch Task3NewStructRedisQueueRunner ..... mysql

1,发现线上的queue入库很慢

因为我发现

2024-11-14 12:24:22.897 [] [Thread-47] INFO  com.hp.nova.runner.Task3NewStructRedisQueueRunner.run [93] : eisrq.getType()======3

.....

.....

.....

2024-11-14 12:25:57.653 [] [Thread-47] INFO  com.hp.nova.runner.Task3NewStructRedisQueueRunner.run [93] : eisrq.getType()======3

这个线程Task3NewStructRedisQueueRunner    负责batch insert struct表2000多条用了35多秒

一开始怀疑数据库问题,但是发现数据库服务器cpu很低,io也正常,并且show processlist也没有发现blocking的insert语句

然后我就自己写了个batch insert的语句直接在mysql batch insert也很快 不到1秒

 

后来发现了问题,不是mysql的问题,而是java服务的问题,在如下2个info logo之间打印了很多其他job的info,我猜测肯定是这个机器ec2是8核然后

 

2024-11-14 12:24:22.897 [] [Thread-47] INFO  com.hp.nova.runner.Task3NewStructRedisQueueRunner.run [93] : eisrq.getType()======3

.....

.....

.....

2024-11-14 12:25:57.653 [] [Thread-47] INFO  com.hp.nova.runner.Task3NewStructRedisQueueRunner.run [93] : eisrq.getType()======3

 

Task3NewStructRedisQueueRunner刚开始执行的时候就被其他的job thread抢占了,导致Task3NewStructRedisQueueRunner  这个thread被blocking了30多秒

后来终于发现了问题所在,如下所示本来应该一天执行一次的job被错误的配置成了2分钟一次,这个任务的计算量还挺大的,导致8核的cpu一直被它抢占,居然就这样线上2分钟一次

的大量抢占cpu还没有很慢。。。

taskAutoCompleteScheduleJob:
        switch: true
        cron: 0 */2 * * * ?

 

改成

 

taskAutoCompleteScheduleJob:
        switch: true
        cron: 0 0 1 * * ?

 

 

标签:insert,eisrq,batch,Task3NewStructRedisQueueRunner,.....,mysql
From: https://www.cnblogs.com/xiaohanlin/p/18546365

相关文章

  • [Mysql基础] 表的操作
    一、创建表1.1语法CREATETABLEtable_name(field1datatype,field2datatype,field3datatype)characterset字符集collate校验规则engine存储引擎;说明:field表示列名datatype表示列的类型characterset字符集,如果没有指定字符集,则以所在数据库的字......
  • 力扣-Mysql-3252-英超积分榜排名 II(中等)
    一、题目来源3252.英超积分榜排名II-力扣(LeetCode)二、数据表结构表:TeamStats+------------------+---------+|ColumnName|Type|+------------------+---------+|team_id|int||team_name|varchar||matches_played......
  • 深度学习中batch_size和epoch的区别
    batch_size和epoch是机器学习,尤其是在深度学习中,常见的两个超参数。它们的作用和意义有所不同,理解它们的区别有助于你更好地控制模型的训练过程。以下是它们的详细解释:1.BatchSize(批大小)batch_size是指在一次迭代中输入到神经网络中的样本数量。换句话说,它决定了每......
  • MySQL 数据库约束详解:确保数据完整性与一致性
    MySQL数据库约束详解:确保数据完整性与一致性在数据库设计中,约束(Constraints)是确保数据完整性和一致性的重要工具。MySQL提供了多种约束类型,包括非空约束、唯一约束、主键约束、检查约束、默认约束和外键约束。本文将详细介绍这些约束的作用、常用格式以及如何在创建数据表时熟......
  • MYSQL事务
    一、什么是事务事务(Transaction)是一组数据库操作的集合,这些操作要么全部执行成功,要么全部不执行。在MySQL中,事务确保了一组数据库操作的原子性,一致性,隔离性和持久性,简称ACID属性。原子性(Atomicity):原子性指事务中的所有操作要么全部执行成功,要么全部不执行。即事务不可......
  • MYSQL中JDBC的使用
    一、JDBC基础概念JDBC是Java中的一组API,用于执行SQL操作(例如CRUD操作:增、删、改、关系),同时可以和各种类型的数据库类型进行连接(MySQL、Oracle、SQLServer等)。JDBC是Java标准库的一部分,提供了与数据库进行交互的抽象接口。JDBC主要包含以下几个核心组件:Driver(驱动程......
  • navicat连接远程服务器docker的mysql容器时连不上报错
    报错:1130-HostxxxisnotallowedtoconnecttothisMySQLserver1.原因是root账户没有远程访问权限,先进mysql容器dockerexec-it你的容器id/bin/bash2.连接数据库,输入你的密码mysql-uroot-p3.切换到mysql数据库usemysql;4.更新用户表:(其中%的意思是允许所有的......
  • MySQL主从复制
    如果某个主库执行了很多sql操作,导致mysql-bin的位置很大,如下图从库设置同步的主库时,千万不能设置在这个binlog位置,否则后续的很多主库操作,在从库都会失败,报这种坐标位置等等的错误Coordinatorstoppedbecausetherewereerror(s)intheworker(s).Themostrecentfailure......
  • MySQL 中常见的几种高可用架构部署方案
    MySQL中的集群部署方案前言MySQLReplicationInnoDBClusterInnoDBClusterSetInnoDBReplicaSetMMMMHAGaleraClusterMySQLClusterMySQLFabric参考MySQL中的集群部署方案前言这里来聊聊,MySQL中常用的部署方案。MySQLReplicationMySQLReplication 是......
  • MySQL5.7新特性--官方高可用方案MGR介绍
    MGR简介MySQLGroupReplication(下简称:MGR)是MySQL官方推出的一种基于Paxos协议的状态机复制。在MGR出现之前,用户常见的MySQL高可用方式,无论怎么变化架构,本质就是Master-Slave架构。MySQL5.7版本开始支持无损半同步复制(losslesssemi-syncreplication),从而进一步提示数据复制......