广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中锁的概念是什么
  • 236
分享到

MySQL中锁的概念是什么

2024-04-02 19:04:59 236人浏览 八月长安
摘要

今天就跟大家聊聊有关Mysql中锁的概念是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。乐观锁乐观锁大多是基于数据版本记录机制实现,一般是给数据

今天就跟大家聊聊有关Mysql的概念是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

乐观锁

乐观锁大多是基于数据版本记录机制实现,一般是给数据库表增加一个"version"字段。读取数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。

比如下单操作:

查询出商品信息。

select (quantity, version)
from t_Goods
where id = #{id}

根据商品信息生成订单。

将商品数量减1。

update t_goods
set quantity = quantity - 1
where id = #{id} and version = #{version}

悲观锁

悲观锁依靠数据库提供的锁机制实现。mysql中的共享锁和排它锁都是悲观锁。数据库的增删改操作默认都会加排他锁,而查询不会加任何锁。

共享锁(读锁)

共享锁指的就是对于多个不同的事务,对于一个资源共享同一个锁。对某一资源加共享锁,自身可可读该资源,其他人也可以读该资源(也可以再加共享锁,即共享锁共享多个内存),但无法修改。要想修改就必须等所有共享锁都释放完之后。语法:select * from table lock in share mode;

比如:

窗口1,在一个未结束的事务中给一条数据加上共享锁。

BEGIN;
SELECT * FROM t_red_packet WHERE id = 1 LOCK IN SHARE MODE;

窗口2,给同一条数据加上共享锁,加锁成功。

SELECT * FROM t_red_packet WHERE id = 1 LOCK IN SHARE MODE;

窗口1和窗口2,更新该行数据,提示[Err] 1205 - Lock wait timeout exceeded; try restarting transaction。需要等到所有共享锁释放,才可以进行update操作。

UPDATE t_red_packet
SET user_id = 2

排它锁(写锁)

排它锁指的就是对于多个不同的事务,对同一个资源只能有一把锁。对某一资源加排它锁,自身可以进行增删改查,其他人无法进行加锁操作,更无法进行增删改操作。语法:select * from table for update

窗口1,在一个未结束的事务中给一条数据加上排它锁。

BEGIN;
SELECT * FROM t_red_packet WHERE id = 1 FOR UPDATE;

窗口1,更新该行数据,成功。

UPDATE t_red_packet
SET user_id = 2

窗口2,查询该行数据,可以查询到。

SELECT * FROM t_red_packet WHERE id = 1

窗口2给该条数据加锁,提示[Err] 1205 - Lock wait timeout exceeded; try restarting transaction

SELECT * FROM t_red_packet WHERE id = 1 FOR UPDATE;

综上,共享锁就是大家一起来读,一起来共享锁,但谁都不要对锁着的数据进行修改,排它锁就是我自己就是想来修改,你们可以读,但你们都不能到锁,也不能对数据进行修改。

行锁

行锁就是给一行数据进行加锁。

表锁

表锁就是对一张表进行加锁。

看完上述内容,你们对Mysql中锁的概念是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中锁的概念是什么

本文链接: https://www.lsjlt.com/news/55993.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中锁的概念是什么
    今天就跟大家聊聊有关MySQL中锁的概念是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。乐观锁乐观锁大多是基于数据版本记录机制实现,一般是给数据...
    99+
    2022-10-18
  • mysql锁机制的概念是什么
    本文小编为大家详细介绍“mysql锁机制的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql锁机制的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。My...
    99+
    2022-10-19
  • java中锁的概念是什么
    java中锁的概念是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;...
    99+
    2023-06-14
  • 死锁概念是什么
    死锁是指在并发计算中,两个或多个进程因为互相等待对方释放资源而陷入无限等待的状态,导致系统无法继续执行下去,死锁是一种资源竞争的情况,其中每个参与者都在等待其他参与者释放资源,但由于彼此之间的相互依赖,导致没有一个参与者能够继续执行。本教程...
    99+
    2023-08-17
  • mysql中odbc的概念是什么
    今天小编给大家分享一下mysql中odbc的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2022-10-19
  • mysql hint的概念是什么
    这篇文章主要介绍了mysql hint的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql hint的概念是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2022-10-19
  • mysql-connector的概念是什么
    这篇文章主要介绍“mysql-connector的概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql-connector的概念是什么”文章能帮助大家...
    99+
    2022-10-19
  • mysql workbench的概念是什么
    这篇文章主要讲解了“mysql workbench的概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql workbench的概念是什么”吧!...
    99+
    2022-10-19
  • mysql fabric的概念是什么
    本文小编为大家详细介绍“mysql fabric的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql fabric的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学...
    99+
    2023-04-07
    mysql fabric
  • mysql comment的概念是什么
    今天小编给大家分享一下mysql comment的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-04-19
    mysql comment
  • mysql锁与会话的概念
    这篇文章主要介绍“mysql锁与会话的概念”,在日常操作中,相信很多人在mysql锁与会话的概念问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql锁与会话的概念”的疑惑...
    99+
    2022-10-18
  • mysql主从的概念是什么
    这篇“mysql主从的概念是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql主...
    99+
    2022-10-19
  • MySQL 锁的一些简单概念
    1. 锁的粒度  在MySQL中,只要有多个请求需要在同一时刻修改数据,都会产生并发控制的问题。而锁的作用可以保证同一资源能被某个请求唯一使用。 加锁是会消耗系统资源的,包括获得锁、检查锁是否已解除、释放锁等等操作,都会增加系统的...
    99+
    2020-05-02
    MySQL 锁的一些简单概念
  • mysql触发器的概念是什么
    本篇内容介绍了“mysql触发器的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • mysql innodb double write概念是什么
    小编给大家分享一下mysql innodb double write概念是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!double write原理图如下:通过引入doublewrit...
    99+
    2022-10-18
  • jquery中$的概念是什么
    这篇文章主要讲解了“jquery中$的概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery中$的概念是什么”吧! ...
    99+
    2022-10-19
  • MySQL中CTAS(CREATE TABLE AS SELECTED)的概念是什么?
    CTAS,即“Create Table AS Select”脚本用于从现有表创建表。它复制表结构以及现有表中的数据。考虑以下示例,其中我们从名为“Employee”的现有表创建了名为 EMP_BACKUP 的表mysql> ...
    99+
    2023-10-22
  • mysql主从延迟的概念是什么
    这篇文章主要介绍了mysql主从延迟的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql主从延迟的概念是什么文章都会有所收获,下面我们一起来看看吧。MySQL内建的复制功能是构建大型、高性能应用...
    99+
    2023-06-27
  • MySQL重做日志的概念是什么
    今天小编给大家分享一下MySQL重做日志的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在事务的ACID特性中,原...
    99+
    2023-06-29
  • mysql全文索引的概念是什么
    这篇“mysql全文索引的概念是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysq...
    99+
    2023-05-25
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作