iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中的锁机制是什么
  • 174
分享到

MySQL中的锁机制是什么

2023-07-05 04:07:56 174人浏览 安东尼
摘要

这篇“MySQL中的锁机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mysql中的锁机制是什么”文章吧。一.概述锁

这篇“MySQL中的机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mysql中的锁机制是什么”文章吧。

一.概述

锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。

数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

分类

从对数据操作的粒度分

  • 表锁:操作时,会锁定整个表。

  • 行锁:操作时,会锁定当前操作行。

从对数据操作的类型分

  • 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。

  • 写锁(排它锁):当前操作没有完成之前,它会阻断其他写锁和读锁。

相对其他数据库而言,mysql的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。下表中罗列出了各存储引擎对锁的支持情况:

存储引擎表级锁行级锁
MylSAM支持不支持
lnnoDB支持支持
MEMORY支持不支持
BDB支持不支持

Mysql锁的特性可大致归纳如下:

锁类型特点
表级锁偏向MyISAM存储引擎,开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

从上述特点可见,很难笼统地说哪种锁更好,只能就具体应用的特点来说哪种锁更合适! 仅从锁的角度来说:表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如web应用;

而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有并查询的应用,如一些在线事务处理(OLTP)系统。

二.MyISAM表锁

MylSAM存储引擎只支持表锁

如何加表锁

MylSAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用LOCK TABLE命令给MylSAM表显式加锁。

MySQL中的锁机制是什么

读锁演示

create database test_lock;use test_lock; drop table tb_book ; create table tb_book(id int(11) auto_increment,name varchar(50) default null,publish_time date default null,status char(1) default null,primary key (id))engine=myisam default charset=utf8; insert into tb_book values(null,'sql','2088-08-01','1');insert into tb_book values(null,'sql',20880908,'0');  create table tb_user(id int(11) auto_increment,name varchar(50) default null,primary key (id))engine =myisam default charset=utf8; insert into tb_user values(null,'张三');insert into tb_user values(null,'李四'); -- 加读锁lock table tb_book read; select * from tb_book  ;-- 能正常输出select * from tb_book tb ;-- 不能正常输出,不能有别名update tb_book set status=1;-- 不能正常输出 读锁:可读不可改 select * from tb_user ;-- 不能正常输出,当锁住一个表时也不能看其他表-- 解锁unlock tables;

加了读锁后只能看自己的表,不能修改,也不能看其他的表

MySQL中的锁机制是什么

MySQL中的锁机制是什么

写锁演示

create table tb_book(id int(11) auto_increment,name varchar(50) default null,publish_time date default null,status char(1) default null,primary key (id))engine=myisam default charset=utf8; insert into tb_book values(null,'sql','2088-08-01','1');insert into tb_book values(null,'sql',20880908,'0');  create table tb_user(id int(11) auto_increment,name varchar(50) default null,primary key (id))engine =myisam default charset=utf8; insert into tb_user values(null,'张三');insert into tb_user values(null,'李四'); -- 加写锁lock table tb_book write; select * from tb_book  ;-- 能正常输出select * from tb_book tb ;-- 不能正常输出,不能有别名update tb_book set status=1;-- 可以修改 写锁:可读可修改,但在没有解锁之前不能被其他人查看,会被挂起 select * from tb_user ;-- 不能正常输出,当锁住一个表时也不能看其他表-- 解锁unlock tables;

MySQL中的锁机制是什么

三.InnoDB行锁

行锁特点

行锁特点︰偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

InnoDB与 MylSAM的最大不同有两点:一是支持事务;二是采用了行级锁。

行锁模式

lnnoDB实现了以下两种类型的行锁。

共享锁(S)∶又称为读锁,简称s锁,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。

排他锁(x):又称为写锁,简称x锁,排他锁就是不能与其他锁并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。

对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁(x);

对于普通SELECT语句,InnoDB不会加任何锁;

 可以通过以下语句显示给记录集加共享锁或排他锁。

MySQL中的锁机制是什么

-- 行锁 drop table is exists test_innodb_lock;create table test_innodb_lock(id int(11),name varchar(16),sex varchar(1))engine=innodb; insert into test_innodb_lock values(1,'100','1'),(2,'200','0'),(3,'200','1'),(4,'300','0'),(5,'400','0'),(6,'500','1'),(7,'600','1'),(1,'700','1'); create index index_id on test_innodb_lock(id);create index index_name on test_innodb_lock(name);

