iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL并发控制
  • 866
分享到

MySQL并发控制

MySQL并发控制 2019-07-16 03:07:40 866人浏览 绘本
摘要

介绍 无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。而这种并发问题的直接后果就是数据不一致问题。那么如何解决这种问题呢?Mysql需要采用锁定机制来解决。 mysql数据库由于其自身架构的特点,存在多种数据存储引擎

MySQL并发控制

介绍

无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。而这种并发问题的直接后果就是数据不一致问题。那么如何解决这种问题呢?Mysql需要采用定机制来解决。 mysql数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。

全局锁、表级锁、行级锁。

  1. 按照锁的粒度:
  • 全局锁,锁的是整个database,使用场景:数据备份。
  • 表记锁,锁的是整个table。
  • InnoDB和xtradb存储引擎支持。行级锁,锁的是某N行数据。
  1. 按照锁的功能:共享读锁和排他写锁。
  2. 除此之外,还有悲观锁(排他写锁)和乐观锁(使用某一版本列或者唯一列进行逻辑控制)的定义。
  • Mysql的InnoDB和MyISAM存储引擎最大的区别:事务的支持、行级锁的支持。

行级锁定(row-level)

行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予应用程序尽可能大的并发处理能力而提高一些需要高并发应用系统的整体性能。虽然能够在并发处理能力上面有较大的优势,但是行级锁定也因此带来了不少弊端。由于锁定资源的颗粒度很小,所以每次获取锁和释放锁需要做的事情也更多,带来的消耗自然也就更大了。此外,行级锁定也最容易发生死锁。

表级锁定(table-level)

和行级锁定相反,表级别的锁定是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。所以获取锁和释放锁的速度很快。由于表级锁一次会将整个表锁定,所以可以很好的避免困扰我们的死锁问题。当然,锁定颗粒度大所带来最大的负面影响就是出现锁定资源争用的概率也会最高,致使并大度大打折扣。

  • 总的来说,MySQL这两种锁的特性可大致归纳如下:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高;

表锁

介绍

  • 使用场景
    1. 事务需要更新大部分或全部数据,表又比较大,如果使用默认的行锁,不仅这个事务执行效率低,而且可能造成其他事务长时间锁等待和锁冲突,这种情况下可以考虑使用表锁来提高该事务的执行速度。
    2. 事务涉及多个表,比较复杂,很可能引起死锁,造成大量事务回滚。这种情况也可以考虑一次性锁定事务涉及的表,从而避免死锁、减少数据库因事务回滚带来的开销。
  • MySQL的表级锁有两种:
    1. 一种是表锁。
    2. 一种是元数据锁(meta data lock,MDL)。
  • 表锁有两种表现形式
    1. 表共享读锁(Table Read Lock)
    2. 表独占写锁(Table Write Lock)
  • 查看表级锁定的争用状态变量 mysql> show status like "table%";
    	* table_locks_immediate:产生表级锁定的次数;
    	* table_locks_waited:出现表级锁定争用而发生等待的次数;
    
  • 手动增加表锁 lock table 表名称 read(write),表名称2 read(write),其他;
  • 查看表锁情况 show open tables;
  • 删除表锁 unlock tables;

加表锁表现:

  • lock table mytable read;
    • 当前session1
      1. 可以查询
      2. 不能查询其他的表
      3. 插入更新锁定表会提示错误
    • 其他session2
      1. 可以查询其他或者更新其他的表
      2. 更新锁定表会处于等待获得锁 ( session1 释放锁后执行)
  • lock table mytable write;
    • 当前session1
      1. 对当前锁定表可以执行 增/删/改/查
    • 其他session2
      1. 查询锁定的表会被阻塞, 需要等待到表锁被释放
您可能感兴趣的文档:

--结束END--

本文标题: MySQL并发控制

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

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

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

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

