美文网首页数据库数据库魔思学社
MYSQL的乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、页锁、和

MYSQL的乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、页锁、和

作者: 魔思科技 | 来源:发表于2018-08-07 21:20 被阅读20次

1. 乐观锁

乐观锁其实不会上锁。顾名思义,很乐观,它默认别的线程不会修改数据,所以不会上锁。只是在更新前去判断别的线程在此期间有没有修改数据,如果修改了,会交给业务层去处理。

2. 悲观锁

顾名思义,很悲观,就是每次拿数据的时候都认为别的线程会修改数据,所以在每次拿的时候都会给数据上锁。上锁之后,当别的线程想要拿数据时,就会阻塞,直到给数据上锁的线程将事务提交或者回滚。传统的关系型数据库里就用到了很多这种锁机制,比如行锁,表锁,共享锁,排他锁等,都是在做操作之前先上锁。

3. 共享锁

共享锁又称为读锁,一个线程给数据加上共享锁后,其他线程只能读数据,不能修改。

4. 排它锁

排他锁又称为写锁,和共享锁的区别在于,其他线程既不能读也不能修改。

5. 行锁

行级锁是 MySQL 中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突,其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁。

6. 表锁

表级锁是 MySQL 中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分 MySQL 引擎支持。最常使用的 MyISAM 与 InnoDB 都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。

7. 页锁

页级锁是 MySQL 中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突少,但速度慢。因此,采取了折衷的页级锁,一次锁定相邻的一组记录。BDB 支持页级锁。

8. 死锁

数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并 发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严重影响应用的正常执行。

想要获取更多干货解读或留有疑问,欢迎百度搜索【魔思工作室】或者关注、私信我们。

魔思工作室官网:mos01.com

查看原文

相关文章

  • MySQL的锁机制和加锁原理

    首先对mysql锁进行划分: 按照锁的粒度划分:行锁、表锁、页锁 按照锁的使用方式划分:共享锁、排它锁(悲观锁的一...

  • rails中乐观锁和悲观锁的使用

    MySQL乐观锁和悲观锁的介绍可以参考之前的一篇文章MySQL中的锁(行锁,表锁,乐观锁,悲观锁,共享锁,排他锁)...

  • mysql死锁

    首先对mysql锁进行划分:按照锁的粒度划分:行锁、表锁、页锁按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实...

  • 数据库的一些锁

    数据库锁的种类包括: ==行锁、表锁、共享锁、排它锁、乐观锁、悲观锁== 按照锁粒度划分,可以将锁划分成 行锁? ...

  • mysql 锁

    MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)https://crossoverjie.top/ht...

  • MS汇总

    数据库相关[MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)Mysql索引优化Mysql查询优化Mysq...

  • mysql锁

    mysql锁 性能:乐观锁,悲观锁 操作类型:读锁,写锁,都属于悲观锁 操作粒度:行锁,表锁 乐观锁:一种思想,通...

  • mysql锁记录

    mysql锁 性能:乐观锁,悲观锁 操作类型:读锁,写锁,都属于悲观锁 操作粒度:行锁,表锁 乐观锁:一种思想,通...

  • MySQL-浅析间隙锁

    MySQL 锁有哪些从类型上来看,可以分为共享锁、排它锁从范围来看,可以分为表锁、行锁,间隙锁、页锁等。其中表锁中...

  • MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)

    这几个锁按照属性可分为:乐观锁、悲观锁(共享锁,排他锁),行锁、表锁指的是锁粒度。 乐观锁乐观锁就是很乐观的认为,...

网友评论

    本文标题:MYSQL的乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、页锁、和

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