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 - 锁及事务的认识的更多相关文章

  1. 面试必问的MySQL锁与事务隔离级别

    之前多篇文章从mysql的底层结构分析.sql语句的分析器以及sql从优化底层分析, 还有工作中常用的sql优化小知识点.面试各大互联网公司必问的mysql锁和事务隔离级别,这篇文章给你打神助攻,一飞 ...

  2. [转帖]2019-03-26 发布 深入理解 MySQL ——锁、事务与并发控制

    深入理解 MySQL ——锁.事务与并发控制 https://segmentfault.com/a/1190000018658828 太长了 没看完.. 数据库 并发  mysql 639 次阅读   ...

  3. [转帖]深入理解 MySQL—锁、事务与并发控制

    深入理解 MySQL—锁.事务与并发控制 http://www.itpub.net/2019/04/28/1723/ 跟oracle也类似 其实所有的数据库都有相同的机制.. 学习了机制才能够更好的工 ...

  4. 转载:把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架构,微服务,以及相关的项目管理等等,这样你的核心竞争力才会越来越高

    https://developer.51cto.com/art/202001/608984.htm 把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架 ...

  5. (三)MySQL锁机制 + 事务

    转: (三)MySQL锁机制 + 事务 表锁(偏读) 偏向MyISAM存储引擎.开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低. 查看当前数据库中表的上锁情况,0表示未上锁. sh ...

  6. MySQL锁和事务(一):InnoDB锁(MySQL 官方文档粗翻)

    // 写在前面,实际上,数据库加锁的类型和范围受到多种因素的影响,例如数据库隔离等级,SQL语句,是否使用主键.索引等等.可以查看博文: http://www.cnblogs.com/zhaoyl/p ...

  7. 深入理解 MySQL ——锁、事务与并发控制

    本文首发于vivo互联网技术微信公众号 mp.weixin.qq.com/s/JFSDqI5ya… 作者:张硕 本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结, ...

  8. mysql锁,事务

    什么是事务 事务定义了一个服务操作序列,由服务器保证这些操作序列在多个客户并发访问和服务器出现故障情况下的原子性事务的属性 A --redo&undo C --undo I --lock D ...

  9. 《高性能MySQL》读书笔记之 MySQL锁、事务、多版本并发控制的基础知识

    1.2 并发控制 1.2.1 读写锁 在处理并发读或写时,通过实现一个由两种类型的锁组成的锁系统来解决问题.这两种类型的锁通常被称为 共享锁(shared lock) 和 排它锁(exclusive ...

  10. MySQL学习(三)MySQL锁与事务

    本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议. 一.MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支 ...

随机推荐

  1. 【algo&ds】6.图及其存储结构、遍历

    1.什么是图 图表示"多对多"的关系 包含 一组顶点:通常用 V(Vertex)表示顶点集合 一组边:通常用 E(Edge)表示边的集合 边是顶点对:(v,w)∈ E,其中 v,w ...

  2. Python 从入门到进阶之路(三)

    在之前的文章我们介绍了一下 Python 中 if while for 的使用,本章我们来看一下 Python 中的变量类型. 在 Python 定义变量时的规则是 变量名 = 变量 ,Python ...

  3. Java 添加Word目录的2种方法

    目录是一种能够快速.有效地帮助读者了解文档或书籍主要内容的方式.在Word中,插入目录首先需要设置相应段落的大纲级别,根据大纲级别来生成目录表.本文中生成目录分2种情况来进行: 1.文档没有设置大纲级 ...

  4. ADO.NET ORM数据库增删改查封装(工具一)

    约束 public abstract class BaseModel { public int Id { get; set; } } 连接字符串 public static readonly stri ...

  5. 在Windows下配置多个git账号

    1.生成并部署SSH key 安装好Git客户端后,打开git bash,输入以下命令生成user1的SSH Key: ssh-keygen -t rsa -C "user1@email.c ...

  6. 这十个Python常用库,学习Python的你必须要知道!

    想知道Python取得如此巨大成功的原因吗?只要看看Python提供的大量库就知道了 包括原生库和第三方库.不过,有这么多Python库,有些库得不到应有的关注也就不足为奇了.此外,只在一个领域里的工 ...

  7. Go-内置time包

    一.导入包 import "time" 二.转换成Time对象 获取当前时间:time. Now () 自定义时间:time. Date(year int, month Month ...

  8. 剑指offer 27:二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 解题思路 采用中序遍历遍历二叉树,利用二叉排序树的特性,顺次连接节点,形成 ...

  9. Callable实现JAVA多线程

    最近项目用到一个功能需要实现多线程分发任务且需要任务的返回值,之前一直都是实现Runnable接口,但里面的run方法是返回void的.后来在网上查了下JAVA1.5开始就有了Callable. 下面 ...

  10. HDFS与YARN HA部署配置文件

    core-site.xml <!--Yarn 需要使用 fs.defaultFS 指定NameNode URI --> <property> <name>fs.de ...