首页 > 数据库 >MySQL中有哪几种锁,列举一下;意向锁是什么?

MySQL中有哪几种锁,列举一下;意向锁是什么?

时间:2023-10-22 14:01:49浏览次数:42  
标签:加锁 行锁 粒度 死锁 哪几种 意向锁 MySQL 表锁

一、MySQL中有哪几种锁

MySQL中有哪几种锁,列举一下;意向锁是什么?_死锁

如果按锁粒度划分,有以下3种:

表锁: 开销小,加锁快;锁定力度大,发生锁冲突概率高,并发度最低;不会出现死锁。

行锁: 开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。

页锁: 开销和加锁速度介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般

如果按照兼容性,有两种,

共享锁(S Lock),也叫读锁(read lock),相互不阻塞。

排他锁(X Lock),也叫写锁(write lock),排它锁是阻塞的,在一定时间内,只有一个请求能执行写入,并阻止其它锁读取正在写入的数据。

二、意向锁是什么

意向锁是一个表级锁,不要和插入意向锁搞混。

意向锁的出现是为了支持InnoDB的多粒度锁,它解决的是表锁和行锁共存的问题。

当我们需要给一个表加表锁的时候,我们需要根据去判断表中有没有数据行被锁定,以确定是否能加成功。

假如没有意向锁,那么我们就得遍历表中所有数据行来判断有没有行锁;

有了意向锁这个表级锁之后,则我们直接判断一次就知道表中是否有数据行被锁定了。

有了意向锁之后,要执行的事务A在申请行锁(写锁)之前,数据库会自动先给事务A申请表的意向排他锁。当事务B去申请表的互斥锁时就会失败,因为表上有意向排他锁之后事务B申请表的互斥锁时会被阻塞。

标签:加锁,行锁,粒度,死锁,哪几种,意向锁,MySQL,表锁
From: https://blog.51cto.com/u_16255459/7976267

相关文章

  • oracle使用dblink连接mysql
    在oracle数据库访问mysql数据库数据环境Oracle 数据库:192.168.22.6端口1521操作系统:RHEL7.6MYSQL数据库:192.168.22.9端口3306操作系统:RHEL7.6 用户:lanmc,密码:lanmc123,数据库lanmcORACLE数据库配置1、oracle服务端安装mysqlodbcmysqlodbc下载地址:https://dev.mysql......
  • Mysql死亡笔记的死锁记录
    死锁记录线上MySQL死锁了,我赶紧登录线上系统,查看业务日志。能清楚看到是这条insert语句发生了死锁。MySQL如果检测到两个事务发生了死锁,会回滚其中一个事务,让另一个事务执行成功。很明显,我们这条insert语句被回滚了。insertintouser(id,name,age)values(6,'张三',6);但是......
  • 什么是MySQL索引下推优化
    索引条件下推优化(IndexConditionPushdown(ICP))是MySQL5.6添加的,用于优化数据查询。不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQLServer,MySQLServer进行过滤条件的判断。当使用索引条件下推优化时,如果存在某些被索引的列的判断条件时,MySQLServer将......
  • php js + laravel + mysql开发的手术麻醉临床信息系统源码
    手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生成麻醉的各种医疗文书,完成共享HIS、LIS、PACS和EMR等手术患者信息,从而提......
  • Mysql一文流
    一文读懂MySQL数据库1.MySQL简介1.1数据库介绍​数据库(Database,DB)从本质上讲就是一个文件系统,它能够讲数据有组织地集合砸一起,按照一定的规则长期存储到计算机的磁盘中,并且能够供多个用户共享和使用,同时,用户能够对数据库中的数据进行插入、删除、修改和查询操作​......
  • MySql安装与使用
    mysql是目前最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。MySQL是非常灵活的一款数据库,虽然它不是绝对完美,但它的灵活足够适应很多高要求的环境。为了发挥MySQL的性能并很好的使用它,我......
  • MySQL常用函数
    MySQL函数,是一种控制流程函数,属于数据库用语言。MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。一、数学函数1.1、函数概述MySQL函数是MySQL......
  • MySQL多主模型实战
    MySQLAB解决了数据备份的问题,但是当A由于某些原因宕机后,WEB服务器就没有办法在往数据库写或者读写了。线上业务中断了,完了,出事故了。这该怎么办呢?本节课主要给大家讲解如果处理因为MySQL主服务器宕机造成的业务中断问题,保障MySQL业务高可用。一、实验拓扑图二、架构原理1、M......
  • MySQL子查询
    在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。上层的查询块曾为父查询或......
  • MySQL约束
    约束是按照约定(特定)条件限制,管束等意思。约束的作用是添加、删除。在数据库中对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。一、约束概述1.1、什么是约束约束用于限制加入表的......