mysql - 锁及事务的认识
mysql事务特性:
一致性
原子性
隔离性
持久性
//mysql 事务隔离级别
读未提交 读未提交的数据
读已提交 读已提交的数据
串行序列化 一个事务完成了再执行另一个事务
可重复读(数据库默认) 就算事务T1已经提交事务,但事务T2也不读取事务T1提交的数据
脏读: 读到了另一个事务未提交的数据
重复度:两次读取的数据不一致 ,一个读取的是事务未提交的数据 , 一次是读取事务已提交的数据
幻读: 当统计数据时 ,一个事务统计了另一个事务插入的数据的最新数据
读锁:
排它锁: select * from table where 条件 for update; 查询后其他事务不可读,不可写,当前事务提交后其他事务才可以进行
共享锁: select * from table where 条件 share lock in modal; 查询后其他事务可以读 , 不可写 ,当当前事务提交后 ,其他事务才可以修改数据
写锁:
update table set ... where 条件
delete from table where 条件
insert into table () values();
innodb
如果 查询条件有索引则添加行级锁 , 如果查询条件没有添加索引则添加表级锁
mysql 加锁方法;(大前提条件 :必须在事务中执行)
排它锁:(作用: 当对数据表添加排它锁时,各个事务之间对这个数据表的执行顺序就会形成一个队列 , 防止读到脏数据;)
1.显示加锁:
sql语句 :select * from table where key = ... for update;
注意事项 :查询条件如果是唯一键(或主键) 并走索引时则会添加行级锁 , 否则会对整个表加锁;
2.隐式加锁:
sql语句 :update table set ... where ...;
注意事项:当mysql执行更新语句时 只有当查询条件是唯一键(或主键)并走索引时,mysql 才会自动添加行级锁;
共享锁:(作用 : 当对数据表添加共享锁时 , 数据表的数据只能读取而不能修改和删除;)
sql语句 :select * from table where .... lock in share mode;
注意事项 :查询条件如果是走索引时则会添加行级锁 , 否则会对整个表加锁;
mysql - 锁及事务的认识的更多相关文章
- 面试必问的MySQL锁与事务隔离级别
之前多篇文章从mysql的底层结构分析.sql语句的分析器以及sql从优化底层分析, 还有工作中常用的sql优化小知识点.面试各大互联网公司必问的mysql锁和事务隔离级别,这篇文章给你打神助攻,一飞 ...
- [转帖]2019-03-26 发布 深入理解 MySQL ——锁、事务与并发控制
深入理解 MySQL ——锁.事务与并发控制 https://segmentfault.com/a/1190000018658828 太长了 没看完.. 数据库 并发 mysql 639 次阅读 ...
- [转帖]深入理解 MySQL—锁、事务与并发控制
深入理解 MySQL—锁.事务与并发控制 http://www.itpub.net/2019/04/28/1723/ 跟oracle也类似 其实所有的数据库都有相同的机制.. 学习了机制才能够更好的工 ...
- 转载:把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架构,微服务,以及相关的项目管理等等,这样你的核心竞争力才会越来越高
https://developer.51cto.com/art/202001/608984.htm 把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架 ...
- (三)MySQL锁机制 + 事务
转: (三)MySQL锁机制 + 事务 表锁(偏读) 偏向MyISAM存储引擎.开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低. 查看当前数据库中表的上锁情况,0表示未上锁. sh ...
- MySQL锁和事务(一):InnoDB锁(MySQL 官方文档粗翻)
// 写在前面,实际上,数据库加锁的类型和范围受到多种因素的影响,例如数据库隔离等级,SQL语句,是否使用主键.索引等等.可以查看博文: http://www.cnblogs.com/zhaoyl/p ...
- 深入理解 MySQL ——锁、事务与并发控制
本文首发于vivo互联网技术微信公众号 mp.weixin.qq.com/s/JFSDqI5ya… 作者:张硕 本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结, ...
- mysql锁,事务
什么是事务 事务定义了一个服务操作序列,由服务器保证这些操作序列在多个客户并发访问和服务器出现故障情况下的原子性事务的属性 A --redo&undo C --undo I --lock D ...
- 《高性能MySQL》读书笔记之 MySQL锁、事务、多版本并发控制的基础知识
1.2 并发控制 1.2.1 读写锁 在处理并发读或写时,通过实现一个由两种类型的锁组成的锁系统来解决问题.这两种类型的锁通常被称为 共享锁(shared lock) 和 排它锁(exclusive ...
- MySQL学习(三)MySQL锁与事务
本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议. 一.MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支 ...
随机推荐
- 以太坊智能合约开发 Solidity学习
1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...
- [Spring cloud 一步步实现广告系统] 6. Service实现&Zuul配置&Test
DAO层设计实现 这里我们使用Spring DATA JPA来实现数据库操作,当然大家也可以使用Mybatis,都是一样的,我们依然以用户表操作为例: /** * AdUserRepository f ...
- js 轮播图效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 【转载】Android 中 View 绘制流程分析
创建Window 在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建Window,将一个View add到WindowManager时,Window ...
- could not launch process: debugserver or lldb-server not found: install XCode's command line tools or lldb-server
0x00 事件 VS 调试 go 的时候,发生了这个错误,导致无法调试: could not launch process: debugserver or lldb-server not found: ...
- Redis之高可用、集群、云平台搭建(非原创)
文章大纲 一.基础知识学习二.Redis常见的几种架构及优缺点总结三.Redis之Redis Sentinel(哨兵)实战四.Redis之Redis Cluster(分布式集群)实战五.Java之Je ...
- SQL Server要拷贝默认目录下的使用数据库需要停止的服务
- Linux内核源码分析--内核启动之zImage自解压过程【转】
转自:https://www.cnblogs.com/pengdonglin137/p/3838245.html 阅读目录(Content) zImage来历 piggy.gz压缩文件的特点 vmli ...
- 2-3 远程管理命令-SSH工作方式简介
03.远程登录和复制文件 序号 命令 对应英文 作用 01 ssh 用户名@ip secure shell 关机/重启 02 scp 用户名@ip:用户名或路径 用户名@ip:文件名或路径 secur ...
- go语言设计模式之observer
observer.go package observer import ( "fmt" ) type Observer interface { Notify(string) } t ...