MYSQL锁机制行锁、表锁、死锁的实现

一、MYSQL锁是什么?有什么类别

锁定义 :

  同一时间同一个资源只能被一个线程访问

 

乐观锁和悲观锁

乐观锁用的最多的就是数据库中的表加了一个标识字段 version 

例如 update text set  a=a+1 where id=100 and a>0

锁发分类

 

 

表锁和行锁

行锁必须要有索引才可以实现,否则会自动锁全表,那么就不是行锁了

两个事务不能锁同一个索引

insert delete  update 在事务中默认都会加上排它锁

表锁

不会出现死锁,发生冲突的几率高并发低

 

 

从对数据的操作类型分法(读或者写)

读锁(共享锁):针对同一分数据,可以多个读的操作可以同事进行

写锁(排它锁): 当前操作没有完成前,它会阻断其他的其他读锁和写锁;

 

什么是死锁?

 

产生场景:两个事务都有 select  for  update , a先锁记录1 ,再锁记录2 ;而b先锁记录2在锁记录1 

写锁 for update ,读锁 for my share mode show engine innodb status 

 

posted @ 2022-09-25 00:10  比特币大暴涨  阅读(170)  评论(0编辑  收藏  举报