下载Word文档
猜你喜欢
  • 掌控MySQL并发:深度解析锁机制与并发控制
    前一篇MySQL读取的记录和我想象的不一致——事物隔离级别和MVCC 讲了事务在并发执行时可能引发的一致性问题的各种现象。一般分为下面3种情况: 读 - 读情况:并发事务相继读取相同的记录。读取...
    99+
    2023-09-18
    MySQL并发控制 隐式锁 插入意向锁 行锁 表锁
  • MySQL 并发控制中的锁策略
    MySQL 锁的并发控制策略引言:在数据库系统中,为了保证数据的一致性和完整性,需要对并发操作进行控制。而锁机制是一种常用的并发控制策略。MySQL作为一种常用的关系数据库管理系统,也拥有自己的锁机制,下面我们就来详细了解MySQL锁的并发...
    99+
    2023-12-21
    并发 策略
  • MySQL中怎么实现并发控制
    今天就跟大家聊聊有关MySQL中怎么实现并发控制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。锁锁分为读锁和写锁两种,也称作共享锁和排他锁。因为多个...
    99+
    2024-04-02
  • 优化 MySQL 并发控制锁的性能
    MySQL 锁的并发控制与性能优化,需要具体代码示例摘要:在MySQL数据库中,锁的并发控制是非常重要的,它能够确保数据的一致性和完整性。本文将详细介绍MySQL中锁的种类和使用场景,以及如何优化锁的性能。同时,还会提供一些实际的代码示例,...
    99+
    2023-12-21
    性能优化 并发控制 MySQL
  • JMeter 控制并发数
    文章目录 一、误区二、正确设置 JMeter 的并发数总结 没用过 JMeter 的同学,可以先过一遍他的简单使用例子 https://blog.csdn.net/weixin_42132143/article/detai...
    99+
    2023-08-18
    jmeter java 开发语言
  • MySQL多版本并发控制机制源码分析
    本篇内容主要讲解“MySQL多版本并发控制机制源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL多版本并发控制机制源码分析”吧!MVCC(多版本并...
    99+
    2024-04-02
  • Mysql InnoDB多版本并发控制MVCC详解
    目录一丶为什么需要事务隔离级别1.实现事务隔离的方式:串行执行2.实现事务隔离的方式:可串行执行二丶并发事务执行的问题:脏写,脏读,不可重复读,幻读1.脏写2.脏读3.不可重复读4.幻读三丶隔离级别1.Read UnCo...
    99+
    2022-11-29
    MySQLMVCC多版本并发控制 mysql的MVCC mysqlmvcc原理
  • mysql中并发控制的原理是什么
    mysql中并发控制的原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、mysql的逻辑框架mysql逻辑框架图如下:最上层是处...
    99+
    2024-04-02
  • mysql并发事务控制的过程介绍
    本篇内容主要讲解“mysql并发事务控制的过程介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql并发事务控制的过程介绍”吧!1、单版本控制锁。锁以独占的方式确保事务在只有一个版本的情况...
    99+
    2023-06-20
  • mysql多版本并发控制MVCC的实现
    事务隔离级别设置 set global transaction isolation level read committed; //全局的 set session transaction isolat...
    99+
    2024-04-02
  • Oracle、MySQL、DB2并发控制机制的异同是什么
    这篇文章主要介绍“Oracle、MySQL、DB2并发控制机制的异同是什么”,在日常操作中,相信很多人在Oracle、MySQL、DB2并发控制机制的异同是什么问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • MySQL事务的隔离级别与并发控制
    标题:深入探讨MySQL事务的隔离级别与并发控制 随着数据库应用场景的日益复杂,事务的隔离级别与并发控制成为了数据库管理中不可或缺的重要话题。MySQL作为一款广泛使用的关系型数据库管...
    99+
    2024-03-01
    mysql 并发 事务 并发访问
  • 《MySQL高级篇》十四、多版本并发控制
    文章目录 1. 什么是MVCC2. 快照读与当前读2.1 快照读2.2 当前读 3. 复习3.1 再谈隔离级别3.2 隐藏字段、Undo Log版本链 4. MVCC实现原理之ReadView4.1 什么是ReadVie...
    99+
    2023-08-17
    mysql 数据库 java
  • golang怎么控制并发数
    在Go中,可以使用goroutine和channel来控制并发数。 首先,可以使用make函数创建一个带有指定并发数的channel...
    99+
    2023-10-21
    golang
  • python 协程并发数控制
    目录多线程之信号量协程中使用信号量控制并发aiohttp 中 TCPConnector 连接池前言: 本篇博客要采集的站点:【看历史,通天下-历史剧网】 目标数据是该站点下的热门历史...
    99+
    2024-04-02
  • MySQL的并发控制MVCC知识点有哪些
    本篇内容介绍了“MySQL的并发控制MVCC知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MVCCMVCC(Multi-Vers...
    99+
    2023-06-21
  • MySQL多版本并发控制MVCC深入学习
    MVCC MVCC(Multi-Version Concurrency Control),即多版本并发控制。是 innodb 实现事务并发与回滚的重要功能。锁机制可以控制并发操作,但...
    99+
    2024-04-02
  • MySQL的多版本并发控制MVCC的实现
    目录什么是MVCC MVCC的实现 MVCC 有没有解决幻读? 什么是MVCC MVCC就是多版本并发控制。 MySQL的事务型存储引擎通过多版本并发控制(MVCC)来提升并发性...
    99+
    2024-04-02
  • NoSQL中乐观并发控制和悲观并发控制的区别是什么
    在NoSQL数据库中,乐观并发控制和悲观并发控制是两种常见的并发控制策略。 乐观并发控制: 乐观并发控制假设冲突的概率较低,并...
    99+
    2024-05-07
    NoSQL
  • 如何理解MySQL的锁和并发控制技术?
    如何理解MySQL的锁和并发控制技术?MySQL是一种常用的关系型数据库管理系统,它支持并发访问和操作数据,同时也提供了一些锁和并发控制技术,以保证数据的一致性和并发性。本文将详细介绍MySQL的锁和并发控制技术,并通过代码示例来加深理解。...
    99+
    2023-10-22
    MySQL 并发控制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作