MySQL中的锁机制是什么

MySQL中的锁机制是什么

可以修改是因为上面的行锁只对id=1的那两行加了排他锁

以上就是关于“MySQL中的锁机制是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中的锁机制是什么

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL中的锁机制是什么
    这篇“MySQL中的锁机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL中的锁机制是什么”文章吧。一.概述锁...
    99+
    2023-07-05
  • 什么是MySQL锁机制
    本篇内容主要讲解“什么是MySQL锁机制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是MySQL锁机制”吧!无论什么时候,只要存在多个连接在同一时刻修改数...
    99+
    2024-04-02
  • MySQL加锁机制是什么
    这篇文章主要介绍MySQL加锁机制是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言在数据库中设计锁的目的是为了处理并发问题,在并发对资源进行访问时,数据库要合理控制对资源的访问规则。而锁就是用来实现这些访问规...
    99+
    2023-06-29
  • mysql锁机制的概念是什么
    本文小编为大家详细介绍“mysql锁机制的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql锁机制的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。My...
    99+
    2024-04-02
  • MySQL锁机制原理是什么
    这篇文章主要介绍“MySQL锁机制原理是什么”,在日常操作中,相信很多人在MySQL锁机制原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL锁机制原理是什么”...
    99+
    2024-04-02
  • PostgreSQL中的锁机制是什么
    PostgreSQL中的锁机制是用来控制并发访问数据库中数据的方式。它可以防止多个会话同时对同一数据进行修改,从而避免数据不一致的问...
    99+
    2024-04-02
  • MySQL中锁机制的底层原理是什么
    本篇文章给大家分享的是有关MySQL中锁机制的底层原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、Mysql为什么要加锁锁机制用于...
    99+
    2024-04-02
  • Java中的锁机制是什么
    今天小编给大家分享一下Java中的锁机制是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Java中的锁机制是保证多线程并...
    99+
    2023-07-05
  • MySQL锁定机制的原理是什么
    这篇文章给大家介绍MySQL锁定机制的原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变...
    99+
    2024-04-02
  • MySQL数据库的锁机制是什么
    本篇内容介绍了“MySQL数据库的锁机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为什么要加锁?...
    99+
    2024-04-02
  • mysql数据库锁机制是什么
    小编给大家分享一下mysql数据库锁机制是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!并发控制数据库管理系统中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性...
    99+
    2024-04-02
  • Mysql锁的内部实现机制是什么
    这篇“Mysql锁的内部实现机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mys...
    99+
    2024-04-02
  • MySQL中的锁机制
    抛砖引玉:多个查询需要在同一时刻进行数据的修改,就会产生并发控制的问题。我们需要如何避免写个问题从而保证我们的数据库数据不会被破坏。 锁的概念 读锁是共享的互相不阻塞的。多个事务在听一时刻可以同时读取同一资源,而相互不干扰。 写锁的排...
    99+
    2023-08-23
    mysql 数据库
  • MySQL数据库锁定机制是什么
    本篇文章给大家分享的是有关MySQL数据库锁定机制是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. MySQL 锁定机制简介各存储引擎...
    99+
    2024-04-02
  • java中各类锁的机制是什么
    这篇文章给大家分享的是有关java中各类锁的机制是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言总结java常见的锁区分各个锁机制以及如何使用使用方法锁名考察线程是否要锁住同步资源乐观锁和悲观锁锁住同步资...
    99+
    2023-06-22
  • MySQL加锁机制的验证记录是什么
    本篇内容介绍了“MySQL加锁机制的验证记录是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开启 In...
    99+
    2024-04-02
  • MySQL锁机制有什么用
    这篇文章主要介绍了MySQL锁机制有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL的锁机制比较简单,其最显著的特点是不同的存...
    99+
    2024-04-02
  • MySQL锁机制及应用场景是什么
    本文小编为大家详细介绍“MySQL锁机制及应用场景是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL锁机制及应用场景是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。锁的概述MySQL锁是操作My...
    99+
    2023-07-05
  • 数据库的锁机制是什么
    数据库的锁机制是一种用于保护数据库的一致性和并发操作的机制。它确保数据库中的数据在被多个并发事务访问和修改时保持一致性,避免数据的混...
    99+
    2023-09-20
    数据库
  • MySQL中复制机制的原理是什么
    MySQL中复制机制的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。背景介绍复制,就是对数据的完整拷贝,说到为什么要...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作