返回顶部
首页 > 资讯 > 数据库 >Innodb锁定读是什么
  • 937
分享到

Innodb锁定读是什么

2024-04-02 19:04:59 937人浏览 薄情痞子
摘要

这篇文章主要介绍“Innodb锁定读是什么”,在日常操作中,相信很多人在Innodb锁定读是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Innodb锁定读是什么”的疑惑

这篇文章主要介绍“Innodb定读是什么”,在日常操作中,相信很多人在Innodb锁定读是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Innodb锁定读是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如果查询数据,接着在相同的事务中插入或者修改相关数据,常规的select语句不能保护数据不被其他事务修改。其他事务可以更新或者删除刚才查询事务中相同的行。

InnoDB支持2种类型的锁定读:

1、SELECT ... LOCK IN SHARE MODE设置一个共享S锁在被查询的行上。其他会话能读取这些行,但是不能修改相应行的数据,直到此事务结束。如果其他事务对相应的行进行了DML操作,而未结束事务前,那当前事务中进行SELECT ... LOCK IN SHARE MODE将一直等待,直到另外的事务完成。

2、SELECT ... FOR UPDATE设置一个排他X锁在相应的行上。按照索引进行select for update查询时,会锁住相关的索引条目和行数据。同样的,此期间其他事务对相关的行进行更新、SELECT ... LOCK IN SHARE MODE、在某些事务隔离级别读数据都将会被堵塞,但一致性读会忽略存在的任何锁,因为老版本的数据不能被锁定,它们通过undo log在内存中构造数据的拷贝。

 

注意:使用锁定读操作的时候,必须开启事务(可以通过START TRANSACTioN或者set autocommit=0来开启事务),锁定读相关的锁在事务commit或者rollback时,都会立即释放。如果没有开启事务,则相关的行不会被锁定。


用法举例

假如要往子表插入一条记录,插入前首先要确认一下父表有无相关记录,只有在父表有对应记录时插入才能满足应用数据的完整性约束。如果使用一致性非锁定读来检查父表相应的记录,而在往子表插入对应数据的瞬间,其他会话的事务刚好在你查询父表之后插入子表之前删除或者修改了刚才查到的行,这样接下来的插入操作将可能会不能顺利的完成。

可以使用LOCK IN SHARE MODE进行锁定读,来避免此潜在的问题。如下:

SELECT * FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE;

在父表使用LOCK IN SHARE MODE进行查询到jones,此时你能安全的在子表中插入jones相关的数据。此期间如果有其他会话事务视图DML父表中相应的行将会被阻塞,直到你的完成你的操作后结束锁定读的事务,这样可以保证父表、子表的数据的一致性。

另外一个场景,如有两个session需要读取某表A中的一行,在成功读取后在同一事务中更新该行,并在另外的表B中插入刚开始读取到的行。若此时使用SELECT...LOCK IN SHARE MODE则会对读取到A表的记录加S锁,两个session在同时申请X锁进行更新时便发生死锁。另外,由于读取到了A表同一行内容,两个session在向同一表B插入数据时会导致键重复的错误。这种情况下用LOCK IN SHARE MODE不是好的办法,而使用SELECT...FOR UPDATE较合适,在读取的时候阻塞其他事物的读和更新请求。

到此,关于“Innodb锁定读是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: Innodb锁定读是什么

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

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

猜你喜欢
  • Innodb锁定读是什么
    这篇文章主要介绍“Innodb锁定读是什么”,在日常操作中,相信很多人在Innodb锁定读是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Innodb锁定读是什么”的疑惑...
    99+
    2024-04-02
  • 怎么理解Innodb一致性非锁定读
    这篇文章主要讲解了“怎么理解Innodb一致性非锁定读”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Innodb一致性非锁定读”吧!一致性非锁定读指...
    99+
    2024-04-02
  • MySQL数据库InnoDB引擎行级锁锁定范围是什么
    这篇文章主要介绍MySQL数据库InnoDB引擎行级锁锁定范围是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!         ...
    99+
    2024-04-02
  • MySQL知识点之InnoDB中的行级锁是什么
    今天小编给大家分享一下MySQL知识点之InnoDB中的行级锁是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • 电脑锁定指的是什么
    本文小编为大家详细介绍“电脑锁定指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“电脑锁定指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2023-02-21
    电脑
  • 电脑锁定是什么意思
    在计算机术语中,"锁定"(Lock)通常指的是对计算机或计算机系统进行安全保护的操作。当计算机被锁定时,用户必须...
    99+
    2023-08-22
    电脑
  • mysql中innoDB锁有什么主要作用
    下文给大家带来有关mysql中innoDB锁有什么主要作用内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完mysql中innoDB锁有什么主要作用你一定会有所收获...
    99+
    2024-04-02
  • mysql用户锁定解锁的方法是什么
    要锁定或解锁MySQL用户,可以使用以下方法:1. 锁定用户:- 使用root账户登录MySQL数据库。- 运行以下命令将用户锁定:...
    99+
    2023-09-29
    mysql
  • Mysql InnoDB的锁定机制实例详解
    1.InnoDB的锁定机制 InnoDB存储引擎支持行级锁,支持事务处理,事务是有一组SQL语句组成的逻辑处理单元,他的ACID特性如下: 原子性(Atomicity): 事务具有原子不可分割的特性,要么一起...
    99+
    2022-05-18
    mysql innodb锁定 mysqlinnodb mysql排他锁
  • Java实现读写锁的原理是什么
    本文小编为大家详细介绍“Java实现读写锁的原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java实现读写锁的原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。读/写锁Java实现首先我们总结一...
    99+
    2023-06-29
  • java读写锁的工作原理是什么
    读写锁是一种特殊的锁机制,允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。读写锁的工作原理如下: 当一个线程想要读取...
    99+
    2024-04-03
    java
  • java读写锁的使用方法是什么
    在Java中,读写锁是一种特殊的锁,允许多个线程同时读取共享资源,但只允许一个线程进行写操作。读写锁通过ReadWriteLock接...
    99+
    2024-04-03
    java
  • 怎么使用innodb行锁
    本篇内容主要讲解“怎么使用innodb行锁”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用innodb行锁”吧! 三种级别r...
    99+
    2024-04-02
  • innodb行锁怎么实现
    InnoDB行锁是通过锁定索引记录来实现的。具体实现方式如下:1. 当事务A需要对某一行记录加锁时,InnoDB会在该行对应的索引上...
    99+
    2023-09-15
    innodb
  • MySQL中InnoDB事务锁阅读锁信息状态的示例分析
    这篇文章主要介绍了MySQL中InnoDB事务锁阅读锁信息状态的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2024-04-02
  • mysql中的innodb是什么
    mysql中的innodb是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。innodb简介InnoDB,是MySQL的数据库引擎之一,...
    99+
    2024-04-02
  • Innodb undo结构是什么
    本篇内容介绍了“Innodb undo结构是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、大体结构...
    99+
    2024-04-02
  • mysql innodb指的是什么
    这篇文章主要讲解了“mysql innodb指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql innodb指的是什么”吧! ...
    99+
    2023-05-25
    mysql innodb
  • java读写锁怎么使用及优点是什么
    这篇文章主要介绍了java读写锁怎么使用及优点是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java读写锁怎么使用及优点是什么文章都会有所收获,下面我们一起来看看吧。前言:读写锁(Readers-Writ...
    99+
    2023-06-30
  • innodb怎么解决幻读
    InnoDB通过使用多版本并发控制(MVCC)来解决幻读问题。幻读是指在同一事务中,前后两次查询的结果集不一致的情况。InnoDB通...
    99+
    2023-09-15
    innodb
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作