广告
返回顶部
首页 > 资讯 > 数据库 >MySQL锁机制原理是什么
  • 790
分享到

MySQL锁机制原理是什么

2024-04-02 19:04:59 790人浏览 安东尼
摘要

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

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

  很多时候,可以通过经验来猜测什么样的锁对应用程序更合适,不过通常很难说一个锁比别的更好,这全都要依据应用程序来决定,不同的地方可能需要不同的锁。

  想要决定是否需要采用一个支持行级锁的存储引擎,就要看看应用程序都要做什么,其中的查询、更新语句是怎么用的。例如,很多的WEB应用程序大量的做查询,很少删除,主要是基于索引的更新,只往特定的表中插入记录。采用基本的MySQLMyISAM表就很合适了。

  MySQL中对表级锁的存储引擎来说是释放死锁的。避免死锁可以这样做到:在任何查询之前先请求锁,并且按照请求的顺序锁表。

  MySQL中用于WRITE(写)的表锁的实现机制如下:

  如果表没有加锁,那么就加一个写锁。

  否则的话,将请求放到写锁队列中。

  MySQL中用于READ(读)的表锁的实现机制如下:

  如果表没有加写锁,那么就加一个读锁。

  否则的话,将请求放到读锁队列中。

  当锁释放后,写锁队列中的线程可以用这个锁资源,然后才轮到读锁队列中的线程。

  这就是说,如果表里有很多更新操作的话,那么Select必须等到所有的更新都完成了之后才能开始。

  从MySQL3.23.33开始,可以通过状态变量Table_locks_waited和Table_locks_immediate来分析系统中的锁表争夺情况:

  mysql>SHOWSTATUSLIKE'Table%';

  +-----------------------+---------+

  |Variable_name|Value|

  +-----------------------+---------+

  |Table_locks_immediate|1151552|

  |Table_locks_waited|15324|

  +-----------------------+---------+

  MySQL锁机制究竟是怎样的

  在MySQL3.23.7(在windows上是3.23.25)以后,在MyISAM表中只要没有冲突的Insert操作,就可以无需使用锁表自由地并行执行Insert和Select语句。也就是说,可以在其它客户端正在读取MyISAM表记录的同时时插入新记录。如果数据文件的中间没有空余的磁盘块的话,就不会发生冲突了,因为这种情况下所有的新记录都会写在数据文件的末尾(当在表的中间做删除或者更新操作时,就可能导致空洞)。当空洞被新数据填充后,并行插入特性就会自动重新被启用了。

  如果想要在一个表上做大量的Insert和Select操作,但是并行的插入却不可能时,可以将记录插入到临时表中,然后定期将临时表中的数据更新到实际的表里。可以用以下命令实现:

  mysql>LOCKTABLESreal_tableWRITE,insert_tableWRITE;

  mysql>InsertINTOreal_tableSelect*FROMinsert_table;

  mysql>TRUNCATETABLEinsert_table;

  mysql>UNLOCKTABLES;

  InnoDB使用行级锁,BDB使用页级锁。对于InnoDB和BDB存储引擎来说,是可能产生死锁的。这是因为InnoDB会自动捕获行锁,BDB会在执行SQL语句时捕获页锁的,而不是在事务的开始就这么做。

  很多的扫描表和对全表的GROUPBY操作,但是没有任何写表。

  表级锁和行级锁或页级锁之间的不同之处还在于:

  将同时有一个写和多个读的地方做版本(例如在MySQL中的并发插入)。也就是说,数据库/表支持根据开始访问数据时间点的不同支持各种不同的试图。其它名有:时间行程,写复制,或者是按需复制。

  原文:Versioning(suchasweuseinMySQLforconcurrentinserts)whereyoucanhaveonewriteratthesametimeasmanyreaders.Thismeansthatthedatabase/tablesupportsdifferentviewsforthedatadependinGonwhenyoustartedtoaccessit.Othernamesforthisaretimetravel,copyonwrite,orcopyondemand.

  按需复制在很多情况下比页级锁或行级锁好多了。尽管如此,最坏情况时还是比其它正常锁使用了更多的内存。

  可以用应用程序级锁来代替行级锁,例如MySQL中的GET_LOCK()和RELEASE_LOCK()。但它们是劝告锁(原文:Theseareadvisorylocks),因此只能用于安全可信的应用程序中。

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

您可能感兴趣的文档:

--结束END--

