当前位置: 首页 > news >正文

做公司网站的服务费入什么费用wordpress超简洁主题

做公司网站的服务费入什么费用,wordpress超简洁主题,网站建设游戏公司,图纸设计平面图软件死锁的产生条件 互斥、请求和保持、不可剥夺、循环等待 MySQL锁类型 死锁复现 环境:Mysql 5.7版本,Innodb引擎,可重复度隔离级别 并发场景下使用duplicate key update插入或更新数据可能会造成死锁,下面就产生死锁的条件进行模…

死锁的产生条件

互斥、请求和保持、不可剥夺、循环等待

MySQL锁类型

在这里插入图片描述

死锁复现

环境:Mysql 5.7版本,Innodb引擎,可重复度隔离级别
并发场景下使用duplicate key update插入或更新数据可能会造成死锁,下面就产生死锁的条件进行模拟
表:

CREATE TABLE `song_rank` (`id` int(11) NOT NULL AUTO_INCREMENT,`songId` int(11) NOT NULL,`weight` int(11) NOT NULL DEFAULT '0',PRIMARY KEY (`id`),UNIQUE KEY `songId_idx` (`songId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

隔离级别:可重复度(RR)

select @@tx_isolation;

在这里插入图片描述

预先插入两条数据

idsongIdweight
11030
22030

在这里插入图片描述
关闭事务自动提交:

select @@autocommit;
set autocommit=0;

在这里插入图片描述

死锁场景一:

记录锁循环等待:如果两个事务并发读写相同行,会由于加锁时机的不同而造成死锁,导致其中一个事务执行失败(mysql可以配置自动检测死锁然后自动断开其中一个innodb_deadlock_detect)

## 事务一
# 第一步执行
begin;
insert into  song_rank(songId,weight) values(17,100) on duplicate key update  weight=weight+1;
# 第三步执行
insert into  song_rank(songId,weight) values(16,100) on duplicate key update  weight=weight+1;## 事务二
# 第二步执行
begin;
insert into  song_rank(songId,weight) values(16,100) on duplicate key update  weight=weight+1;
# 第四步执行
insert into  song_rank(songId,weight) values(17,100) on duplicate key update  weight=weight+1;
执行步骤事务一事务二锁状态
第一步begin; insert into song_rank(songId,weight) values(17,100) on duplicate key update weight=weight+1;事务一对17新增记录锁
第二步begin;insert into song_rank(songId,weight) values(16,100) on duplicate key update weight=weight+1;事务二对16新增记录锁
第三步insert into song_rank(songId,weight) values(16,100) on duplicate key update weight=weight+1;事务一等待事务二释放16的记录锁
第四步insert into song_rank(songId,weight) values(17,100) on duplicate key update weight=weight+1;事务二等待事务一释放17的记录锁,出现死锁

死锁场景二:

记录锁、间隙锁循环等待:在并发插入、更新同一条数据时,一个事务获取了记录锁,一个事务在等待记录排他锁,则事务在执行插入获取间隙锁是会造成死锁。

# 事务一
# 第一步执行
begin;
insert into  song_rank(songId,weight) values(17,100) on duplicate key update  weight=weight+1;
# 第四步执行
rollback# 事务二
# 第二步执行
begin;
insert into  song_rank(songId,weight) values(17,100) on duplicate key update  weight=weight+1;# 事务三
# 第三步执行
begin;
insert into  song_rank(songId,weight) values(17,100) on duplicate key update  weight=weight+1;
# 出现死锁
执行步骤事务一事务二事务三锁状态
第一步begin; insert into song_rank(songId,weight) values(17,100) on duplicate key update weight=weight+1;事务一对17新增记录锁
第二步begin;insert into song_rank(songId,weight) values(17,100) on duplicate key update weight=weight+1;事务二等待17记录锁
第三步begin;insert into song_rank(songId,weight) values(17,100) on duplicate key update weight=weight+1;事务三等待17的记录锁
第四步rollback;事务二获取17记录锁,事务三等待17记录锁,事务一获取间隙锁时需要等待事务三释放17记录锁,出现死锁

避免死锁

控制并发写入和更新;
先执行插入,捕获插入异常并处理更新数据;

http://www.yayakq.cn/news/66947/

相关文章:

  • gif放网站有锯齿wordpress调用指定分类文章
  • 网站开发服务费动易6.8网站头
  • 哪几个做内贸的网站比较好一点百度引流推广
  • 深圳H5网站开发互联网公司取名
  • 中国建设工程信息网官方网站游戏网页设计模板
  • 服装网站建设背景莞城建设小学网站
  • 衡水微信网站建设免费推广软件哪个好一点
  • 正规排名网站推广公司公司网站的制作公司
  • 网站建设类别动画制作流程
  • 网站开发 项目介绍做地方网站论坛
  • 6731官方网站下载给公司建网站
  • 详情页在线设计网站推荐安卓系统开发软件
  • 做网站还需要搜狗吗网站如何做容易收录
  • 禁止域名访问网站wordpress 自动升级
  • 山西网站建设网站二级域名搭wordpress
  • 外国人做的汉子网站可以直接玩游戏的网址
  • 网站不备案可以做淘宝客吗网站模版源码
  • 企业网站建设应遵守的原则商城全网推广运营公司
  • 网站建设服务商城杭州设计院排行榜
  • 全景旅游网站建设免费10大看盘软件
  • 洛阳做天然气公司网站广告公司好做吗
  • 高端网站建设公司报价奇葩网站100个
  • 做企业网站备案都需要什么资料展台设计展会展位设计
  • 北京站网站建设快速排名优化推广价格
  • 开发工程师网站开发工程师公司网站制作网络公司
  • 网站的界面设计做网站服务器多少钱
  • 彩票资讯网站建设网站蓝色绿色配色
  • 工商登记网站网页设计过程报告
  • 海南营销型网站建设昆山网站建设设计
  • 网站恶意点击兴化市住房和城乡建设局网站