文档章节

凯哥学堂
 凯哥学堂
发布于 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

© 著作权归作者所有

共有 人打赏支持
凯哥学堂
粉丝 17
博文 314
码字总数 280608
作品 0
东城
程序员
MySQL数据库的锁机制

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

Javahih
01/02
0
0
java锁的分类大全

在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章来汇总下各种锁的分类。 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁...

激情的狼王丶21
2017/12/21
0
0
MySQL中的共享锁与排他锁

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

steven
2016/09/23
32
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

没有更多内容

加载失败,请刷新页面

加载更多

Cointext在阿根廷和土耳其推出比特币现金短信钱包

Cointext于10月15日开始在土耳其和阿根廷提供新的基于SMS的比特币现金钱包服务,这两个国家的加密货币使用量急剧上升,以应对严峻的经济形势。 移动钱包 通过短信处理BCH交易 “比特币是更好...

lpy411
5分钟前
0
0
大数据早课-0918

9.18日早课 1.全局搜索含有abc的文件名称或文件夹的命令 2.当前目录一般用什么表示 3.切换到上一次和上一层命令分别是什么 4.pwd是查看当前目录的什么 5.隐藏文件或文件夹的标识是什么? 怎样...

hnairdb
5分钟前
0
0
mybatis学习笔记一

一、mybaits需要的项目依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artif......

wuyiyi
6分钟前
0
0
CentOS6 安装 GraphicsMagick

1.安装相关依赖: yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel 2.下载并解压到目录/usr/local/ wget ft......

凯文加内特
8分钟前
0
0
RabbitMq集群使用Nginx做负载均衡

1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版本后 新增了stream 模块用于一般的 TCP 代理和负载均衡,之前版本不支持 修改Nginx配置文件ngi...

zhaochaochao
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部