文档章节

-mysql-锁机制分为表级锁和行级锁

凯哥学堂
 凯哥学堂
发布于 2017/08/31 15:07
字数 981
阅读 10
收藏 0

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

mysql锁机制分为表级锁和行级锁 myISAM 引擎不支持事物!

排他锁:

Set Autocommit=0; // 把事物设置成手动事物!

排他锁又称为写锁,简称X锁 排他锁就是不能与其他锁并存,如A事务获取了一行数据的排他锁,事务就不能再获取该行的其他锁 必须等A事物的排他锁结束才能对一行数据进行增删改! mysql InnoDB引擎默认的修改数据语句,update,delete,insert都会自动给涉及到的数据加上排他锁,select语句默认不会加任何锁类型,如果加排他锁可以使用select ...for update语句

实验1:

下图两个用户都设置了手动事物 实验证明 A 把数据删了 B还能查到 B也要进行commit 提交或者roll回滚才能看到修改后的数据!

image

实验2:

A事物还在执行 B事就对这行数据进行操作 B事物卡住在这里!

image

实验3:

A把sid=1的数据改成了2
然后b要把sid的数据改成5 结果失败了 原因是已经没有sid=1 这条数据了
早就被A修改成2了
如果B的条件是 把sid=2的数据修改成5 那就能操作成功了!

image

实验4:

A把查询出来的数据加上排他锁
B也对这条数据去加排他锁
然后卡住了
要等A执行commit提交 A的排他锁才能结束!

image

下图用工具测试:

排他锁 A用户已经把这个表用排他锁锁住了
B用户去修改数据 然后卡在这里
要等A用户执行Commit 提交 B用户才能执行

image

再看看下图 结果是10
因为A用户把sid改成10
B用户的条件是sid=1
没有此条数据 所以修改不上!

image

共享锁:

Lock in share mode

第一 共享锁不能与排他锁共存在!

第二 共享锁在自动事物的情况下不会发生冲突

第三 共享锁在手动事物的情况下会出现一系列问题!

第四 共享锁可以多个用户对同一条记录锁定!

实验1:

在手动事物的情况下 A先对这一行数据进行了排他锁 然后B用户又去对这行数据进行共享锁 死活不给B用户操作 要等A用户把这个事物处理完才能给B用户进行排他锁! 反之结果还是一样 排他锁和共享锁不能共存!

image

image

实验2:

在手动事物下 A和B 都对这一条数据加上共享锁了 然后A事务要修改 会处于等待状态 他在等B用户来操作 只要B一来操作 系统就会把B用户掐死掉 先来的成功执行 后来的直接被干掉

image

实验3:

A用户对sid=1记录共享锁锁定
B用户对Sid=2记录共享锁锁定
然后A用户去修改sid=2的记录 卡住在那里
等B来操作 B一来操作 B就完蛋了!
这个故事告诉我们 被干掉总是B用户!

image

Sqlyog实验

双方各锁了一条数据

image

A对B锁定的数据进行更改
A处于等待
B对A的数据进行改变
B用户的锁干掉了

image

最后两个人都把事物提交或者回滚
就能查询出真实数据了!

image

后执行的遭殃 直接被干掉了!

image

© 著作权归作者所有

共有 人打赏支持
上一篇: -mysql-锁2
下一篇: JDBC
凯哥学堂
粉丝 17
博文 316
码字总数 284948
作品 0
东城
程序员
私信 提问
MySQL数据库的锁机制

在并发访问情况下,很有可能出现不可重复读等等读现象。为了更好的应对高并发,封锁、时间戳、乐观并发控制(乐观锁)、悲观并发控制(悲观锁)都是并发控制采用的主要技术方式。 锁分类 ①、按操...

Javahih
01/02
0
0
MySQL中的行级锁,表级锁,页级锁

在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级...

Hosee
2016/06/01
469
0
MySQL中的共享锁与排他锁

在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念、...

steven
2016/09/23
32
0
MySQL锁机制漫谈(一)

前言 数据库锁定机制是数据库为了保证数据的一致性而使各种共享资源在并发访问时变的有序的一种规则。MySQL数据库的各种存储引擎使用了三种的锁定机制:行级锁定、页级锁定、表级锁定。 行级...

Justlearn
2017/11/16
0
0
MySQL数据库 锁机制简介

MySQL数据库 锁机制简介 数据库锁定机制简单来说就是数据库为了保证数据的一致性而使各种共享资源在被并发访问访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制...

LYQ1990
2016/04/29
60
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 主要特性

Java 有下面的一些主要特性。 面向对象 在 Java 中,所有的都是对象。正式因为 Java 基于对象模型,所以 Java 更加容易进行扩展。 Java语言提供类、接口和继承等面向对象的特性,为了简单起见...

honeymose
47分钟前
1
0
【NLP】【五】gensim之Word2Vec

【一】整体流程综述 gensim底层封装了Google的Word2Vec的c接口,借此实现了word2vec。使用gensim接口非常方便,整体流程如下: 1. 数据预处理(分词后的数据) 2. 数据读取 3.模型定义与训练...

muqiusangyang
47分钟前
1
0
Python爬虫之网络请求

urllib库中常用函数的使用 安装 urllib库是安装python时自带的一个库,不需要再另外安装; 使用 #!/usr/bin/python3# -*- coding:utf-8 -*-# @Time : 2018-11-10 21:25# @Author : M...

村雨1943
今天
4
0
Linux学习-1030(定时任务、任务管理、)

10.23 linux任务计划cron 10.24 chkconfig工具 10.25 systemd管理服务 10.26 unit介绍 10.27 target介绍 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/478722 2. xin......

wxy丶
今天
3
0
git push origin与git push -u origin master的区别

$ git push origin 上面命令表示,将当前分支推送到origin主机的对应分支。 如果当前分支只有一个追踪分支,那么主机名都可以省略。 $ git push 如果当前分支与多个主机存在追踪关系,那么这...

clin003
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部