前言

今天的目标是学习MySQL事务原理分析,但是却似乎总是非常不顺利,概念和实操实在多到令人发指,故干脆轻松学完一节课,等到时机到了再重新刷一遍吧!

一、事务是什么?

将数据库从一致性状态转化成另一种一致性状态。

单条语句是隐含得事务,多条语句需要手动开启事务。

二、ACID特性是什么?

原子性依靠undolog(共享表空间)实现,记录进行操作,然后进行反向操作。

一致性最难理解,换句话说在事务执行前后,数据库完整性约束不能被破坏。

三、隔离级别

mvcc提供了一种快照读的方式提升读的并发性能,通过读历史版本的方式。

个人理解:各个级别其实就像是一种胆大策略,没有对错之分。只要不担心错读数据,就可以选用读不加锁而写加排他锁,依次类推。串行化读取虽然保险,但是效率也是最低,也许是我天生性格的原因,似乎对这种方式情有独钟。人生路慢慢,欲速则不达也。

  • 快照读就是不加任何参数。

  • 如果是当前读,需要加上lock in share mode 或 for update 加读写锁。

  • 查看锁信息select * from information_schema.innodb_locks;

myisam不会发生并发读异常、并发死锁,因为是表锁。所以说当出现问题,试着换一下引擎也许是一个很好的选择。

​删除、更改需要增加排他锁,而增加插入需要将插入位置加入位置意向锁,然后间接的加入增加排他锁。三个事项加在一起是完整的写操作。

​表级别的对写锁才会和意向锁冲突,行级别咱就都不考虑啦。

C++后台开发系统学习地址:C/C++Linux服务器开发高级架构师/C++后台开发架构师​

以下学习资料,C++后台开发面试题,教学视频,C++后台开发学习路线图,免费分享有需要的可以自行添加:学习资料群720209036 自取

​Record Lock

记录单个行上的锁。

Gap Lock

间隙锁,锁定一个范围。只有在可重复读上面才会有间隙锁。

插入意向锁容易造成死锁,如果没有这个锁要一个一个的插入,有了它是为了提升效率。

​死锁80%都是上图第二行造成的!

小计

更改mysql5.7的字符集

参考资料

​推荐一个零声教育C/C++后台开发的免费公开课程,个人觉得老师讲得不错,分享给大家:C/C++后台开发高级架构师,内容包括Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

Linux服务器开发【有用知识】—MySQL事务原理分析相关推荐

  1. MySQL事务原理分析(ACID特性、隔离级别、锁、MVCC、并发读异常、并发死锁以及如何避免死锁)

    MySQL事务原理分析(ACID特性.隔离级别.锁.MVCC.并发读异常.并发死锁以及如何避免死锁) 一.事务 目的 组成 特征 事务空间语句 二.ACID特性 原子性(A) 隔离性(I) 持久性(d ...

  2. 关于2022年12代C/C++Linux服务器开发高级架构师课程体系分析

    对于零声教育的C/C++Linux服务器高级架构师的课程到2022目前已经迭代到12代了,像之前小编也总结过,但是课程每期都有做一定的更新,也是为了更好的完善课程跟上目前互联网大厂的岗位技术需求,之前 ...

  3. [C/C++后端开发学习]18 Mysql事务原理

    文章目录 1 事务基本概念 ACID特性 原子性(A) 一致性(C) 隔离性(I) 持久性(D) 事务并发异常 1)脏读 2)不可重复读 3)幻读 隔离级别 1)READ UNCOMMITTED 2) ...

  4. 数据库之mysql事务原理分析与锁机制 详解

    1.事务 1.2.目的 事务将数据库从一种一致性状态转换为另一种一致性状态: 1.3.组成 事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成: 其中单条语句会默认自动添加事务控制 ...

  5. MYSQL事务原理分析

    目录 事务是什么 ACID特性 原子性(A) 隔离性(I) 持久性(D) 一致性(C) 隔离级别 简介 有些什么 READ UNCOMMITTED(读未提交) READ COMMITTED(读已提交) ...

  6. 【零声教育】C/C++Linux服务器开发/高级架构师 课程

    随着去年年底的疫情,很多线下的学习都变成了网课的形式,各种付费学习也萌生出来,很多决定要报名付费网课例如零声学院C/C++linux后台服务器高级架构师的程序员,报名之前总会问我这样一个问题,除了视频 ...

  7. epoll原理剖析以及reactor模型应用丨网络编程|网络IO|select|poll|socket|reactor多核实现丨c/c++linux服务器开发

    epoll原理剖析以及reactor模型应用 视频讲解如下,点击观看: epoll原理剖析以及reactor模型应用丨网络编程|网络IO|select|poll|socket|reactor多核实现丨 ...

  8. 海量数据去重,hash、布隆过滤器以及hyperloglog丨c/c++linux服务器开发丨后端开发丨Linux后台开发丨底层原理

    海量数据去重,hash.布隆过滤器以及hyperloglog 视频讲解如下,点击观看: 海量数据去重,hash.布隆过滤器以及hyperloglog丨c/c++linux服务器开发丨后端开发丨Linu ...

  9. 如何快速实现分布式定时器丨红黑树|跳表|堆|时间轮|缓存|锁|事务|架构|高性能|消息队列丨C/C++Linux服务器开发丨C++后端开发

    如何快速实现分布式定时器 视频讲解如下,点击观看: 如何快速实现分布式定时器丨红黑树|跳表|堆|时间轮|缓存|锁|事务|架构|高性能|消息队列丨C/C++Linux服务器开发丨C++后端开发丨中间件 ...

最新文章

  1. 解决ERROR 2003 (HY000): Can't connect to MySQL server on
  2. 从零开始学android编程_android初学者的入门秘籍
  3. 程序猿不能错过的十部电影
  4. springJDBC一对多关系,以及Java递归,jsp递归的实现
  5. 检测系列--YOLO系列
  6. 5.8Reformer 意境级理解
  7. JavaScript之String总汇
  8. Spring中Bean的作用域/状态/生命周期
  9. MATLAB 2018a 安装
  10. 单片机p2.0引脚c语言,单片机C语言教程二
  11. Kubernetes集群服务发现之Service资源ClusterIP/NodePort/HeadLiness/ExternallName类型详解(二十八)
  12. 2022年湖南省中医执业医师考试第三单元医学针灸学模拟题
  13. 中信建投计算机行业周报
  14. 小汽车的位置(二维坐标运算)
  15. win10硬盘锁怎么解除_如何取消硬盘锁?
  16. Python+PyCharm+PyTorch+Cuda/GPU 安装步骤
  17. 疫情下的长租公寓:蛋壳们的“生死考”
  18. 南邮 OJ 2070 马尔扎哈的疑惑
  19. CocosCreator屏幕适配小结
  20. SQLServer数据库基本操作

热门文章

  1. keil删除工程_管理keil工程目录的详细步骤
  2. 服务器安全狗搭建过程
  3. R语言网络图可视化——igraph, forceatlas2的使用
  4. keyshot 的纹理贴图之 移动纹理 按钮灰色
  5. Jmeter之JAVA Request的应用
  6. 会ps会php,学会ps然后可以做什么
  7. 新手学习次世代,需要了解哪些
  8. pt-quey-digest慢查询查询工具
  9. 【SemiDrive源码分析】【驱动BringUp】13 - GPIO 配置方法
  10. IO-字符流-FileReader