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

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

发布时间:2019-07-08 01:24:36 所属栏目:编程 来源:程序员圣经
导读:1、背景 对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大多数数据库通过锁和事务机制来实现,MySQL数据库也不例外

表user:

  1. CREATE TABLE `USER` (  
  2. `ID` INT(11) NOT NULL AUTO_INCREMENT,  
  3. `NAME` VARCHAR(300) DEFAULT NULL,  
  4. `AGE` INT(11) DEFAULT NULL,  
  5. PRIMARY KEY (`ID`)  
  6. ) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8 

下面演示事务1、事务2工作的情况:

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

这是一个简单的死锁场景,事务1、事务2彼此等待对方释放锁,InnoDB存储引擎检测到死锁发生,让事务2回滚,这使得事务1不再等待事务B的锁,从而能够继续执行。那么InnoDB存储引擎是如何检测到死锁的呢?为了弄明白这个问题,我们先检查此时InnoDB的状态:

  1. show engine innodb statusG 

------------------------

LATEST DETECTED DEADLOCK

------------------------

  1. 2018-01-14 12:17:13 0x70000f1cc000  
  2. *** (1) TRANSACTION:  
  3. TRANSACTION 5120, ACTIVE 17 sec starting index read  
  4. mysql tables in use 1, locked 1  
  5. LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)  
  6. MySQL thread id 10, OS thread handle 123145556967424, query id 2764 localhost root updating  
  7. update user set name='haha' where id=4 

*** (1) 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 5120 lock_mode X locks rec but not gap waiting  
  2. Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  3. 0: len 4; hex 80000004; asc ;;  
  4. 1: len 6; hex 0000000013fa; asc ;;  
  5. 2: len 7; hex 520000060129a6; asc R ) ;;  
  6. 3: len 4; hex 68616861; asc haha;;  
  7. 4: len 4; hex 80000015; asc ;; 

*** (2) TRANSACTION:

  1. TRANSACTION 5121, ACTIVE 12 sec starting index read  
  2. mysql tables in use 1, locked 1  
  3. 3 lock struct(s), heap size 1136, 2 row lock(s)  
  4. MySQL thread id 11, OS thread handle 123145555853312, query id 2765 localhost root updating  
  5. update user set name='hehe' where id=3 

*** (2) HOLDS THE LOCK(S):

  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  
  2. Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  3. 0: len 4; hex 80000004; asc ;;  
  4. 1: len 6; hex 0000000013fa; asc ;;  
  5. 2: len 7; hex 520000060129a6; asc R ) ;;  
  6. 3: len 4; hex 68616861; asc haha;;  
  7. 4: len 4; hex 80000015; asc ;; 

(编辑:核心网)

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

热点阅读