范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

mysql锁从实战中理解

  mysql锁可能是数据库知识篇幅中普遍比较难理解的一个知识点!以前对锁理解的也是停留在八股文的的阶段,经历了这次生产问题之后重新学习了[吐血]问题表现:
  早上刚到公司还没进入状态,就被拉进一个群(dba找上门了)说数据库有大量锁等待异常。
  代码中的sql: delete from order_point_line_statistics where ep_id = 376330219 and created_at <= "2022-12-15 00:00:00"Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction ### The error may exist in class path resource [mybatis/mapper/ext/OrderPointLineStatisticsExtMapper.xml]
  The error occurred while setting parameters ### SQL: delete from order_point_line_statistics where ep_id = ? and created_at <= ? ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction ; Deadlock found when trying to get lock; try restarting transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction事故现场
  场景是在并发消费kafka数据的时候,起了一个事务,事务里先插入今天的数据,然后删除数据;CREATE TABLE `ep` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT "主键",
  `ep_id` int(11) NOT NULL COMMENT "企业ID",
  `name` varchar(255) NOT NULL COMMENT "名称",
  `create_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",
  `update_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改时间",
  PRIMARY KEY (`id`),
  KEY `idx_ep_id` (`ep_id`) USING BTREE,
  KEY `idx_create_at` (`create_at`) USING BTREE
  ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
  Session1
  Session2
  Locks
  begin;
  begin;
  insert into ep(e_id, name, create_at) values(100, "stt", "2022-12-04 00:00:00");
  insert into ep(e_id, name, create_at) values(100, "ssd", "2022-12-04 00:00:00");
  select * from epG;
  id: 1
  e_id: 100
  name: shijie
  create_at: 2022-12-01 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 2
  e_id: 100
  name: jianfeng
  create_at: 2022-12-02 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 3
  e_id: 100
  name: syx
  create_at: 2022-12-03 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 4
  e_id: 100
  name: stt
  create_at: 2022-12-04 00:00:00
  update_at: 2023-01-01 05:41:47
  select * from epG;
  id: 1
  e_id: 100
  name: shijie
  create_at: 2022-12-01 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 2
  e_id: 100
  name: jianfeng
  create_at: 2022-12-02 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 3
  e_id: 100
  name: syx
  create_at: 2022-12-03 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 5
  e_id: 100
  name: ssd
  create_at: 2022-12-04 00:00:00
  update_at: 2023-01-01 05:44:46
  delete from ep where e_id=100 and create_at <= "2022-12-03 00:00:00";
  lock waiting&dead lock
  这里粘贴一张复现的图:
  事故还原
  初始化记录
  两个session分别执行一条插入后查看的锁记录:
  session1执行delete语句的锁记录:
  此时session2的锁记录:
  可以明显的看出:
  表中最大的记录id是6,事务中插入的记录id是15,session1锁住的记录id最大到10,其实当我存量数据id是连续的时候,session1会把我刚插入的id也会锁住,这也是我一直不理解的地方。
  google中提了一个问题:https://stackoverflow.com/questions/74972932/why-does-innodb-lock-more-records-when-range-deletion;大致回答的意思就是说:其实不管大范围还是小范围都一样 在根据ep_id和create_at筛选删除时,如果大范围时,会先挑ep_id=100先筛选 而且是边筛选边变锁,把筛到的结果就要锁住 ep_id=100的筛选结果包含session2的插入的数据 就锁等待了。思考:一:当我把delete语句中的时间范围缩小时,还是会锁住刚插入的记录吗?
  答案是不会的,只会锁住符合条件的记录。 我想这也是符合预期的锁记录。二:思考
  1)、把插入语句和删除语句调换位置
  在事务中先执行删除,虽然说session2也会产生锁等待,但是session1同样可以提交不会报错
  2)、删除不能使用二级索引,应尽量使用聚簇索引
  3)、如果初始化记录中的id不连续,sessio1执行delete语句的时候是不是不会锁住插入的记录
  Session1
  Session2
  Locks
  begin;
  begin;
  insert into ep(e_id, name, create_at) values(100, "stt", "2022-12-04 00:00:00");
  insert into ep(e_id, name, create_at) values(100, "ssd", "2022-12-04 00:00:00");
  select * from epG;
  id: 1
  e_id: 100
  name: shijie
  create_at: 2022-12-01 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 2
  e_id: 100
  name: jianfeng
  create_at: 2022-12-02 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 3
  e_id: 100
  name: syx
  create_at: 2022-12-03 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 4
  e_id: 100
  name: stt
  create_at: 2022-12-04 00:00:00
  update_at: 2023-01-01 05:41:47
  select * from epG;
  id: 1
  e_id: 100
  name: shijie
  create_at: 2022-12-01 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 2
  e_id: 100
  name: jianfeng
  create_at: 2022-12-02 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 3
  e_id: 100
  name: syx
  create_at: 2022-12-03 00:00:00
  update_at: 2023-01-01 05:31:13
  id: 5
  e_id: 100
  name: ssd
  create_at: 2022-12-04 00:00:00
  update_at: 2023-01-01 05:44:46
  delete from ep where e_id=100 and create_at <= "2022-12-02 00:00:00";
  no lock 三:如何解决
  先说下最终的解决方式是删除事务和删除动作;删除动作是通过另外的任务去执行。

