数据库的行级锁与表锁?

简介: 表锁:存储引擎在SQL数据读写请求前对涉及的表加锁,分共享读锁和独占写锁,读锁阻塞写,写锁阻塞读写,易发锁冲突,并发性低。行级锁:InnoDB支持,通过索引加锁,提高并发性,但可能引起死锁,需注意索引使用,适用于避免不可重复读场景。

表锁:
不会出现死锁,发生锁的冲突几率高,并发性低。 存储引擎在进行SQL数据读写请求前,会对涉及到的表进行加锁。 其中锁分为共享读锁和独占写锁:读锁会阻塞写,写锁会阻塞读和写。
行级锁:
会出现死锁,发生锁的冲突几率低,并发性高。 InnoDB引擎支持行锁,与Oracle不同,MySQL的行锁是通过索引加载的,也就是说,行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁,此时其它事务无法对当前表进行更新或插入操作。
行级锁注意事项:
行级锁必须有索引才能实现,否则会自动锁全表,那就不是行锁了。 两个事务不能锁同一个索引。 insert,delete,update在事务中都会自动默认加上排它锁。
行锁的适用场景:
避免不可重复读的场景。

目录
相关文章
|
存储 关系型数据库 MySQL
Mysql数据库—事务和锁
Mysql数据库—事务和锁
|
6月前
|
SQL 存储 关系型数据库
MySQL数据库——锁-表级锁(表锁、元数据锁、意向锁)
MySQL数据库——锁-表级锁(表锁、元数据锁、意向锁)
246 0
|
关系型数据库 MySQL 数据库
Mysql 的全局锁和表级锁
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。行级锁比较复杂,这篇文章就先分享全局锁和表级锁。还有就是需要说明的是,锁的设计比较复杂,文章中基本不会出现锁的具体实现细节,主要介绍的是碰到锁时的现象和其背后的原理。
Mysql 的全局锁和表级锁
|
7月前
|
SQL 存储 关系型数据库
MySQL表锁、行锁、排它锁和共享锁
MySQL表锁、行锁、排它锁和共享锁
86 0
MySQL表锁、行锁、排它锁和共享锁
|
7月前
|
SQL 关系型数据库 MySQL
Mysql锁之——全局锁、表锁
Mysql锁之——全局锁、表锁
|
7月前
|
SQL 关系型数据库 MySQL
⑩⑦【MySQL】锁:全局锁、表级锁、行级锁
⑩⑦【MySQL】锁:全局锁、表级锁、行级锁
79 0
|
存储 关系型数据库 MySQL
Mysql数据库(2)—事务和锁
Mysql数据库(2)—事务和锁
142 0
Mysql数据库(2)—事务和锁
|
SQL 存储 Oracle
数据库的行级锁与表锁?
数据库的行级锁与表锁?
70 0
|
数据库
数据库的行级锁和表锁
数据库的行级锁和表锁
149 0
|
存储 SQL 关系型数据库
对于数据库而言,其锁范围可以分为全局锁 、表级锁、 行级锁
对于数据库而言,其锁范围可以分为全局锁 、表级锁、 行级锁