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. 复杂的事务处理

(需要对多行素具进行复杂的处理,可以使用行锁来锁定这些行,防止处理过程中被其他的事务修改)

相关推荐

  1. mysql 知识简述

    2024-03-23 16:52:03       44 阅读
  2. mysql基本知识

    2024-03-23 16:52:03       41 阅读
  3. C#各种知识

    2024-03-23 16:52:03       24 阅读
  4. 关于Mysql知识整理,全面了解Mysql规则

    2024-03-23 16:52:03       42 阅读
  5. mysql知识

    2024-03-23 16:52:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 16:52:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 16:52:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 16:52:03       82 阅读
  4. Python语言-面向对象

    2024-03-23 16:52:03       91 阅读

热门阅读

  1. 复试专业前沿问题问答合集14——自然语言处理

    2024-03-23 16:52:03       43 阅读
  2. 某笔试题记录

    2024-03-23 16:52:03       36 阅读
  3. C#使用Poll/Select实现多路I/O复用

    2024-03-23 16:52:03       41 阅读
  4. LeetCode20:括号匹配

    2024-03-23 16:52:03       38 阅读
  5. Neo4J导入OWL文件

    2024-03-23 16:52:03       38 阅读