本文标题: MySQL锁机制原理是什么

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL锁机制原理是什么
    这篇文章主要介绍“MySQL锁机制原理是什么”,在日常操作中,相信很多人在MySQL锁机制原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL锁机制原理是什么”...
    99+
    2022-10-18
  • MySQL锁定机制的原理是什么
    这篇文章给大家介绍MySQL锁定机制的原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变...
    99+
    2022-10-18
  • MySQL中锁机制的底层原理是什么
    本篇文章给大家分享的是有关MySQL中锁机制的底层原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、Mysql为什么要加锁锁机制用于...
    99+
    2022-10-18
  • 什么是MySQL锁机制
    本篇内容主要讲解“什么是MySQL锁机制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是MySQL锁机制”吧!无论什么时候,只要存在多个连接在同一时刻修改数...
    99+
    2022-10-18
  • mysql 锁机制与原理详解
    前言 不管是数据库,还是很多后端编程语言,都存在锁的机制,锁的存在有效解决了并发情况下对共同资源的抢占,保证了数据的稳定性和一致性,在mysql中,锁是如何工作的呢?其底层的工作原理是怎样的呢?本篇将详细介绍下mysql锁的机制。 mys...
    99+
    2023-09-16
    mysql 锁原理 mysql 锁机制 mysql 锁使用
  • MySQL的锁机制原理介绍
    这篇文章主要讲解了“MySQL的锁机制原理介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL的锁机制原理介绍”吧! M...
    99+
    2022-10-18
  • mysql的锁机制基本原理
    本篇内容介绍了“mysql的锁机制基本原理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!今天没事就学习一下...
    99+
    2022-10-18
  • MySQL加锁机制是什么
    这篇文章主要介绍MySQL加锁机制是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言在数据库中设计锁的目的是为了处理并发问题,在并发对资源进行访问时,数据库要合理控制对资源的访问规则。而锁就是用来实现这些访问规...
    99+
    2023-06-29
  • MySQL中复制机制的原理是什么
    MySQL中复制机制的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。背景介绍复制,就是对数据的完整拷贝,说到为什么要...
    99+
    2022-10-18
  • MySQL中的锁机制是什么
    这篇“MySQL中的锁机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL中的锁机制是什么”文章吧。一.概述锁...
    99+
    2023-07-05
  • Mysql中MVCC机制的原理是什么
    这篇文章将为大家详细讲解有关Mysql中MVCC机制的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Mysql的锁和事务隔离级别在理解MVCC机制的原理之前,需要先理解Mysql的...
    99+
    2023-06-14
  • mysql中WAL机制的原理是什么
    mysql中WAL机制的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、WAL预写日志系统。数据库中的高效日志算法,对于非内存数据库来说,磁盘I/O...
    99+
    2023-06-20
  • MySQL锁类型和加锁原理是什么
    这篇文章主要介绍了MySQL锁类型和加锁原理是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。首先对mysql锁进行划分:按照锁的粒度划分:行...
    99+
    2022-10-18
  • MySQL数据库锁机制原理解析
    在并发访问情况下,很有可能出现不可重复读等等读现象。为了更好的应对高并发,封锁、时间戳、乐观并发控制(乐观锁)、悲观并发控制(悲观锁)都是并发控制采用的主要技术方式。 锁分类 ①、按操作划分:DML锁,DDL锁 ...
    99+
    2022-05-21
    MySQL 数据库 锁机制
  • mysql数据库锁机制是什么
    小编给大家分享一下mysql数据库锁机制是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!并发控制数据库管理系统中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性...
    99+
    2022-10-18
  • mysql锁机制的概念是什么
    本文小编为大家详细介绍“mysql锁机制的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql锁机制的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。My...
    99+
    2022-10-19
  • MySql中主从复制机制的原理是什么
    今天就跟大家聊聊有关MySql中主从复制机制的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。主从复制机制MySQL基于binlog实现主从复制,从节点跟踪并获取主节点bin...
    99+
    2023-06-14
  • MySQL数据库的锁机制是什么
    本篇内容介绍了“MySQL数据库的锁机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为什么要加锁?...
    99+
    2022-10-19
  • MySQL数据库锁定机制是什么
    本篇文章给大家分享的是有关MySQL数据库锁定机制是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. MySQL 锁定机制简介各存储引擎...
    99+
    2022-10-18
  • MySQL锁机制有什么用
    这篇文章主要介绍了MySQL锁机制有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL的锁机制比较简单,其最显著的特点是不同的存...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作