mysql 锁的知识点简述

1 . mysql 全局锁

mysql 全局锁主要是针对整个数据库的锁,最常用的全局锁是读锁与写锁

读锁 (共享锁)

1.1 读锁 (共享锁) : 他阻止其他用户更新数据,但允许他们读取数据,在你需要的时间内,保持数据的一致性

写锁 (排它锁)

1.2 写锁 (排它锁) : 它阻止其他用户读取和更新数据,在你需要修改一些大量数据,并且不希望其他的用户在这段时间内干扰时很有用

例如 : 数据库 , 全库备份,全库导出

2 . 表锁

表级锁,是mysql 中最基本的锁策略,是mysql最早采用的所策略, 表级锁的特点是开销小,枷锁快,不会出现死锁, 锁定粒度大,发生锁冲突的概率最高,并发度最低

2.1 表共享读锁(表读锁) (Table Read Lock)

又称为表读锁,允许一个事务锁定的表进行读取操作,不允许其他事务对其写操作,但是可以进行读操作,读锁之间是不会相互阻塞的

2.2 表独占写锁(表写锁)(Table Write Lock)

又称为表写锁,允许一个事务锁定的表进行读取和写入(更新)操作,但是其他任何事物都不能对该表进行任何操作,必须等待表写锁结束,写锁,会阻塞其他所有锁,包括读锁和写锁

2.3 使用场景

1 : 读密集型应用

2 : 写操作不频繁的应用

3 : 数据量不大的,业务简单的应用

4 : 全表更新或者删除

2.4 那些命令会触发表所

1 : Alter Table (更改表结构,修改表,改变列的类型)

2 : drop table(删除表) 和 truncate table (删除表数据)

3 : Lock tables : 显性的为一个表或者多个表,加上读锁与表所

样例 : lock tables t1 write ,t2 read;

4 : 全局扫描或大范围扫描

5 : Flush tables with read lock(FTWRL) (全表加锁,会话期间不能修改)

注意: InnoDB 存储引擎主要使用行级锁

,

2.5 表锁风险点

1 : 性能下降,(并发情况下,大量请求阻塞,性能下降)

2 : 并发性能差 ( 一个线程获取读锁,其他线程读写操作都会被阻塞)

3 : 可能导致锁等待和超时 (并发环境,表锁粒度大,很多线程等待,等待时间过长, 导致锁超时)

4 : 写操作影响大 ( 大量的写操作或者更新操作,占有锁,阻塞所有读写操作,一直等到结束 )

5 : 死锁的可能性(表所本身不会出现死锁,如果多表操作,没有按照一个顺序获得锁,可能会导致死锁 )

3 行锁

行级锁粒度小,并发处理高,(更好的并发性,和更少的锁冲突,需要更多的内存和CPU资源,有InnoDB存储引擎提供,InnoDB支持两种类型的行级锁 1,共享锁(S锁),2 排他锁(X锁))

3.1 共享锁(S锁)

共享锁 也称 读锁, 一个事务读取一行, 一行数据被共享锁,锁定, 其他事务,只能读操作,不能写操作,

3.2 排它锁(X锁)

排它锁又称写锁 , 他允许一个事务读写操作, 不允许其他事物,进行读写操作

3.3 mysql 行锁 - 使用场景

1 . 高并发读写操作

(高并发读写操作场景,行锁可以提高性能和并发性,因为它允许多个事务,操作不同行的数据)

2. 单行操作

3 . 短期锁

(对数据进行短期锁定,行级锁可以防止长时间阻塞其他事物)

4 . 实现并发控制

5. 复杂的事务处理

(需要对多行素具进行复杂的处理,可以使用行锁来锁定这些行,防止处理过程中被其他的事务修改)
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值