加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL在并发场景下的问题及解决思路

发布时间:2019-07-07 15:44:54 所属栏目:编程 来源:程序员圣经
导读:1、配景 对付数据库体系来说在多用户并发前提下进步并发性的同时又要担保数据的同等性一向是数据库体系追求的方针,既要满意大量并发会见的需求又必需担保在此前提下数据的安详,为了满意这一方针大大都数据库通过锁和事宜机制来实现,MySQL数据库也不破例

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:

  1. RECORD LOCKS space id 94 page no 3 n bits 80 index PRIMARY of table `test`.`user` trx id 5121 lock_mode X locks rec but not gap waiting  
  2. Record lock, heap no 7 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  3. 0: len 4; hex 80000003; asc ;;  
  4. 1: len 6; hex 0000000013fe; asc ;;  
  5. 2: len 7; hex 5500000156012f; asc U V /;;  
  6. 3: len 4; hex 68656865; asc hehe;;  
  7. 4: len 4; hex 80000014; asc ;; 

*** WE ROLL BACK TRANSACTION (2)

InnoDB状态有许多指标,这里我们截取死锁相干的信息,可以看出InnoDB可以输出最近呈现的死锁信息,着实许多死锁监控器材也是基于此成果开拓的。

在死锁信息中,表现了两个事宜守候锁的相干信息(蓝色代表事宜1、绿色代表事宜2),重点存眷:WAITING FOR THIS LOCK TO BE GRANTED和HOLDS THE LOCK(S)。

WAITING FOR THIS LOCK TO BE GRANTED暗示当前事宜正在守候的锁信息,从输出功效看失事宜1正在守候heap no为5的行锁,事宜2正在守候 heap no为7的行锁;

HOLDS THE LOCK(S):暗示当前事宜持有的锁信息,从输出功效看失事宜2持有heap no为5行锁。

从输出功效看出,最后InnoDB回滚了事宜2。

那么InnoDB是怎样搜查出死锁的呢?

我们想到最简朴要领是若是一个事宜正在守候一个锁,假如守候时刻高出了设定的阈值,那么该事宜操纵失败,这就停止了多个事宜互相耐久待的环境。参数innodb_lock_wait_timeout正是用来配置这个锁守候时刻的。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读