美文网首页
InnoDB引擎的行锁和表锁

InnoDB引擎的行锁和表锁

作者: 哈哈新开张 | 来源:发表于2018-10-28 20:35 被阅读0次

在Mysql中,Innodb数据引擎支持行锁和表锁,Myisam数据引擎只支持表锁


1 行锁和表锁

行锁是通过索引加载的,行锁是加在索引字段上的,如果该Sql语句没有使用索引,则会造成全表扫描使用表锁.

锁冲突:例如说事务A将某几行上锁后,事务B又对其上锁,锁不能共存否则会出现锁冲突。(但是共享锁可以共存,共享锁和排它锁不能共存,排它锁和排他锁也不可以) 死锁:例如说两个事务,事务A锁住了1~5行,同时事务B锁住了6~10行,此时事务A请求锁住6~10行,就会阻塞直到事务B施放6~10行的锁,而随后事务B又请求锁住1~5行,事务B也阻塞直到事务A释放1~5行的锁。死锁发生时,会产生Deadlock错误。

表锁: 不会出现死锁,发生锁冲突的几率高,并发低

行锁: 会出现死锁,发生锁冲突的几率低,并发高.

2 行锁的类型

行锁分共享锁和排它锁

共享锁(读锁): 当一个事务对某几行上读锁时,允许其他事务对这几行进行读操作,但不允许其进行写操作,也不允许其他事物给这几行上排它锁,但允许上读锁.

排它锁(写锁): 当一个事务对某几行上写锁时,不予许其他事务写,但允许读,更不允许其他事务给这几行上任何锁,包括写锁.

上共享锁的写法:select  math from zje where math>60 lock in share mode;
上排它锁的写法:select math from zje where math >60 for update;

3 行锁的实现

行锁必须使用索引才可以,否则会自动锁全表
两个事务不能锁同一个索引
insert ,delete , update在事务中都会自动默认加上排它锁

相关文章

  • MySQL技术内幕InnoDB存储引擎阅读相关笔记-锁

    一、InnoDB锁 对于MyISAM引擎来说,其锁是表锁。InnoDB引擎提供行锁。 1、InnoDB行锁 1)、...

  • InnoDB引擎的行锁和表锁

    在Mysql中,Innodb数据引擎支持行锁和表锁,Myisam数据引擎只支持表锁 1 行锁和表锁 行锁是通过索引...

  • mysql中引擎区别

    MyISAM表中的锁 MyISAM引擎中的读锁和写锁都是表锁级别的。 innoDB引擎 innodb引擎中的表锁是...

  • 文章总结(6)—数据库

    InnoDB和MyISAM存储引擎的区别 InnoDB使用的是行锁,MyISAM使用的是表锁; InnoDB支持事...

  • Innodb的锁

    Innodb的锁是行级锁 mysql delete是否会锁表 MySQL的InnoDB存储引擎支持行级锁,Inno...

  • MySQL中的锁

    MyISAM引擎只支持表级锁,InnoDB支持表级锁和行级锁。 MyISAM的Deadlock Free MyIS...

  • MySQL 锁问题

    MyISAM 和 MEMORY 存储引擎采用的是表级锁;InnoDB 存储引擎即支持行级锁,也支持表级锁,但默认情...

  • MySQL的锁分类以及使用场景

    myisam存储引擎默认是表级锁innodb存储引擎默认是行级锁DBD存储引擎默认是页面锁表级锁:开销小,加锁快;...

  • 锁的算法

    InnoDB的3种行锁算法 注意:这里说的是行锁,不是表锁,且这里讨论的是 InnoDB 引擎。 Record L...

  • MySQL知识集

    数据库引擎 Innodb和MyISAM的区别 Innodb 支持行锁 支持表锁 支持事务 支持外键 数据存储时索引...

网友评论

      本文标题:InnoDB引擎的行锁和表锁

      本文链接:https://www.haomeiwen.com/subject/xgumtqtx.html