# 前言
其实mysql锁本身内容并不多, 但是如果没有系统的学习, 容易产生误解, 也更容易走弯路, 从而认为mysql锁的知识晦涩难懂. 基于此, 我准备把自己对于锁的理解的相关内容都做一个记录, 同时也是一个分享.
# 简说mysql相关的锁种类
数据库相关的锁大概有以下几种
- 共享锁
- 排他锁
- 意向共享锁
- 意向排他锁
- 乐观锁
- 悲观锁
而数据库本身所提供的, 有1234, 乐观锁悲观锁都是由自己去实现的.
# 简介锁
# 共享锁(S)
共享锁: 又可以被称作"读锁", 多个事务都可以对同一行数据加共享锁, 但不允许其他事务锁的加持. 查询不会加任何锁, 包括共享锁
#共享锁显示使用方式
select user_id,user_name from user lock in share mode
# 排他锁(X)
排他锁: 当一行数据被加上排他锁后, 不允许再加任何锁. 任何
增删改都会加排他锁所执行的select语句一定要走索引, mysql是通过索引来加锁的, 如果没有走索引会锁表.
#排他锁显示使用方式
select user_id,user_name from user where user_id = 123 for update