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

网站开发与应用课程讨论wordpress升级php

网站开发与应用课程讨论,wordpress升级php,谷歌浏览器最新版本,昆明网络推广方式有哪些本文介绍了一个 MySQL 数据库死锁的案例和解决方案。 场景 生产环境出了一个偶现的数据库死锁问题#xff0c;导致少部分业务处理失败。 分析特征之后#xff0c;发现是多个线程并发执行同一个方法#xff0c;更新关联的数据时可能会出现#xff0c;把场景简化概括一下导致少部分业务处理失败。 分析特征之后发现是多个线程并发执行同一个方法更新关联的数据时可能会出现把场景简化概括一下 有一个数据表 tb1主键名 id有两条 id 分别为 A1 和 A2 的记录对应的外键 fk_biz_no 相同方法 myFunc整体是一个事务方法 myFunc 里的逻辑是先更新 tb1 里的一条记录执行一些逻辑后再更新该记录的外键对应的所有记录 这样 线程1 和 线程2 并发执行 myFunc 方法时示意如下 线程1 先更新 A1此时会对 A1 所在行加写锁再更新 A1 和 A2此时会同时给 A1 和 A2 所在行都加上写锁 线程2 先更新 A2此时会对 A2 所在行加写锁再更新 A1 和 A2此时会同时给 A1 和 A2 所在行都加上写锁。 如此一来如果出现类似以下的执行时序则会形成死锁 带着一点伪装的 ABBA 死锁。 解决方案 按照消除死锁条件的思路一般会想到将两个线程里的加锁顺序改为一致但是此场景并不完全适用。以下是几种可行的方案 方案一、对 myFunc 方法加分布式锁可以用需要更新的记录的 fk_biz_no 作为锁的 key这样同一个 fk_biz_no 的更新操作就会串行执行 方案二、在方法/事务的最开始就提前把 A1A2 的写锁申请到比如 SELECT ... FOR UPDATE然后再执行后续逻辑 方案三、优化 myFunc 方法里的逻辑先将 A1 和 A2 的数据都处理好了然后一次性更新 A1A2即将方法里的两次更新合并成一次更新 方案一 和 方案二 效果类似都是使同一 fk_biz_no 的更新操作串行了而方法三则是消除了 ABBA 的情况实际场景中有可能需要考虑并发执行下的数据混乱、数据覆盖的问题那是另外的话题了在此不展开。 小结 来一起复习下死锁的四个必要条件 互斥条件一个资源每次只能被一个进程使用请求与保持条件一个进程因请求资源而阻塞时对已获得的资源保持不放不剥夺条件进程已获得的资源在末使用完之前不能强行剥夺循环等待条件若干进程之间形成一种头尾相接的循环等待资源关系。 预防和消除死锁的思路则无非是消除上述四个条件中的一个或多个。
http://www.hkea.cn/news/14593382/

相关文章:

  • 微网站生成app自己做的网站网站搜索
  • 网站建设对企业重要性品牌网站分析
  • 工商局注册公司网站静态网站被同行使用
  • 展示型网站建设服务用.net做网站好_还是用php
  • 上海网站制作策wordpress首页刷新不变
  • 宁波网站建设icp备外贸网站演示
  • 写网站方案深圳网站 商城制作
  • 如何建设网站接收数据跨境外贸平台有哪些
  • 免费主机空间网站网络建设公司不只是
  • 有什么做衣服的网站七台河新闻直播
  • 网站建设中图片是什么上海网络推广产品
  • 七星彩网投网站建设河北邢台房价
  • 免费开源网站系统邯郸哪里做网站
  • 广告公司网站建设的定位学校网站开发与实现的解决思路
  • 如何在服务器上发布网站关于网站建设的电话销售话术
  • ppt做视频模板下载网站wordpress链接微博
  • seo网站优化工具大全基础网站建设代码
  • 学手机网站建设html5商城网站开发
  • 维护网站费用怎么做会计凭证公司推广做哪个网站吗
  • 怎么建设免费网站域名哪里有竞价推广托管
  • 上海千途网站建设移动应用开发专业学什么
  • 企业网站推广渠道营销公关
  • 网站开发项目架构柳州公司网站制作公司
  • 杭州论坛网站建设海淀周边网站建设
  • 免费软文网站中企动力公司待遇怎么样
  • 做网站一般用什么服务器wordpress返回404
  • 网络推广SEO优化网站建设什么网站立刻买东西
  • 网站建设淘宝店铺模板智慧团建学生登录入口官网
  • 西安百度推广网站建设北京到广州飞机
  • 适合做外链的网站安卓优化大师下载