mysql锁
用处:保证数据安全,处理并发访问
首先对mysql锁进行划分:
- 按照锁的粒度划分:行锁、表锁、页锁
- 按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现)
- 还有两种思想上的锁:悲观锁、乐观锁。
- InnoDB中有几种行级锁类型:Record Lock、Gap Lock、Next-key Lock
- Record Lock:在索引记录上加锁
- Gap Lock:间隙锁
- Next-key Lock:Record Lock+Gap Lock
InnoDB默认的是行级锁
乐观锁定义:(现实中用的较多)默认用户访问正在改变的数据的概率很小,直到修改完成准备提交所作的修改才会将数据锁住修改为再释放。
悲观锁定义:默认用户访问正在改变的数据的概率很大,会在数据修改时上锁,只有能数据修改后提交才能解锁让其他用户修改这个数据。使用悲观锁会让访问数据库的时间增加,并发性不好。
共享读锁(S锁):
如果一个事务对这个对象加了锁,当前事务只能进行读操作,其他事务也可以对这个对象加共享锁。
排他写锁(X锁):
加锁之后只能有一个事务对他做写操作和更新操作。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!