# 前言

其实mysql锁本身内容并不多, 但是如果没有系统的学习, 容易产生误解, 也更容易走弯路, 从而认为mysql锁的知识晦涩难懂. 基于此, 我准备把自己对于锁的理解的相关内容都做一个记录, 同时也是一个分享.

# 简说mysql相关的锁种类

数据库相关的锁大概有以下几种

  1. 共享锁
  2. 排他锁
  3. 意向共享锁
  4. 意向排他锁
  5. 乐观锁
  6. 悲观锁

而数据库本身所提供的, 有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
修改于: 8/11/2022, 3:17:56 PM