mysql 悲观锁和乐观锁(二)
mysql 乐观 悲观
2023-09-14 08:59:24 时间
前言
简单介绍一下,在mysql 优化系列中会重新介绍,仅仅是留个印象。
悲观锁和乐观锁其实都是概念性问题。
正文
悲观锁:
悲观锁,正如其名,具有强烈的独占和排他特性。
它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。
悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。
这个其实就是数据库帮助你加锁,认为每次获取数据都会被其他线程修改,每次来操作数据的时候都会加锁,这就可以就看上一章的读锁和写锁了。
乐观锁:
认为每次读取后,数据在一般不会发生冲突,在读取操作的时候不会去添加锁。
首先是什么问题产生了这个悲观锁和乐观锁的问题呢?
举个例子,这其实就是生活中一个很简单的例子。
比如有一辆公共汽车,你上车后,然后你要下车,这时候如何保证这个位置没有其他人坐呢?
最简单的方式就是放个书包,告诉我们这个位置有人了,相当于加锁。
但是这样性能是下降的,因为你得放书包啊,到时候你还得拿走。
那么这时候有人就认为这辆车没啥人,我就不去干书包这件事。
那么问题就来了,当我上车的时候如何万一有人怎么办?
这就是乐观锁得了方便,但是也是要解决的问题。
回到数据库乐观锁问题上,乐观锁的一种解决方法就是加一个版本号。
就是读取的时候,把版本号读取出来,修改的使用加上版本号作为条件。
如果版本号没有修改,那么就修改,如果版本号修改了,那么就另外加入队列中或者立即重新执行。
相关文章
- Mysql授权允许远程访问解决Navicat for MySQL连接mysql提示客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端
- 【Mysql 学习】mysql 字符集
- 【Mysql 学习】mysqld_safe:MySQL服务器启动脚本
- mysql-介绍、MySQL部署、数据类型、存储引擎
- Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)
- 【MySql】mysql 的权限体系介绍
- linux - mysql - 卸载:RPM包安装方式的MySQL卸载
- MYSQL中的乐观锁实现(MVCC)简析
- 【整理】源码安装 mysql-5.6.10
- fpm制做mysql-5.6.33 rpm包
- mysql 字符串截取
- MySql中json类型的使用___mybatis存取mysql中的json
- Linux下MySQL源码编译安装(eg:mysql-5.6.27.tar.gz )
- Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe)
- Python:mysql-replication监控MySQL的binlog变动
- mysql 数据库的悲观锁和乐观锁
- 开发使用mysql的一些必备知识点整理(四)与python交互
- 第57讲:MySQL存储过程的概念以及基本使用
- 安全测试===Mysql 注入技巧学习 MySQL注入技巧(1)
- MySQL缺失mysql_config文件
- MySQL-mysql 8.0.11安装教程 windows
- MySql悲观锁(行锁)和乐观锁
- Mysql报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- Mysql之mysql工具
- MySQL还能这样玩---第二篇之不为人知的分区
- 使用Helm部署阿里云Chart仓库的MySQL服务 (三)