首页 > 其他分享 >percona系列~pt-osc导致的死锁

percona系列~pt-osc导致的死锁

时间:2023-04-28 11:15:39浏览次数:29  
标签:加锁 pt into replace 死锁 percona osc 主键

一 现象
    数据库运维平台执行DDL操作导致了死锁问题
二 死锁日志关键点
   1 事务包含语句 replace into (更新操作)
   2 事务等待锁 lock mode AUTO-INC waiting
三 过程执行语句
   1 pt-osc INSERT LOW_PRIORITY IGNORE INTO
     持有 AUTO-INC 锁 申请 主键行锁(x)
  2 触发器 replace into
    持有 主键行锁(x) 等待 auto-inc锁
    可以发现 互相等待形成死锁
四 分析
  1 replace into 加锁方式
    会对主键相关记录加X锁,针对冲突的记录,会执行delete+insert操作.后续申请auto-inc锁
  2 insert into 加锁方式
   1 申请 auto-inc(表级锁) 加锁 2 释放auto-inc加锁 3 获取 INSERT INTENTION LOCK(插入意向锁) 4 存在冲突,针对冲突主键添加S锁,最后针对行获取X锁
四 解决方法
  1  设置pt-osc的chunk-size为更小的值 可以减少死锁的发生,但是不可能避免死锁的发生。
  2  innodb_autoinc_lock_mode的值为2
  3  mysql版本为8.0.18以上版本
 4   其本质还是由于触发器的replace into语句导致的

标签:加锁,pt,into,replace,死锁,percona,osc,主键
From: https://www.cnblogs.com/danhuangpai/p/13043968.html

相关文章

  • HTML中script 标签中的那些属性
    在HTML中,<script>标签用于嵌入或引用JavaScript代码。在<script>标签中,有两个属性可以用来控制脚本的加载和执行方式:async和defer。当然这也是常见的一道面试题,async 和 defer的作用和区别。async和defer属性都可以用于异步加载脚本,从而避免了在加......
  • CISP_PTE学习
    一、http协议的基础知识(请求方法、状态码、响应头信息、协议的URL) 1、请求方法:(1)http1.0请求包含head、get、post(2)http1.1请求包含head、get、post、options、put、delete、trace、connect(3)get请求的标准格式是:<路径>【?<arg1>=<value1>[&<arg2>=<value2>....]】,例如h......
  • Docker获取Let`s Encrypt SSL 证书
    文中的操作都是在CentOSStreamrelease9下执行的,使用的是root用户。1.安装docker#卸载原有的dockeryumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engine#安装依赖yuminstall......
  • pta情人节
    #include<bits/stdc++.h>usingnamespacestd;typedefstruct{stringname;}Name;intmain(){Namenum[1000];inti=0;while(1){ cin>>num[i].name; if(num[i].name!="."){ i++;}elsebreak;......
  • JAVA面向对象程序设计_PTA题目集04-06总结分析
    前言:JAVA_BLOG_PTA题目集4-6_总结分析 题目集四:知识点:大体如预备知识,即:通过查询JavaAPI文档,了解Scanner类中nextLine()等方法、String类中split()等方法、Integer类中parseInt()等方法的用法,了解LocalDate类中of()、isAfter()、isBefore()、until()等方法的使用规则,了解Chro......
  • js javascript js隐藏页面上有id的控件,隐藏页面上无控件包含的文字,控制页面控件属性
    1.隐藏页面上有id的控件varinput=document.getElementsByTagName("input");//获取页面所有inputfor(vari=0;i<input.length;i++){if(input.item(i).id.indexOf("txt")>=0)//判断input的id中是否包含txt字符串{......
  • 解决 Error querying database. Cause: org.postgresql.util.PSQLException: ��������: �û� "p
    最近做数据库作业做得很崩溃,本来就没学过java,结果还要用mybatis+servlet+jsp,,,,,没办法还是得学啊TT遇到个特别无语的报错:###Errorqueryingdatabase. Cause:org.postgresql.util.PSQLException:��������:�û�"postgres"Password��֤ʧ��###Theerrormayexistincom/test/entity/gra......
  • pta__【CPP0025】以点类Point及平面图形类Plane为基础设计圆类Circle
    #include<iostream>usingnamespacestd;//点类PointclassPoint{private:doublex;doubley;public:Point(doublexv=0,doubleyv=0);/*构造函数*/Point(constPoint&p);/*拷贝构造*/~Point();/*析构函数*/virtualvoi......
  • Ipopt 安装与使用
    Ipopt简介Ipopt(InteriorPointOPTimizer)是一个开源的大规模非线性问题求解器。支持WindowsUbuntu和MacOS操作系统,求解问题的形式如下所示: 其中,f(x)是目标函数,g(x)是约束函数,f(x)和g(x)可以是非线性、非凸的,但是必须是二阶连续可导的。对于x的等式约束,可以将g_L和g_U设置......
  • 必须经典GPT4.0
    学习C#编程,有一些经典的教材和资源值得关注。下面列出了一些建议供你参考:1.《C#编程黄皮书》(C#ProgrammingYellowBook):RobMiles编著的这本书是学习C#的经典教材,适合初学者。书中详细介绍了C#的基本概念和编程技巧,同时也涵盖了面向对象编程等高级主题。2.《C#7.0inaNu......