文档章节

凯哥学堂
 凯哥学堂
发布于 2017/09/02 14:35
字数 874
阅读 5
收藏 0

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

表级锁:

表级锁分分两种
一种只读
一种是只写
解锁语句是 unlocak tables;
只要解锁
这个用户锁定的所有表都会被解除

只读锁:

Lock tables 表名 read;
如果你锁定的 是只读模式的话
那所有的用户都是只读模式
谁都不能够对这张表修改了 其他用户要修改会卡住
自己修改会报错!
解除锁或这你这个用户直接退出
退出锁就默认解除了!

image

image

或者锁表的用户执行 unlock tables; 也可以的!

只写锁:

Lock tables 表名 write;
入下图实验
A用户设置只写模式
自己可以读也可以写
但是别的用户不能写也不能读

image

image

解锁两种办法
自己用户直接退出或者执行 unlocak tables;

悲观锁:

悲观锁就是程序自带的锁 比如update delete insert 这些 执行的时候会默认加个锁 它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。 说白了他就是排他锁!

乐观锁:

乐观锁 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。那么我们如何实现乐观锁呢,一般来说有以下2种方式:

image

1:使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。什么是数据版本? 就是给数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加一。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与第一次【学Java,到凯哥学堂kaige123.com】取出来的version值进行比对,如果数据库表当前版本号与第一次取出来的version值相等,想等就让他更新修改,否则认为是过期数据。

2:乐观锁定的第二种实现方式和第一种差不多,同样是在需要乐观锁控制的table中增加一个字段,名称无所谓,字段类型使用时间戳(timestamp), 和上面的version类似,也是在更新提交的时候检查当前数据库中数据的时间戳和自己更新前取到的时间戳进行对比,如果一致则OK,否则就是版本冲突。

image

image

image

© 著作权归作者所有

共有 人打赏支持
上一篇: 数据库连接池
下一篇: -mysql-锁2
凯哥学堂
粉丝 17
博文 316
码字总数 284948
作品 0
东城
程序员
私信 提问
《硬道理》系列~第一回 程序中的“锁”

共享锁  由非更新(读取)操作创建的锁。其他用户可以并发读取数据,但任何事务都不能获取数据上的排它锁,直到已释放所有共享锁。 共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事...

mcy247
2017/12/04
0
0
MySQL_S锁_X锁_read lock_write lock

MySQLS锁X锁read lockwrite lock 共享锁和排它锁 MySQL的锁系统:shared lock和exclusive lock(共享锁和排他锁,也叫读锁和写锁,即read lock和write lock) 读锁是共享的,或者说是相互不阻...

秋风醉了
2014/04/02
0
0
MySQL中的共享锁与排他锁

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

柠檬晓蒙
2016/08/18
0
0
mysql 开发进阶篇系列 7 锁问题

1 .获取innodb行锁争用情况   1.1 通过检查innodbrowlock状态变量来分析系统上的行锁的争夺情况 SHOW STATUS LIKE 'innodbrowlock%'     通过innodbrowlockwaits 和 innodbrowlockavg...

花阴偷移
07/24
0
0
【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock

此篇博客所有源码均来自JDK 1.8 重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读...

chenssy
2017/03/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题

https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages For reference, I am attaching my location block for catching files with the .php extension: location ~......

Yao--靠自己
14分钟前
1
0
mac 没声音

somehow不时就会出现这种情况。之前都得重启。 其实可以直接在terminal里打以下命令: sudo kextunload /System/Library/Extensions/AppleHDA.kext sudo kextload /System/Library/Extension...

dubox
30分钟前
1
0
看完让你彻底搞懂Websocket原理

作者:Ovear 链接:https://www.zhihu.com/question/20215561/answer/40316953 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 额。。最高票答案没答到点...

时刻在奔跑
45分钟前
2
0
Spring Cloud Stream消费失败后的处理策略(一):自动重试

之前写了几篇关于Spring Cloud Stream使用中的常见问题,比如: 如何处理消息重复消费 如何消费自己生产的消息 下面几天就集中来详细聊聊,当消息消费失败之后该如何处理的几种方式。不过不论...

程序猿DD
47分钟前
0
0
《Maven官方文档》-Maven依赖机制简介

《Maven官方文档》-Maven依赖机制简介 原文地址 译者:Tyrian 依赖机制是Maven最为用户熟知的特性之一,同时也是Maven所擅长的领域之一。单个项目的依赖管理并不难, 但是当你面对包含数百个...

tantexian
55分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部