美文网首页MySQL
4 mysql锁机制

4 mysql锁机制

作者: Java及SpringBoot | 来源:发表于2018-06-07 09:12 被阅读1次

4.1 概述

4.1.1 定义

clip_image217.jpg

4.1.2 生活购物

clip_image219.jpg

4.1.3 锁的分类

从数据操作的类型(读、写)分

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

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

从对数据操作的颗粒度

表锁

行锁

4.2 三锁

4.2.1 表锁(偏读)

特点

偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低

案例分析

建表SQL

clip_image221.jpg clip_image223.jpg

加读锁

clip_image225.jpg clip_image227.jpg clip_image229.jpg

加写锁

clip_image231.jpg clip_image233.jpg

案例结论

clip_image235.jpg clip_image237.jpg

表锁分析

clip_image239.jpg clip_image241.jpg clip_image243.jpg

4.2.2 行锁(偏写)

特点

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

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

由于行锁支持事务,复习老知识

事务(Transation)及其ACID属性

clip_image245.jpg

并发事务处理带来的问题

更新丢失(Lost Update)

clip_image247.jpg

脏对(Dirty Reads)

clip_image249.jpg

不可重复读(Non-Repeatable Reads)

clip_image251.jpg

幻读(Phantom Reads)

clip_image253.jpg

事务隔离级别

clip_image255.jpg

案例分析

建表SQL

clip_image257.jpg

行锁定基本演示

clip_image259.jpg

无索引行锁升级为表锁

varchar 不用 ' ' 导致系统自动转换类型, 行锁变表锁

间隙锁危害

clip_image261.jpg clip_image263.jpg

面试题:常考如何锁定一行

clip_image265.jpg

案例结论

clip_image267.jpg

行锁分析

clip_image269.jpg clip_image271.jpg

优化建议

尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁

合理设计索引,尽量缩小锁的范围

尽可能较少检索条件,避免间隙锁

尽量控制事务大小,减少锁定资源量和时间长度

尽可能低级别事务隔离

4.2.3 页锁

Subtopic

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

了解一下即可

相关文章

  • 4 mysql锁机制

    4.1 概述 4.1.1 定义 4.1.2 生活购物 4.1.3 锁的分类 从数据操作的类型(读、写)分 读锁(共...

  • MySQL的锁机制

    MySQL锁简介 MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和...

  • MySQL的锁机制

    mysql的锁机制 1、MySQL锁的基本介绍 MyISAM:MySQL的表级锁有两种模式:表共享读锁(Table...

  • 共享 + 排他锁

    mysql锁机制分为表级锁和行级锁 ,mysql中行级锁中的共享锁与排他锁进行分享交流。 测试语法 begin; ...

  • 13.MySQL锁机制

    MySQL锁 相对于其他的数据库而言,MySQL的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制。...

  • MySQL学习

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

  • MySQL解锁与锁表

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

  • MySQL死锁及解决方案

    1 MySQL锁类型 1. MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-le...

  • MySQL表级锁和行级锁

    MySQL学习笔记(五):MySQL表级锁和行级锁 一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最...

  • MySQL锁机制漫谈(二)

    在MySQL锁机制漫谈(一)一文中,我们主要是探究了以下MySQL(主要是InnoDB)的锁的机制,但是我们平常经...

网友评论

    本文标题:4 mysql锁机制

    本文链接:https://www.haomeiwen.com/subject/xnuwsftx.html