Mysql自增列,并发插入时导致死锁的问题

更新时间:2023-05-31 09:01:45 阅读: 评论:0

Mysql⾃增列,并发插⼊时导致死锁的问题
背景:
  有⼀张表需要每天定时迁移数据,采⽤的SQL如下(表名已调整)
inrt into  data_cache ( customerID,organizationID,createTime)
打印机清洗喷头怎么操作步骤(
lect  customerID,organizationID,createTime
from  data
where  DATE(createTime) <= DATE(?)
and  autoIndex >= ?
and  autoIndex <= ?
)
⼤体意思是根据autoIndex去判定那些数据需要迁移,在程序中已经分好区域了
⽐如1~100,101~200,201~300.
表结构如下:
婚姻法离婚规定两张表的数据表结构均⼀致,如:
CREATE TABLE `data` (
双曲线方程`customerID` varchar(50) NOT NULL COMMENT '客户编号',
`organizationID` varchar(50) DEFAULT NULL COMMENT '机构号',
`createTime` timestamp NULL DEFAULT current_timestamp() COMMENT '创建时间',
`lastModifiedDatetime` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '最近修改时间',
`autoIndex` int(11) NOT NULL AUTO_INCREMENT COMMENT '索引',
`modifyDate` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '修改⽇期',
八至PRIMARY KEY (`customerID`),什么是立体图形
KEY `autoIndex` (`autoIndex`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=468DEFAULT CHARSET=utf8
之前测试环境,甚⾄⽣产环境都是正常的代码,最近更新了数据库,出现了死锁异常如下:
inrt into  data_cache ( customerID,organizationID,createTime)
(
lect  customerID,organizationID,createTime
from  data
where  DATE(createTime) <= DATE(?)
and  autoIndex >= ?
and  autoIndex <= ?
)
关于元旦的作文Deadlock found when trying to get lock; try restarting transaction; nested exception is
问题:
    Mysql插⼊居然报了死锁,还是两条插⼊并发,在数据源没有交集的情况下,并且之前⼀直是正常。百思不得其解广西大专学校
尝试解决:
    移除掉缓存表中的autoIndex字段,取消⾃增以及⾮空。重试正常。
问题根源:
    其实真正的问题涉及到Mysql对⾃增的设计。
  详情可以参阅:
7级公务员  /JiangLe/p/6362770.html
  ⼤体就是数据库的模式对这种⾃增插⼊有3种设置。原有的环境以及⽣产为2,更新后改为1导致的。可以输⼊以下命令查看设置:
show global variables
innodb_autoinc_lock_mode 2
因为我们对连续没什么要求,所以采⽤性能最好的即可

本文发布于:2023-05-31 09:01:45,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/955697.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:问题   设置   死锁   导致   时间   并发   需要   迁移
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图