MySQL使用了3种锁机制

行级锁,开销大,加锁慢,会出现死锁,发生锁冲突的概率最高,并发度也最高

表级锁,开销小,加锁快,不会出现死锁,发生锁冲突的概率最低,并发度最低

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

MySQL的存储引擎,这里指常用的,InnoDB,默认是行级锁,如果不指定主键的话,那么就是表级锁了,这点切记

MyISAM是表锁

innoDB

先来了解下MySQL事务

事务是由一组sql语句组成的逻辑处理单元,有4个属性ACID

原子性,Atomicity   事务是一个原子操作单元,数据的改变,要么全部执行,要么全部不执行,有一个不执行,就会全部不执行

一致性,Consistent   事务开始和完成时,数据都是一致的

隔离性,Ioslation   保证事务不受外界干扰,根据隔离性的级别进行独立的运行

持久性,Durable   事务commit之后,对数据的处理是一直有效的,永久性的

MySQL进行事务并发的时候,会带来以下几个问题

脏读,事务A和事务B都操作同一行,A是search,B是update,B更新之后,A进行查询,这个时候,B进行回滚,那么刚刚A查询到的数据就是脏数据,A的操作就是脏读

不可重复读,事务A和事务B都操作同一行,A是search,B是update,A先查询,然后B进行更新,提交,A在查询的时候,和第一次查询的结果不一样,这就是不可重复读

幻读,事务A和事务B都操作同一行,A是update,B是insert,A在更新的过程中,B进行了操作,结果A以为自己没有进行刚刚的操作,就造成了幻读

隔离级别

读数据一致性及允许的并发副作用
隔离级别
读数据一致性
脏读
不可重复读
幻读
未提交读(Read uncommitted)
最低级别,只能保证不读取物理上损坏的数据
已提交度(Read committed)
语句级
可重复读(Repeatable read)
事务级
可序列化(Serializable)
最高级别,事务级

共享锁,也是读锁,加锁期间,其他事务可以进行读操作,不能进行写操作,直到锁解除

排他锁,也是读写锁,加锁期间,其他事务不能进行读写操作,直到锁解除,

MySQL锁机制浅析的更多相关文章

  1. InnoDB的锁机制浅析(五)—死锁场景(Insert死锁)

    可能的死锁场景 文章总共分为五个部分: InnoDB的锁机制浅析(一)-基本概念/兼容矩阵 InnoDB的锁机制浅析(二)-探索InnoDB中的锁(Record锁/Gap锁/Next-key锁/插入意 ...

  2. InnoDB的锁机制浅析(三)—幻读

    文章总共分为五个部分: InnoDB的锁机制浅析(一)-基本概念/兼容矩阵 InnoDB的锁机制浅析(二)-探索InnoDB中的锁(Record锁/Gap锁/Next-key锁/插入意向锁) Inno ...

  3. InnoDB的锁机制浅析(二)—探索InnoDB中的锁(Record锁/Gap锁/Next-key锁/插入意向锁)

    Record锁/Gap锁/Next-key锁/插入意向锁 文章总共分为五个部分: InnoDB的锁机制浅析(一)-基本概念/兼容矩阵 InnoDB的锁机制浅析(二)-探索InnoDB中的锁(Recor ...

  4. InnoDB的锁机制浅析(一)—基本概念/兼容矩阵

    InnoDB锁的基本概念 文章总共分为五个部分: InnoDB的锁机制浅析(一)-基本概念/兼容矩阵 InnoDB的锁机制浅析(二)-探索InnoDB中的锁(Record锁/Gap锁/Next-key ...

  5. InnoDB的锁机制浅析(All in One)

    目录 InnoDB的锁机制浅析 1. 前言 2. 锁基本概念 2.1 共享锁和排它锁 2.2 意向锁-Intention Locks 2.3 锁的兼容性 3. InnoDB中的锁 3.1 准备工作 3 ...

  6. Mysql锁机制介绍

    Mysql锁机制介绍 一.概况MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...

  7. Mysql锁机制--索引失效导致行锁变表锁

    Mysql 系列文章主页 =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不 ...

  8. mysql锁机制详解

    前言 大概几个月之前项目中用到事务,需要保证数据的强一致性,期间也用到了mysql的锁,但当时对mysql的锁机制只是管中窥豹,所以本文打算总结一下mysql的锁机制. 本文主要论述关于mysql锁机 ...

  9. InnoDB的锁机制浅析(四)—不同SQL的加锁状况

    不同SQL的加锁状况 文章总共分为五个部分: InnoDB的锁机制浅析(一)-基本概念/兼容矩阵 InnoDB的锁机制浅析(二)-探索InnoDB中的锁(Record锁/Gap锁/Next-key锁/ ...

随机推荐

  1. Using-JSONNET-for-dynamic-JSON-parsing

    原文 https://weblog.west-wind.com/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing With the re ...

  2. mySQL部分疑问和小结(orale)

    2015/10/15 1.mysql语句: ALTER table scfz_xewp add BGR varchar(255) after KYR 2.创建触发器时:  --/   CREATE D ...

  3. windows服务器装macos虚拟机(vmware)系统

    VMware14安装黑苹果macOS10.13流程 一.准备工具 VMware Workstation 14.1.2 Pro macOS High Sierra 10.13.iso格式或.cdr格式( ...

  4. Nginx实现rewrite重写

    目录 Rewrite基本概述 Rewrite标记Flag Rewrite规则实践 Rewrite场景示例 Rewrite规则补充 rewrite优先级实战 Rewrite基本概述 什么是rewrite ...

  5. Linux安装篇超详细

    在此篇文章中主要介绍Linux系统的安装,以及学习大数据过程中Linux中常用的命令有哪些. 一.Linux(CentOs6.8)的安装 1.安装VMware虚拟机 虚拟机下载地址:https://p ...

  6. Django Rest框架 APIView源码调用

    上一篇说了请求访问的流程,这一篇说一下请求对应的源码调用 as_view 定义view dispatch dispatch initialize_request get_parsers         ...

  7. Servlet中如何获取用户提交的查询参数或表单数据?

    ①HttpServletRequest的getParameter()方法. ②HttpServletRequest的getParameterValues()方法. ③HttpServletReques ...

  8. 记录下通过Java代码打开cmd启动appium server及在使用过程中碰到的问题

    1.appium server启动后,执行测试脚本,appium日志报错,提示appium setting未安装(原因是小米手机在用appium desktop调试时总是提示是否安装appium se ...

  9. atcoder 泛做

    https://atcoder.jp/contests/arc060/tasks/arc060_b 先考虑一些特殊情况: $$n>s$$ $$n=s$$ $b$小于$sqrt(N)$可以枚举,如 ...

  10. IDEA使用Maven搭建JavaWeb项目

    1. 新建项目 2. 填写项目坐标信息 3. 手动生效pom.xml 4. 添加maven常用配置 1) 设置项目统一编码 <!-- 设置编码 --> <properties> ...