Linux服务器开发【有用知识】—MySQL事务原理分析
前言
今天的目标是学习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事务原理分析相关推荐
- MySQL事务原理分析(ACID特性、隔离级别、锁、MVCC、并发读异常、并发死锁以及如何避免死锁)
MySQL事务原理分析(ACID特性.隔离级别.锁.MVCC.并发读异常.并发死锁以及如何避免死锁) 一.事务 目的 组成 特征 事务空间语句 二.ACID特性 原子性(A) 隔离性(I) 持久性(d ...
- 关于2022年12代C/C++Linux服务器开发高级架构师课程体系分析
对于零声教育的C/C++Linux服务器高级架构师的课程到2022目前已经迭代到12代了,像之前小编也总结过,但是课程每期都有做一定的更新,也是为了更好的完善课程跟上目前互联网大厂的岗位技术需求,之前 ...
- [C/C++后端开发学习]18 Mysql事务原理
文章目录 1 事务基本概念 ACID特性 原子性(A) 一致性(C) 隔离性(I) 持久性(D) 事务并发异常 1)脏读 2)不可重复读 3)幻读 隔离级别 1)READ UNCOMMITTED 2) ...
- 数据库之mysql事务原理分析与锁机制 详解
1.事务 1.2.目的 事务将数据库从一种一致性状态转换为另一种一致性状态: 1.3.组成 事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成: 其中单条语句会默认自动添加事务控制 ...
- MYSQL事务原理分析
目录 事务是什么 ACID特性 原子性(A) 隔离性(I) 持久性(D) 一致性(C) 隔离级别 简介 有些什么 READ UNCOMMITTED(读未提交) READ COMMITTED(读已提交) ...
- 【零声教育】C/C++Linux服务器开发/高级架构师 课程
随着去年年底的疫情,很多线下的学习都变成了网课的形式,各种付费学习也萌生出来,很多决定要报名付费网课例如零声学院C/C++linux后台服务器高级架构师的程序员,报名之前总会问我这样一个问题,除了视频 ...
- epoll原理剖析以及reactor模型应用丨网络编程|网络IO|select|poll|socket|reactor多核实现丨c/c++linux服务器开发
epoll原理剖析以及reactor模型应用 视频讲解如下,点击观看: epoll原理剖析以及reactor模型应用丨网络编程|网络IO|select|poll|socket|reactor多核实现丨 ...
- 海量数据去重,hash、布隆过滤器以及hyperloglog丨c/c++linux服务器开发丨后端开发丨Linux后台开发丨底层原理
海量数据去重,hash.布隆过滤器以及hyperloglog 视频讲解如下,点击观看: 海量数据去重,hash.布隆过滤器以及hyperloglog丨c/c++linux服务器开发丨后端开发丨Linu ...
- 如何快速实现分布式定时器丨红黑树|跳表|堆|时间轮|缓存|锁|事务|架构|高性能|消息队列丨C/C++Linux服务器开发丨C++后端开发
如何快速实现分布式定时器 视频讲解如下,点击观看: 如何快速实现分布式定时器丨红黑树|跳表|堆|时间轮|缓存|锁|事务|架构|高性能|消息队列丨C/C++Linux服务器开发丨C++后端开发丨中间件 ...
最新文章
- 解决ERROR 2003 (HY000): Can't connect to MySQL server on
- 从零开始学android编程_android初学者的入门秘籍
- 程序猿不能错过的十部电影
- springJDBC一对多关系,以及Java递归,jsp递归的实现
- 检测系列--YOLO系列
- 5.8Reformer 意境级理解
- JavaScript之String总汇
- Spring中Bean的作用域/状态/生命周期
- MATLAB 2018a 安装
- 单片机p2.0引脚c语言,单片机C语言教程二
- Kubernetes集群服务发现之Service资源ClusterIP/NodePort/HeadLiness/ExternallName类型详解(二十八)
- 2022年湖南省中医执业医师考试第三单元医学针灸学模拟题
- 中信建投计算机行业周报
- 小汽车的位置(二维坐标运算)
- win10硬盘锁怎么解除_如何取消硬盘锁?
- Python+PyCharm+PyTorch+Cuda/GPU 安装步骤
- 疫情下的长租公寓:蛋壳们的“生死考”
- 南邮 OJ 2070 马尔扎哈的疑惑
- CocosCreator屏幕适配小结
- SQLServer数据库基本操作