安倍晋三94岁母亲,不是一位简单人物,野心勃勃,一门三首相01hr2022年7月8日上午12点,日本的一家高档养老院,传来了阵阵声嘶力竭的哭声。那声音听得悲切。这位嚎啕大哭的老人不是别人,正是安倍晋三94岁的母亲安倍洋子。此时的她正被两位31岁英国网红作家从瘾君子到励志演说家,从无家可归到百万富翁当一个人站在巅峰的时候,我们总是会仰望她的美丽,却不知她爬上巅峰前所经历的痛苦。据英国每日星报7月9日独家报道,近日,31岁英国网红作家娜塔莎格拉齐亚诺(NatashaGrazia张艺谋3000万急售别墅?中介6100万已卖给圈内人7月11日,网传著名大导演张艺谋要卖掉在无锡的一套大别墅。明星也好素人也罢,卖房变现倒也无可厚非,关键是张艺谋这套房子是挂牌急售!据房产中介透露,张艺谋的这套别墅光是装修就花了接近不管你多有钱,都要改掉这五种破财的习惯01hr明朝富豪沈万三有一条致富经货无定价,水无常形。任何东西的价格,都变化无常的,就像船在水中行驶,看似平静的水面,也会遇到漩涡和险滩。一个人越有钱,越要胆小甚微,别招摇过市,认实控人涉嫌刑事犯罪,全部股权被冻结!这家公司长期隐瞒不报,且净资产为负值,证监局开出罚单中国证监会北京监管局网站7月11日发布关于对北京电盈基金销售有限公司采取责令暂停办理相关业务行政监管措施的决定。北京电盈基金销售有限公司因在基金销售业务中存在多项问题,被采取责令暂杨幂遭代拍裙底!这些猥琐男太恶心。最近夏天一到,大街上的女孩子普遍穿得都比较清凉漏肤,近日,杨幂在片场时遭代拍恶意角度拍摄,在她走上楼梯的时,这些代拍以蹲下仰拍的姿势进行隐秘拍摄,而镜头所对的位置正好是杨幂的大腿处甄嬛为何会喜欢上果郡王?当你离婚了,又净身出户。要与刚生下不久的女儿分离,并且连女儿的探视权都没有。而那个所谓的女儿的爸爸,他一直只是把你当做亡妻的替身,只因你和他的亡妻长得相似,被你发现后,他说这是你的徐翔妻子一句话,2000亿巨头立马跌停中国基金报安曼10晚间,曾经的总舵主徐翔,他的妻子应莹发了关于天齐锂业的看法。11日早盘,2000亿锂矿大白马天齐锂业开盘重挫,截至发稿,已经被摁在跌停板上。消息面上,10日,应莹仙剑3播出13年,配角瘫痪退圈,6位主演的差距也越来越大今年可谓是个仙剑年,仙剑1宣布翻拍,仙剑4和仙剑6已经开机,还有传言说鹅厂手里拿着仙剑3的改编权,搞不好仙剑3也会被翻拍。小8真是求求各位剧方去发掘一些新剧本吧,别成天毁经典了,除大无语,集体摆烂贷款买房,房子烂尾了,房贷还要不要还?这几天,江西河南湖北等地多个烂尾楼盘的业主们,给银行和各个监管单位下了强制停贷告知书。意思是说,房子烂尾,贷款我们不还了,什么时候交房下证,什么时候再还房贷。贷款买房,房子烂尾了,谁能想到,幸福到万家最没出息的人,是两个受过教育的大学生赵丽颖罗晋等人主演的电视剧幸福到万家播到现在,很多人的本质已经一览无余。赵丽颖饰演的何幸福,活着就是为了一口气,她极度认理,是非黑白总要分出一个好坏来,管他对面站着的人是谁。罗晋饰
金星护航月亮船22日晚将上演星月童话天文科普专家介绍,2月22日傍晚,西南方低空将上演浪漫一幕明亮的金星与极细的月牙近距离相伴,赏心悦目,煞是好看。金星伴月是最好看的星月童话,这是因为通常情况下,金星和月亮是夜空中最唐景丽教书育人是初心也是使命视频加载中第十四届全国人大代表唐景丽,是河北省沧州市第十六中学校长党支部书记。从教二十七年,她默默耕耘三尺讲台,坚守为党育人为国育才的初心使命。走上校长岗位三年多来,唐景丽把学校当14上帝的烛台上帝要从一些小孩子里面挑选出来几个,让他们成为天使。他来到人间,给每个小孩一人一个神奇的烛台,叫他们保持烛台光亮,一尘不染,说只有这样,烛光才会一直不灭。等过些日子的时候,他再来取事关ChatGPT!紧急预警!ChatGPTChatGPT爆火!真真假假教你一眼识破三分钟教你练就火眼金睛最近有没有听过一个词ChatGPT每个人似乎都在谈论这个爆火的软件就像打开罐子释放出精灵一样围绕它的是无2023iPad键盘平替品怎么选iPadProAir键盘有哪些?iPad键盘其实也算作一件提高生产力的工具,就像电容笔一样都是输入工具。电容笔适合在文本上涂涂画画,能提高用iPad在学习场景的效率。而键盘则是带可灵感创作体验mac操作或者课堂高很多中国人正热衷把玩美国AI,却不知已落入一个情报巨网导读近年来,人工智能成为热议话题,美国许多智库也注意到其在情报领域的潜力。特别是人工智能对开源情报(Opensourceintelligence)的重要性日益凸显,美国情报界正密切教人如何坐地铁买咖啡走红日常何以成爆款?文静子如何坐地铁如何吃麦当劳如何一个人去医院看病近日,短视频博主打工仔小张因拍摄都市生活日常而迅速出圈,一个月内涨粉百万,被网友戏称为社会生存学顶流。被绝大多数人视为日用而不觉的常狂飙被人民日报点名,不是夸是批评,言辞犀利直戳剧方肺管!狂飙落幕有一段时间了。这部剧打响了2023年电视剧市场第一炮,刚开始效果一般,随着剧情的发展,剧如其名开始一路狂飙。热度和口碑甚至超过了去年现象级大爆的人世间,以及同题材扫黑风暴。初春黄河2月19日,在黄河流域的陕西省渭南市合阳段拍摄的黄河滩涂(无人机照片)。最近,九曲黄河流经陕西省渭南市的合阳段春暖河开。新华社发(赵哓罡摄)2月19日,在黄河流域的陕西省渭南市合阳17万次找寻和2万个团圆视频加载中(点击观看视频)01hr80后外卖骑手洪成木做外卖骑手这四年,我给很多家庭送过餐,也送了82个人回家吃团圆饭。寻人志愿者洪成木洪成木福建泉州的一名外卖骑手。2019年1月两岸和平发展论坛反对台美勾连呼吁两岸恢复正常交流来源中国新闻网中新社台北2月20日电针对美国与台独分裂势力勾连挑衅升级破坏台海和平稳定,两岸和平发展论坛20日发表声明表示抗议与谴责,并呼吁推动两岸和平对话恢复正常交流。声明指出,