表总体上分为三种:

  1、表锁 Myisam  开销小,并发低,加锁快,不会出现死锁问题;锁粒度大,发生锁冲突的概率最高。

  2、行锁 innodb    开销大,并发高,加锁慢,会出现死锁问题;锁粒度小,发生锁冲突的概率最低。

  3、页面锁     开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。(不常用)

共享锁(读锁)/排它锁(写锁)

  共享锁又叫读锁,是读取操作创建的锁。其他用户可以同步读取数据,但是不能够写数据。

  排它锁又叫写锁,是更新操作创建的锁。其他用户不可以同步读取数据更不能写数据。

MyIsam锁模式:

  MyIsam引擎在执行查询语句前,会自动给涉及到的表添加读锁;在更新操作前会自动给涉及到的表加写锁。

  a、对MyIsam中的表进行读取操作,其他用户可以进行读取,但是不能修改;

  b、对MyIsam中的表进行更新操作,其他用户不能进行读取,更不能进行操作。

InnoDb锁模式:

  对于insert、update、delete,InnoDB会自动给涉及的数据加排他锁(X);对于一般的Select语句,InnoDB不会加任何锁,事务可以通过以下语句给显示加共享锁或排他锁。
共享锁: SELECT ... LOCK IN SHARE MODE;
排他锁: SELECT ... FOR UPDATE;

InnoDb是根据索引加行锁的,如果没有索引的话依然是加表锁。因此如果多行数据都使用同一个索引,会出现锁冲突。

乐观锁:不加锁,更新数据时需要查看该数据是否在更新期间被更改过,如果有被更改过就放弃本次更新。否则将更新提交。适合多为查询的场景。当出现大量更新操作时,可能会造成大量冲突的情况。

悲观锁:每次获取数据时都要对数据进行加锁,确保自己使用该数据时,该数据不会被别人修改。适用于多为更新操作的场景。当出现大量读操作时,每次读取都会加锁,会造成堵塞。

  

mysql的各种锁简单总结的更多相关文章

  1. MySQL实战 | 06/07 简单说说MySQL中的锁

    原文链接:MySQL实战 | 06/07 简单说说MySQL中的锁 本文思维导图:https://mubu.com/doc/AOa-5t-IsG 锁是计算机协调多个进程或纯线程并发访问某一资源的机制. ...

  2. mysql事务和锁InnoDB

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  3. MySQL中的锁(表锁、行锁)

    锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数 ...

  4. MySQL行级锁,表级锁,页级锁详解

    页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...

  5. MySQL行级锁、表级锁、页级锁详细介绍

    原文链接:http://www.jb51.net/article/50047.htm 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , ...

  6. MySQL- InnoDB锁机制

    InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我们先介绍一点背景知识 ...

  7. mysql事务和锁InnoDB(转)

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  8. MySQL事务与锁

    MySQL事务与锁 锁的基本概念 锁是计算机协调多个进程或线程并发访问某一资源的机制. 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISA ...

  9. MySQL/MariaDB的锁

    本文目录: 1.MariaDB/MySQL事务提交的方式 2.MariaDB/MySQL中的锁简介 2.1 不同存储引擎支持的锁级别 2.2 锁类型 2.3 锁兼容性 3.MyISAM的表级锁(loc ...

随机推荐

  1. Java面试宝典(1)Java基础部分

    Java面试宝典 题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了. 答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得) 答案的段落分别,层次分明, ...

  2. VS2013+Opencv3.3配置教程

    转载自: https://blog.csdn.net/u014797226/article/details/78283873?locationNum=5&fps=1 参考博文1: 操作环境: ...

  3. windows上测试网络数据跳转路径

    今天遇到一个有关路由方面的问题,所以向一位CCIE大神问了点问题.就是关于ip ping包出了pc之后怎么走的. 然后告诉我了这么一个命令: Tracert(跟踪路由)是路由跟踪实用程序,用于确定 I ...

  4. Dubbo---Multicast 注册中心---xml配置

    1.项目结构(maven项目) 2.dubbotest.pom <?xml version="1.0" encoding="UTF-8"?> < ...

  5. 【JavaWeb项目】一个众筹网站的开发(八)后台页面详细设置

    一.user.jsp改造 删除引入菜单 抽取导航栏 nav-bar.jsp,删除引入导航栏 删除引入main.jsp的到好烂 数据库里添加url 报错,url不对 没有/ url正确 action=& ...

  6. React笔记03——React实现TodoList

    1 什么是JSX语法? 原生JS中,要向页面中挂载html标签,标签一定是被引号''包起来的:document.getElementById('root').append('<div>he ...

  7. 在SpringCloud中MAVEN配置文件中的更改

    <mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> ...

  8. 管理员技术(四): 配置NTP网络时间客户端、 创建一个备份包、 配置用户和组账号、配置一个cron任务

    一. 配置NTP网络时间客户端 目标: 本例要求配置虚拟机 server0,能够自动校对系统时间.相关信息如下: 1> NTP服务器位于 classroom.example.com        ...

  9. delphi 内存映射

    使用内存映射文件读写大文件 使用内存映射文件读写大文件 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类.一般来说,这些函数可以满足大多数场合的要求,但是 ...

  10. 在jeecg中如何配置多对一和多对多的关系

    多对多: mappedBy指的是当前的类对应的表, cascade属性的可能值有 all: 所有情况下均进行关联操作,即save-update和delete. none: 所有情况下均不进行关联操作. ...